aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common
diff options
context:
space:
mode:
authorLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
committerLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
commit42aec6dac53dffa6afe072560a7e1d4986112538 (patch)
tree0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.Client/Common
parentc9d58eeac7c72f0b3038e084667b4d89a6249fce (diff)
parentef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff)
Merge branch 'main' into pr/win64-world-saves
# Conflicts: # Minecraft.Client/MinecraftServer.cpp # README.md
Diffstat (limited to 'Minecraft.Client/Common')
-rw-r--r--Minecraft.Client/Common/App_Defines.h28
-rw-r--r--Minecraft.Client/Common/App_enums.h70
-rw-r--r--Minecraft.Client/Common/App_structs.h4
-rw-r--r--Minecraft.Client/Common/Audio/Consoles_SoundEngine.cpp39
-rw-r--r--Minecraft.Client/Common/Audio/Consoles_SoundEngine.h19
-rw-r--r--Minecraft.Client/Common/Audio/SoundEngine.cpp48
-rw-r--r--Minecraft.Client/Common/Audio/SoundNames.cpp72
-rw-r--r--Minecraft.Client/Common/BuildVer.h8
-rw-r--r--Minecraft.Client/Common/Colours/ColourTable.cpp15
-rw-r--r--Minecraft.Client/Common/ConsoleGameMode.cpp4
-rw-r--r--Minecraft.Client/Common/ConsoleGameMode.h4
-rw-r--r--Minecraft.Client/Common/Console_Debug_enum.h6
-rw-r--r--Minecraft.Client/Common/Consoles_App.cpp1372
-rw-r--r--Minecraft.Client/Common/Consoles_App.h118
-rw-r--r--Minecraft.Client/Common/DLC/DLCManager.cpp26
-rw-r--r--Minecraft.Client/Common/DLC/DLCManager.h2
-rw-r--r--Minecraft.Client/Common/DLC/DLCPack.cpp22
-rw-r--r--Minecraft.Client/Common/DLC/DLCPack.h2
-rw-r--r--Minecraft.Client/Common/DLC/DLCTextureFile.cpp1
-rw-r--r--Minecraft.Client/Common/GameRules/ConsoleGenerateStructure.h4
-rw-r--r--Minecraft.Client/Common/GameRules/ConsoleSchematicFile.cpp16
-rw-r--r--Minecraft.Client/Common/GameRules/GameRuleManager.cpp50
-rw-r--r--Minecraft.Client/Common/GameRules/LevelGenerationOptions.cpp241
-rw-r--r--Minecraft.Client/Common/GameRules/LevelGenerationOptions.h12
-rw-r--r--Minecraft.Client/Common/GameRules/StartFeature.cpp14
-rw-r--r--Minecraft.Client/Common/GameRules/StartFeature.h4
-rw-r--r--Minecraft.Client/Common/GameRules/XboxStructureActionPlaceContainer.cpp6
-rw-r--r--Minecraft.Client/Common/GameRules/XboxStructureActionPlaceSpawner.cpp4
-rw-r--r--Minecraft.Client/Common/Leaderboards/LeaderboardInterface.cpp88
-rw-r--r--Minecraft.Client/Common/Leaderboards/LeaderboardInterface.h35
-rw-r--r--Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.cpp1131
-rw-r--r--Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.h133
-rw-r--r--Minecraft.Client/Common/Leaderboards/base64.cpp131
-rw-r--r--Minecraft.Client/Common/Leaderboards/base64.h7
-rw-r--r--Minecraft.Client/Common/Media/BeaconMenu1080.swfbin0 -> 18172 bytes
-rw-r--r--Minecraft.Client/Common/Media/BeaconMenu480.swfbin0 -> 18158 bytes
-rw-r--r--Minecraft.Client/Common/Media/BeaconMenu720.swfbin0 -> 18157 bytes
-rw-r--r--Minecraft.Client/Common/Media/BeaconMenuSplit1080.swfbin0 -> 18124 bytes
-rw-r--r--Minecraft.Client/Common/Media/BeaconMenuSplit720.swfbin0 -> 18180 bytes
-rw-r--r--Minecraft.Client/Common/Media/BeaconMenuVita.swfbin0 -> 18155 bytes
-rw-r--r--Minecraft.Client/Common/Media/Controls1080.swfbin17511 -> 18094 bytes
-rw-r--r--Minecraft.Client/Common/Media/Crafting2x2Menu1080.swfbin18508 -> 19943 bytes
-rw-r--r--Minecraft.Client/Common/Media/Crafting2x2MenuVita.swfbin19461 -> 19522 bytes
-rw-r--r--Minecraft.Client/Common/Media/Crafting3x3MenuSplit1080.swfbin18310 -> 19326 bytes
-rw-r--r--Minecraft.Client/Common/Media/CreateWorldMenu1080.swfbin22989 -> 23717 bytes
-rw-r--r--Minecraft.Client/Common/Media/CreateWorldMenu480.swfbin19894 -> 23724 bytes
-rw-r--r--Minecraft.Client/Common/Media/CreateWorldMenu720.swfbin20545 -> 23807 bytes
-rw-r--r--Minecraft.Client/Common/Media/CreateWorldMenuVita.swfbin22081 -> 23720 bytes
-rw-r--r--Minecraft.Client/Common/Media/CreativeMenuVita.swfbin18748 -> 19302 bytes
-rw-r--r--Minecraft.Client/Common/Media/FireworksMenu1080.swfbin0 -> 17487 bytes
-rw-r--r--Minecraft.Client/Common/Media/FireworksMenu480.swfbin0 -> 17483 bytes
-rw-r--r--Minecraft.Client/Common/Media/FireworksMenu720.swfbin0 -> 17482 bytes
-rw-r--r--Minecraft.Client/Common/Media/FireworksMenuSplit1080.swfbin0 -> 17500 bytes
-rw-r--r--Minecraft.Client/Common/Media/FireworksMenuSplit720.swfbin0 -> 17474 bytes
-rw-r--r--Minecraft.Client/Common/Media/FireworksMenuVita.swfbin0 -> 17479 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_1.pngbin0 -> 326 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_2.pngbin0 -> 364 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_3.pngbin0 -> 379 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_4.pngbin0 -> 331 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_Button_Cross.pngbin0 -> 305 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_Button_Disabled.pngbin0 -> 138 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_Button_Hover.pngbin0 -> 142 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_Button_Normal.pngbin0 -> 137 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_Button_Pressed.pngbin0 -> 139 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Beacon_Button_Tick.pngbin0 -> 241 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Absorb.pngbin0 -> 193 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither.pngbin0 -> 248 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither_Flash.pngbin0 -> 197 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Absorb.pngbin0 -> 177 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither.pngbin0 -> 216 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither_Flash.pngbin0 -> 194 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full.pngbin0 -> 224 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full_Flash.pngbin0 -> 230 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half.pngbin0 -> 204 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half_Flash.pngbin0 -> 202 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_empty.pngbin0 -> 339 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_full.pngbin0 -> 1799 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Horse_Armor_Slot.pngbin0 -> 198 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/Horse_Saddle_Slot.pngbin0 -> 219 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon.pngbin0 -> 17277 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon_Small.pngbin0 -> 11848 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks.pngbin0 -> 19522 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks_Small.pngbin0 -> 11541 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper.pngbin0 -> 15145 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper_Small.pngbin0 -> 9222 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses.pngbin0 -> 138491 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses_Small.pngbin0 -> 54859 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn.pngbin0 -> 678 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn_Small.pngbin0 -> 367 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff.pngbin0 -> 678 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff_Small.pngbin0 -> 349 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn.pngbin0 -> 675 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn_Small.pngbin0 -> 367 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_HealthBoost.pngbin0 -> 418 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_Wither.pngbin0 -> 771 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/TutorialExitScreenshot.pngbin75532 -> 60176 bytes
-rw-r--r--Minecraft.Client/Common/Media/Graphics/X360ControllerIcons/ButtonRS_TT.pngbin0 -> 1355 bytes
-rw-r--r--Minecraft.Client/Common/Media/HTMLColours.colbin838 -> 838 bytes
-rw-r--r--Minecraft.Client/Common/Media/HTMLColours.xml4
-rw-r--r--Minecraft.Client/Common/Media/HUD1080.swfbin10512 -> 11926 bytes
-rw-r--r--Minecraft.Client/Common/Media/HUD480.swfbin10508 -> 11923 bytes
-rw-r--r--Minecraft.Client/Common/Media/HUD720.swfbin10507 -> 11925 bytes
-rw-r--r--Minecraft.Client/Common/Media/HUDSplit1080.swfbin11055 -> 12006 bytes
-rw-r--r--Minecraft.Client/Common/Media/HUDSplit720.swfbin11018 -> 11976 bytes
-rw-r--r--Minecraft.Client/Common/Media/HUDVita.swfbin10947 -> 11914 bytes
-rw-r--r--Minecraft.Client/Common/Media/HopperMenu1080.swfbin0 -> 25722 bytes
-rw-r--r--Minecraft.Client/Common/Media/HopperMenu480.swfbin0 -> 17211 bytes
-rw-r--r--Minecraft.Client/Common/Media/HopperMenu720.swfbin0 -> 17217 bytes
-rw-r--r--Minecraft.Client/Common/Media/HopperMenuSplit1080.swfbin0 -> 17239 bytes
-rw-r--r--Minecraft.Client/Common/Media/HopperMenuSplit720.swfbin0 -> 17216 bytes
-rw-r--r--Minecraft.Client/Common/Media/HopperMenuVita.swfbin0 -> 17388 bytes
-rw-r--r--Minecraft.Client/Common/Media/HorseInventoryMenu1080.swfbin15454 -> 17745 bytes
-rw-r--r--Minecraft.Client/Common/Media/HorseInventoryMenu480.swfbin15456 -> 17750 bytes
-rw-r--r--Minecraft.Client/Common/Media/HorseInventoryMenu720.swfbin15427 -> 17711 bytes
-rw-r--r--Minecraft.Client/Common/Media/HorseInventoryMenuSplit1080.swfbin15471 -> 17832 bytes
-rw-r--r--Minecraft.Client/Common/Media/HorseInventoryMenuSplit720.swfbin15454 -> 17744 bytes
-rw-r--r--Minecraft.Client/Common/Media/HorseInventoryMenuVita.swfbin0 -> 17763 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlay1080.swfbin10489 -> 11764 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlay480.swfbin10604 -> 11829 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlay720.swfbin10536 -> 11833 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlayMenu1080.swfbin12764 -> 14501 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlayMenu480.swfbin12331 -> 14497 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlayMenu720.swfbin12444 -> 14501 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlayMenuSplit1080.swfbin12372 -> 14496 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlayMenuSplit720.swfbin12338 -> 14493 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlayMenuVita.swfbin13919 -> 14499 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlaySplit1080.swfbin10465 -> 11740 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlaySplit720.swfbin9931 -> 11801 bytes
-rw-r--r--Minecraft.Client/Common/Media/HowToPlayVita.swfbin10782 -> 11990 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGameHostOptions1080.swfbin14384 -> 15836 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGameHostOptions480.swfbin14490 -> 16003 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGameHostOptions720.swfbin14486 -> 15944 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGameHostOptionsSplit1080.swfbin14382 -> 15903 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGameHostOptionsSplit720.swfbin14492 -> 16020 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGameHostOptionsVita.swfbin14493 -> 16001 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGamePlayerOptions1080.swfbin15224 -> 16386 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGamePlayerOptions480.swfbin15570 -> 16777 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGamePlayerOptions720.swfbin15336 -> 16485 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGamePlayerOptionsSplit1080.swfbin15538 -> 16728 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGamePlayerOptionsSplit720.swfbin15349 -> 16493 bytes
-rw-r--r--Minecraft.Client/Common/Media/InGamePlayerOptionsVita.swfbin15575 -> 16779 bytes
-rw-r--r--Minecraft.Client/Common/Media/Intro1080.swfbin207241 -> 344032 bytes
-rw-r--r--Minecraft.Client/Common/Media/Intro480.swfbin89823 -> 91385 bytes
-rw-r--r--Minecraft.Client/Common/Media/Intro720.swfbin88977 -> 90484 bytes
-rw-r--r--Minecraft.Client/Common/Media/IntroVita.swfbin79876 -> 80539 bytes
-rw-r--r--Minecraft.Client/Common/Media/InventoryMenu1080.swfbin18495 -> 18911 bytes
-rw-r--r--Minecraft.Client/Common/Media/InventoryMenu480.swfbin18456 -> 18883 bytes
-rw-r--r--Minecraft.Client/Common/Media/InventoryMenu720.swfbin18452 -> 18890 bytes
-rw-r--r--Minecraft.Client/Common/Media/InventoryMenuSplit1080.swfbin18459 -> 18891 bytes
-rw-r--r--Minecraft.Client/Common/Media/InventoryMenuSplit720.swfbin18452 -> 18974 bytes
-rw-r--r--Minecraft.Client/Common/Media/InventoryMenuVita.swfbin18461 -> 18877 bytes
-rw-r--r--Minecraft.Client/Common/Media/LanguagesMenu1080.swfbin0 -> 14423 bytes
-rw-r--r--Minecraft.Client/Common/Media/LanguagesMenu480.swfbin0 -> 14405 bytes
-rw-r--r--Minecraft.Client/Common/Media/LanguagesMenu720.swfbin0 -> 14411 bytes
-rw-r--r--Minecraft.Client/Common/Media/LanguagesMenuSplit1080.swfbin0 -> 14403 bytes
-rw-r--r--Minecraft.Client/Common/Media/LanguagesMenuSplit720.swfbin0 -> 14414 bytes
-rw-r--r--Minecraft.Client/Common/Media/LanguagesMenuVita.swfbin0 -> 14406 bytes
-rw-r--r--Minecraft.Client/Common/Media/LaunchMoreOptionsMenu1080.swfbin18592 -> 21323 bytes
-rw-r--r--Minecraft.Client/Common/Media/LaunchMoreOptionsMenu480.swfbin16682 -> 20949 bytes
-rw-r--r--Minecraft.Client/Common/Media/LaunchMoreOptionsMenu720.swfbin16212 -> 20730 bytes
-rw-r--r--Minecraft.Client/Common/Media/LaunchMoreOptionsMenuVita.swfbin16674 -> 20948 bytes
-rw-r--r--Minecraft.Client/Common/Media/LoadMenu1080.swfbin21745 -> 22608 bytes
-rw-r--r--Minecraft.Client/Common/Media/LoadMenu480.swfbin19169 -> 22529 bytes
-rw-r--r--Minecraft.Client/Common/Media/LoadMenu720.swfbin18616 -> 22606 bytes
-rw-r--r--Minecraft.Client/Common/Media/LoadMenuVita.swfbin20837 -> 22549 bytes
-rw-r--r--Minecraft.Client/Common/Media/MediaDurango.arcbin19606036 -> 15586417 bytes
-rw-r--r--Minecraft.Client/Common/Media/MediaOrbis.arcbin14344887 -> 10450632 bytes
-rw-r--r--Minecraft.Client/Common/Media/MediaPS3.arcbin10951528 -> 11855941 bytes
-rw-r--r--Minecraft.Client/Common/Media/MediaPSVita.arcbin8137376 -> 8834315 bytes
-rw-r--r--Minecraft.Client/Common/Media/MediaWindows64.arcbin22628631 -> 21409761 bytes
-rw-r--r--Minecraft.Client/Common/Media/PressStartToPlay1080.swfbin14283 -> 15323 bytes
-rw-r--r--Minecraft.Client/Common/Media/PressStartToPlay720.swfbin13585 -> 15166 bytes
-rw-r--r--Minecraft.Client/Common/Media/QuadrantSignin1080.swfbin18748 -> 19420 bytes
-rw-r--r--Minecraft.Client/Common/Media/QuadrantSignin720.swfbin26510 -> 19398 bytes
-rw-r--r--Minecraft.Client/Common/Media/SettingsOptionsMenu1080.swfbin15424 -> 16235 bytes
-rw-r--r--Minecraft.Client/Common/Media/SettingsOptionsMenu480.swfbin15617 -> 16426 bytes
-rw-r--r--Minecraft.Client/Common/Media/SettingsOptionsMenu720.swfbin15614 -> 16427 bytes
-rw-r--r--Minecraft.Client/Common/Media/SettingsOptionsMenuSplit1080.swfbin15468 -> 15799 bytes
-rw-r--r--Minecraft.Client/Common/Media/SettingsOptionsMenuSplit720.swfbin15616 -> 15938 bytes
-rw-r--r--Minecraft.Client/Common/Media/SettingsOptionsMenuVita.swfbin15692 -> 16423 bytes
-rw-r--r--Minecraft.Client/Common/Media/SkinSelectMenu1080.swfbin18198 -> 18546 bytes
-rw-r--r--Minecraft.Client/Common/Media/SkinSelectMenu720.swfbin18106 -> 18498 bytes
-rw-r--r--Minecraft.Client/Common/Media/SkinSelectMenuSplit1080.swfbin17924 -> 18420 bytes
-rw-r--r--Minecraft.Client/Common/Media/SkinSelectMenuSplit720.swfbin17560 -> 18049 bytes
-rw-r--r--Minecraft.Client/Common/Media/SkinSelectMenuVita.swfbin17806 -> 18296 bytes
-rw-r--r--Minecraft.Client/Common/Media/ToolTips1080.swfbin13932 -> 15824 bytes
-rw-r--r--Minecraft.Client/Common/Media/ToolTips480.swfbin13933 -> 15821 bytes
-rw-r--r--Minecraft.Client/Common/Media/ToolTips720.swfbin13929 -> 15820 bytes
-rw-r--r--Minecraft.Client/Common/Media/ToolTipsSplit1080.swfbin13930 -> 15827 bytes
-rw-r--r--Minecraft.Client/Common/Media/ToolTipsSplit720.swfbin13929 -> 15810 bytes
-rw-r--r--Minecraft.Client/Common/Media/ToolTipsVita.swfbin14881 -> 15996 bytes
-rw-r--r--Minecraft.Client/Common/Media/TradingMenu1080.swfbin16835 -> 18200 bytes
-rw-r--r--Minecraft.Client/Common/Media/TradingMenu480.swfbin16821 -> 18209 bytes
-rw-r--r--Minecraft.Client/Common/Media/TradingMenu720.swfbin17622 -> 18210 bytes
-rw-r--r--Minecraft.Client/Common/Media/TradingMenuSplit1080.swfbin16840 -> 18232 bytes
-rw-r--r--Minecraft.Client/Common/Media/TradingMenuSplit720.swfbin16828 -> 18221 bytes
-rw-r--r--Minecraft.Client/Common/Media/TradingMenuVita.swfbin18165 -> 18226 bytes
-rw-r--r--Minecraft.Client/Common/Media/TutorialPopup1080.swfbin14136 -> 15117 bytes
-rw-r--r--Minecraft.Client/Common/Media/TutorialPopup480.swfbin14143 -> 14544 bytes
-rw-r--r--Minecraft.Client/Common/Media/TutorialPopup720.swfbin14131 -> 14534 bytes
-rw-r--r--Minecraft.Client/Common/Media/TutorialPopupSplit1080.swfbin14714 -> 15120 bytes
-rw-r--r--Minecraft.Client/Common/Media/TutorialPopupSplit720.swfbin14138 -> 14540 bytes
-rw-r--r--Minecraft.Client/Common/Media/TutorialPopupVita.swfbin14142 -> 14544 bytes
-rw-r--r--Minecraft.Client/Common/Media/de-DE/strings.resx969
-rw-r--r--Minecraft.Client/Common/Media/es-ES/4J_strings.resx8
-rw-r--r--Minecraft.Client/Common/Media/es-ES/strings.resx1031
-rw-r--r--Minecraft.Client/Common/Media/font/CHS/MSYH.ttfbin0 -> 21576796 bytes
-rw-r--r--Minecraft.Client/Common/Media/fr-FR/strings.resx977
-rw-r--r--Minecraft.Client/Common/Media/it-IT/strings.resx993
-rw-r--r--Minecraft.Client/Common/Media/ja-JP/4J_strings.resx6
-rw-r--r--Minecraft.Client/Common/Media/ja-JP/strings.resx1003
-rw-r--r--Minecraft.Client/Common/Media/ko-KR/4J_strings.resx6
-rw-r--r--Minecraft.Client/Common/Media/ko-KR/strings.resx973
-rw-r--r--Minecraft.Client/Common/Media/movies1080.txt10
-rw-r--r--Minecraft.Client/Common/Media/movies480.txt5
-rw-r--r--Minecraft.Client/Common/Media/movies720.txt10
-rw-r--r--Minecraft.Client/Common/Media/moviesVita.txt5
-rw-r--r--Minecraft.Client/Common/Media/pt-BR/strings.resx1014
-rw-r--r--Minecraft.Client/Common/Media/pt-PT/4J_strings.resx8
-rw-r--r--Minecraft.Client/Common/Media/pt-PT/strings.resx1013
-rw-r--r--Minecraft.Client/Common/Media/skin.swfbin145819 -> 146035 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinGraphics.swfbin1828637 -> 2054094 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinGraphicsHud.swfbin11637 -> 14403 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinGraphicsInGame.swfbin90765 -> 167207 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHD.swfbin152571 -> 152798 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHDGraphics.swfbin3930937 -> 1557529 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHDGraphicsHud.swfbin11926 -> 14693 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHDGraphicsInGame.swfbin111299 -> 292436 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHDHud.swfbin7688 -> 9077 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHDInGame.swfbin23251 -> 24729 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHDLabels.swfbin5780 -> 6309 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinHud.swfbin7799 -> 9203 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinInGame.swfbin23315 -> 24769 bytes
-rw-r--r--Minecraft.Client/Common/Media/skinLabels.swfbin6264 -> 6357 bytes
-rw-r--r--Minecraft.Client/Common/Media/skin_Minecraft.xui3203
-rw-r--r--Minecraft.Client/Common/Media/splashes.txt6
-rw-r--r--Minecraft.Client/Common/Media/strings.resx3235
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_anvil_480.h369
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_anvil_small.h390
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_base.h8
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_base.xui96
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_base_480.h4
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_base_480.xui48
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_beacon.h406
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_beacon.xui6508
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_beacon_480.xui5215
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_beacon_Small.xui5215
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.h36
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.xui506
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_enchant.h19
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_fireworks.h166
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_fireworks.xui2359
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_fireworks_480.xui1973
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_fireworks_small.xui1558
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hopper.h99
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hopper.xui1436
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hopper_480.h141
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hopper_480.xui1891
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hopper_small.h99
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hopper_small.xui1348
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_horse.h160
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_horse.xui2281
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_horse_480.h209
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_horse_480.xui2770
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_horse_small.h163
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_horse_small.xui2175
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_howtoplay.h18
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_howtoplay.xui176
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_howtoplay_480.h18
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_howtoplay_480.xui165
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_howtoplay_small.h18
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_howtoplay_small.xui165
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hud.h55
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hud.xui353
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hud_480.h55
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hud_480.xui353
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hud_small.h55
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_hud_small.xui353
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_ingame_host_options.h7
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_ingame_host_options.xui104
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.h7
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.xui117
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.h7
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.xui117
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_inventory_creative.h19
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_inventory_creative.xui287
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_load_settings.h3
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_load_settings.xui65
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_load_settings_480.h3
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_load_settings_480.xui79
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_create.h7
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_create.xui144
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_create_480.h7
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_create_480.xui149
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.h32
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.xui472
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.h40
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.xui513
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_trading_480.h463
-rw-r--r--Minecraft.Client/Common/Media/xuiscene_trading_small.h445
-rw-r--r--Minecraft.Client/Common/Media/zh-CHT/4J_strings.resx4
-rw-r--r--Minecraft.Client/Common/Media/zh-CHT/strings.resx1079
-rw-r--r--Minecraft.Client/Common/Network/GameNetworkManager.cpp209
-rw-r--r--Minecraft.Client/Common/Network/GameNetworkManager.h3
-rw-r--r--Minecraft.Client/Common/Network/NetworkPlayerInterface.h5
-rw-r--r--Minecraft.Client/Common/Network/PlatformNetworkManagerInterface.h1
-rw-r--r--Minecraft.Client/Common/Network/PlatformNetworkManagerStub.cpp236
-rw-r--r--Minecraft.Client/Common/Network/PlatformNetworkManagerStub.h3
-rw-r--r--Minecraft.Client/Common/Network/SessionInfo.h36
-rw-r--r--Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.cpp31
-rw-r--r--Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.h6
-rw-r--r--Minecraft.Client/Common/Network/Sony/PlatformNetworkManagerSony.cpp26
-rw-r--r--Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp73
-rw-r--r--Minecraft.Client/Common/Network/Sony/SQRNetworkManager.h16
-rw-r--r--Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.cpp258
-rw-r--r--Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.h52
-rw-r--r--Minecraft.Client/Common/Network/Sony/SonyCommerce.h4
-rw-r--r--Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.cpp249
-rw-r--r--Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.h45
-rw-r--r--Minecraft.Client/Common/Potion_Macros.h2
-rw-r--r--Minecraft.Client/Common/Tutorial/ChoiceTask.cpp45
-rw-r--r--Minecraft.Client/Common/Tutorial/ControllerTask.cpp8
-rw-r--r--Minecraft.Client/Common/Tutorial/DiggerItemHint.cpp2
-rw-r--r--Minecraft.Client/Common/Tutorial/FullTutorial.cpp75
-rw-r--r--Minecraft.Client/Common/Tutorial/HorseChoiceTask.cpp43
-rw-r--r--Minecraft.Client/Common/Tutorial/HorseChoiceTask.h23
-rw-r--r--Minecraft.Client/Common/Tutorial/InfoTask.cpp7
-rw-r--r--Minecraft.Client/Common/Tutorial/LookAtTileHint.cpp12
-rw-r--r--Minecraft.Client/Common/Tutorial/RideEntityTask.cpp30
-rw-r--r--Minecraft.Client/Common/Tutorial/RideEntityTask.h22
-rw-r--r--Minecraft.Client/Common/Tutorial/Tutorial.cpp260
-rw-r--r--Minecraft.Client/Common/Tutorial/Tutorial.h3
-rw-r--r--Minecraft.Client/Common/Tutorial/TutorialEnum.h32
-rw-r--r--Minecraft.Client/Common/Tutorial/TutorialTask.h6
-rw-r--r--Minecraft.Client/Common/Tutorial/TutorialTasks.h2
-rw-r--r--Minecraft.Client/Common/Tutorial/UseItemTask.h1
-rw-r--r--Minecraft.Client/Common/UI/IUIController.h2
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.cpp456
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.h59
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_AnvilMenu.cpp12
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_AnvilMenu.h4
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_BeaconMenu.cpp410
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_BeaconMenu.h31
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.cpp25
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.h18
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_CraftingMenu.cpp148
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h1
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp542
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_CreativeMenu.h27
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_FireworksMenu.cpp129
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_FireworksMenu.h9
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_HUD.cpp264
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_HUD.h85
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_HopperMenu.cpp77
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_HopperMenu.h12
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.cpp251
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.h20
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_PauseMenu.cpp60
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_StartGame.cpp4
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_TradingMenu.cpp49
-rw-r--r--Minecraft.Client/Common/UI/IUIScene_TradingMenu.h9
-rw-r--r--Minecraft.Client/Common/UI/UI.h8
-rw-r--r--Minecraft.Client/Common/UI/UIBitmapFont.cpp16
-rw-r--r--Minecraft.Client/Common/UI/UIComponent_Panorama.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp13
-rw-r--r--Minecraft.Client/Common/UI/UIComponent_Tooltips.cpp61
-rw-r--r--Minecraft.Client/Common/UI/UIComponent_Tooltips.h12
-rw-r--r--Minecraft.Client/Common/UI/UIComponent_TutorialPopup.cpp10
-rw-r--r--Minecraft.Client/Common/UI/UIComponent_TutorialPopup.h2
-rw-r--r--Minecraft.Client/Common/UI/UIControl.h1
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Base.cpp20
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Base.h9
-rw-r--r--Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.cpp121
-rw-r--r--Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.h49
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Button.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Button.h4
-rw-r--r--Minecraft.Client/Common/UI/UIControl_ButtonList.cpp44
-rw-r--r--Minecraft.Client/Common/UI/UIControl_ButtonList.h14
-rw-r--r--Minecraft.Client/Common/UI/UIControl_CheckBox.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_CheckBox.h2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_EnchantmentBook.cpp4
-rw-r--r--Minecraft.Client/Common/UI/UIControl_EnchantmentButton.cpp12
-rw-r--r--Minecraft.Client/Common/UI/UIControl_EnchantmentButton.h2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Label.cpp24
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Label.h8
-rw-r--r--Minecraft.Client/Common/UI/UIControl_MinecraftHorse.cpp103
-rw-r--r--Minecraft.Client/Common/UI/UIControl_MinecraftHorse.h15
-rw-r--r--Minecraft.Client/Common/UI/UIControl_MinecraftPlayer.cpp3
-rw-r--r--Minecraft.Client/Common/UI/UIControl_PlayerSkinPreview.cpp7
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Progress.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Progress.h2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Slider.cpp3
-rw-r--r--Minecraft.Client/Common/UI/UIControl_Slider.h2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_SlotList.cpp7
-rw-r--r--Minecraft.Client/Common/UI/UIControl_SlotList.h2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.h2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_TextInput.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIControl_TextInput.h2
-rw-r--r--Minecraft.Client/Common/UI/UIController.cpp279
-rw-r--r--Minecraft.Client/Common/UI/UIController.h46
-rw-r--r--Minecraft.Client/Common/UI/UIEnums.h28
-rw-r--r--Minecraft.Client/Common/UI/UIGroup.cpp14
-rw-r--r--Minecraft.Client/Common/UI/UIGroup.h2
-rw-r--r--Minecraft.Client/Common/UI/UILayer.cpp47
-rw-r--r--Minecraft.Client/Common/UI/UILayer.h2
-rw-r--r--Minecraft.Client/Common/UI/UIScene.cpp26
-rw-r--r--Minecraft.Client/Common/UI/UIScene.h7
-rw-r--r--Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp79
-rw-r--r--Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.h10
-rw-r--r--Minecraft.Client/Common/UI/UIScene_AnvilMenu.cpp22
-rw-r--r--Minecraft.Client/Common/UI/UIScene_BeaconMenu.cpp519
-rw-r--r--Minecraft.Client/Common/UI/UIScene_BeaconMenu.h71
-rw-r--r--Minecraft.Client/Common/UI/UIScene_BrewingStandMenu.cpp4
-rw-r--r--Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_ContainerMenu.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_ControlsMenu.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp20
-rw-r--r--Minecraft.Client/Common/UI/UIScene_CraftingMenu.h6
-rw-r--r--Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp251
-rw-r--r--Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h18
-rw-r--r--Minecraft.Client/Common/UI/UIScene_CreativeMenu.cpp26
-rw-r--r--Minecraft.Client/Common/UI/UIScene_CreativeMenu.h1
-rw-r--r--Minecraft.Client/Common/UI/UIScene_Credits.cpp43
-rw-r--r--Minecraft.Client/Common/UI/UIScene_Credits.h10
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DLCMainMenu.cpp35
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DLCMainMenu.h2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DLCOffersMenu.cpp24
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp12
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DebugOptions.cpp6
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp4
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DispenserMenu.cpp4
-rw-r--r--Minecraft.Client/Common/UI/UIScene_EnchantingMenu.cpp4
-rw-r--r--Minecraft.Client/Common/UI/UIScene_EndPoem.cpp11
-rw-r--r--Minecraft.Client/Common/UI/UIScene_FireworksMenu.cpp233
-rw-r--r--Minecraft.Client/Common/UI/UIScene_FireworksMenu.h44
-rw-r--r--Minecraft.Client/Common/UI/UIScene_FullscreenProgress.cpp6
-rw-r--r--Minecraft.Client/Common/UI/UIScene_FurnaceMenu.cpp8
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HUD.cpp440
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HUD.h55
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp17
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HopperMenu.cpp197
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HopperMenu.h40
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.cpp338
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.h54
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HowToPlay.cpp59
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HowToPlay.h20
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.cpp46
-rw-r--r--Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.h5
-rw-r--r--Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp61
-rw-r--r--Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.h18
-rw-r--r--Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp303
-rw-r--r--Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.h22
-rw-r--r--Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp88
-rw-r--r--Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.h2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_InGameSaveManagementMenu.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_Intro.cpp14
-rw-r--r--Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp58
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LanguageSelector.cpp129
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LanguageSelector.h165
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp265
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h132
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.cpp50
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.h8
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp473
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LoadMenu.h12
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.cpp367
-rw-r--r--Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.h10
-rw-r--r--Minecraft.Client/Common/UI/UIScene_MainMenu.cpp255
-rw-r--r--Minecraft.Client/Common/UI/UIScene_MainMenu.h32
-rw-r--r--Minecraft.Client/Common/UI/UIScene_MessageBox.h3
-rw-r--r--Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.cpp121
-rw-r--r--Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.h45
-rw-r--r--Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp134
-rw-r--r--Minecraft.Client/Common/UI/UIScene_QuadrantSignin.cpp137
-rw-r--r--Minecraft.Client/Common/UI/UIScene_QuadrantSignin.h13
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SaveMessage.cpp22
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp17
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h4
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SettingsMenu.cpp23
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.cpp223
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.h15
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.cpp274
-rw-r--r--Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h6
-rw-r--r--Minecraft.Client/Common/UI/UIScene_Timer.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_Timer.h2
-rw-r--r--Minecraft.Client/Common/UI/UIScene_TradingMenu.cpp33
-rw-r--r--Minecraft.Client/Common/UI/UIScene_TradingMenu.h8
-rw-r--r--Minecraft.Client/Common/UI/UIScene_TrialExitUpsell.cpp2
-rw-r--r--Minecraft.Client/Common/UI/UIString.cpp176
-rw-r--r--Minecraft.Client/Common/UI/UIString.h103
-rw-r--r--Minecraft.Client/Common/UI/UIStructs.h118
-rw-r--r--Minecraft.Client/Common/UI/UITTFFont.cpp13
-rw-r--r--Minecraft.Client/Common/UI/UITTFFont.h6
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/TexturePack.xzpbin3590769 -> 4186611 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/x16Data.pckbin869992 -> 922699 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/TexturePack.xzpbin0 -> 3252842 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/x32Data.pckbin0 -> 1340321 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/TexturePack.xzpbin4060458 -> 4641946 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/x32Data.pckbin2636993 -> 2808253 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/TexturePack.xzpbin4777159 -> 5512680 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/x32Data.pckbin2527182 -> 2691065 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/Festive.mcsbin0 -> 9037178 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/GameRules.grfbin0 -> 499 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/TexturePack.xzpbin0 -> 5378108 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/x16Data.pckbin0 -> 1121604 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/TexturePack.pckbin0 -> 237468 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/TexturePack.xzpbin3705530 -> 4039115 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/x16Data.pckbin786598 -> 944327 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/TexturePack.xzpbin4123875 -> 4504823 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/x16Data.pckbin967988 -> 961022 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/TexturePack.pckbin217553 -> 222568 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/TexturePack.xzpbin3022739 -> 3249263 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/masseffect.mcsbin3485486 -> 3485102 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/x16Data.pckbin733891 -> 775721 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/TexturePack.pckbin176514 -> 180503 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/TexturePack.xzpbin4166364 -> 4582759 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/x32Data.pckbin2894225 -> 3042432 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/TexturePack.xzpbin2607406 -> 2818128 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/x16Data.pckbin567845 -> 581566 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/TexturePack.xzpbin3413075 -> 3767760 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/x16Data.pckbin996979 -> 1143990 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/TexturePack.pckbin181667 -> 187182 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/TexturePack.xzpbin0 -> 4897015 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/x32Data.pckbin0 -> 3341040 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.mcsbin0 -> 9184230 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.pckbin90648 -> 2025 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/audio/1.6.4.xwbbin0 -> 13988264 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/audio/Minecraft.xgsbin488 -> 488 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/audio/additional.xsbbin3047 -> 7361 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/colours.colbin5258 -> 5546 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/colours.xml16
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/font/Default.pngbin4343 -> 4616 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_11.pngbin7024 -> 7013 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_7.pngbin5322 -> 5328 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/item/christmas.pngbin0 -> 2195 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/item/christmas_double.pngbin0 -> 2911 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/item/lead_knot.pngbin0 -> 746 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/item/trapped.pngbin0 -> 1720 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/item/trapped_double.pngbin0 -> 2219 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/items.pngbin121590 -> 39203 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/misc/beacon_beam.pngbin0 -> 260 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/bat.pngbin0 -> 2935 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_diamond.pngbin0 -> 5177 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_gold.pngbin0 -> 5140 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_iron.pngbin0 -> 5064 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/donkey.pngbin0 -> 11755 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_black.pngbin0 -> 9191 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_brown.pngbin0 -> 9931 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_chestnut.pngbin0 -> 10512 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_creamy.pngbin0 -> 9674 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_darkbrown.pngbin0 -> 9271 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_gray.pngbin0 -> 11698 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_blackdots.pngbin0 -> 5401 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_white.pngbin0 -> 3668 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitedots.pngbin0 -> 4000 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitefield.pngbin0 -> 4727 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_skeleton.pngbin0 -> 11643 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_white.pngbin0 -> 9414 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_zombie.pngbin0 -> 13998 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/mule.pngbin0 -> 11294 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/witch.pngbin0 -> 2228 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither.pngbin0 -> 2702 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_armor.pngbin0 -> 3477 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_invulnerable.pngbin0 -> 3045 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/terrain.pngbin122236 -> 142406 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.pngbin30830 -> 43876 bytes
-rw-r--r--Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.pngbin10551 -> 12618 bytes
568 files changed, 67673 insertions, 6453 deletions
diff --git a/Minecraft.Client/Common/App_Defines.h b/Minecraft.Client/Common/App_Defines.h
index de1d1bdc..7e96896c 100644
--- a/Minecraft.Client/Common/App_Defines.h
+++ b/Minecraft.Client/Common/App_Defines.h
@@ -36,8 +36,29 @@
#define GAME_HOST_OPTION_BITMASK_HOSTINVISIBLE 0x00010000
#define GAME_HOST_OPTION_BITMASK_BEDROCKFOG 0x00020000
#define GAME_HOST_OPTION_BITMASK_DISABLESAVE 0x00040000
+#define GAME_HOST_OPTION_BITMASK_NOTOWNER 0x00080000
+#define GAME_HOST_OPTION_BITMASK_WORLDSIZE 0x00700000 // 3 bits, 5 values (unset(0), classic(1), small(2), medium(3), large(4))
+#define GAME_HOST_OPTION_BITMASK_MOBGRIEFING 0x00800000
+#define GAME_HOST_OPTION_BITMASK_KEEPINVENTORY 0x01000000
+#define GAME_HOST_OPTION_BITMASK_DOMOBSPAWNING 0x02000000
+#define GAME_HOST_OPTION_BITMASK_DOMOBLOOT 0x04000000
+#define GAME_HOST_OPTION_BITMASK_DOTILEDROPS 0x08000000
+#define GAME_HOST_OPTION_BITMASK_NATURALREGEN 0x10000000
+#define GAME_HOST_OPTION_BITMASK_DODAYLIGHTCYCLE 0x20000000
#define GAME_HOST_OPTION_BITMASK_ALL 0xFFFFFFFF
+#define GAME_HOST_OPTION_BITMASK_WORLDSIZE_BITSHIFT 20
+
+enum EGameHostOptionWorldSize
+{
+ e_worldSize_Unknown = 0,
+ e_worldSize_Classic,
+ e_worldSize_Small,
+ e_worldSize_Medium,
+ e_worldSize_Large
+};
+
+
#ifdef _XBOX
#define PROFILE_VERSION_1 1
#define PROFILE_VERSION_2 2
@@ -53,7 +74,12 @@
#define PROFILE_VERSION_10 12
// 4J-JEV: New Statistics and Achievements for 'NexGen' platforms.
-#define PROFILE_VERSION_BUILD_JUNE14 13
+#define PROFILE_VERSION_11 13
+
+// Java 1.6.4
+#define PROFILE_VERSION_12 14
+
+#define PROFILE_VERSION_CURRENT PROFILE_VERSION_12
#define MAX_FAVORITE_SKINS 10 // these are stored in the profile data so keep it small
diff --git a/Minecraft.Client/Common/App_enums.h b/Minecraft.Client/Common/App_enums.h
index b6c484dc..e8e0d147 100644
--- a/Minecraft.Client/Common/App_enums.h
+++ b/Minecraft.Client/Common/App_enums.h
@@ -73,6 +73,7 @@ enum eXuiAction
eAppAction_LevelInBanLevelList,
eAppAction_ReloadTexturePack,
+ eAppAction_ReloadFont,
eAppAction_TexturePackRequired, // when the user has joined from invite, but doesn't have the texture pack
#ifdef __ORBIS__
@@ -380,6 +381,10 @@ enum eMinecraftColour
eMinecraftColour_Effect_Hunger,
eMinecraftColour_Effect_Weakness,
eMinecraftColour_Effect_Poison,
+ eMinecraftColour_Effect_Wither,
+ eMinecraftColour_Effect_HealthBoost,
+ eMinecraftColour_Effect_Absoprtion,
+ eMinecraftColour_Effect_Saturation,
eMinecraftColour_Potion_BaseColour,
@@ -425,6 +430,12 @@ enum eMinecraftColour
eMinecraftColour_Mob_Ocelot_Colour2,
eMinecraftColour_Mob_Villager_Colour1,
eMinecraftColour_Mob_Villager_Colour2,
+ eMinecraftColour_Mob_Bat_Colour1,
+ eMinecraftColour_Mob_Bat_Colour2,
+ eMinecraftColour_Mob_Witch_Colour1,
+ eMinecraftColour_Mob_Witch_Colour2,
+ eMinecraftColour_Mob_Horse_Colour1,
+ eMinecraftColour_Mob_Horse_Colour2,
eMinecraftColour_Armour_Default_Leather_Colour,
@@ -443,6 +454,11 @@ enum eMinecraftColour
eMinecraftColour_Sign_Text,
eMinecraftColour_Map_Text,
+ eMinecraftColour_Leash_Light_Colour,
+ eMinecraftColour_Leash_Dark_Colour,
+
+ eMinecraftColour_Fire_Overlay,
+
eHTMLColor_0,
eHTMLColor_1,
eHTMLColor_2,
@@ -487,20 +503,20 @@ enum eMinecraftColour
eTextColor_RenamedItemTitle,
//eHTMLColor_0 = 0x000000, //r:0 , g: 0, b: 0, i: 0
- //eHTMLColor_1 = 0x0000aa, //r:0 , g: 0, b: aa, i: 1
- //eHTMLColor_2 = 0x109e10, // Changed by request of Dave //0x00aa00, //r:0 , g: aa, b: 0, i: 2
- //eHTMLColor_3 = 0x109e9e, // Changed by request of Dave //0x00aaaa, //r:0 , g: aa, b: aa, i: 3
- //eHTMLColor_4 = 0xaa0000, //r:aa , g: 0, b: 0, i: 4
- //eHTMLColor_5 = 0xaa00aa, //r:aa , g: 0, b: aa, i: 5
- //eHTMLColor_6 = 0xffaa00, //r:ff , g: aa, b: 0, i: 6
- //eHTMLColor_7 = 0xaaaaaa, //r:aa , g: aa, b: aa, i: 7
- //eHTMLColor_8 = 0x555555, //r:55 , g: 55, b: 55, i: 8
- //eHTMLColor_9 = 0x5555ff, //r:55 , g: 55, b: ff, i: 9
- //eHTMLColor_a = 0x55ff55, //r:55 , g: ff, b: 55, i: a
- //eHTMLColor_b = 0x55ffff, //r:55 , g: ff, b: ff, i: b
- //eHTMLColor_c = 0xff5555, //r:ff , g: 55, b: 55, i: c
- //eHTMLColor_d = 0xff55ff, //r:ff , g: 55, b: ff, i: d
- //eHTMLColor_e = 0xffff55, //r:ff , g: ff, b: 55, i: e
+ //eHTMLColor_1 = 0x0000aa, //r:0 , g: 0, b: aa, i: 1 // blue, quite dark
+ //eHTMLColor_2 = 0x109e10, // Changed by request of Dave //0x00aa00, //r:0 , g: aa, b: 0, i: 2 // green
+ //eHTMLColor_3 = 0x109e9e, // Changed by request of Dave //0x00aaaa, //r:0 , g: aa, b: aa, i: 3 // cyan
+ //eHTMLColor_4 = 0xaa0000, //r:aa , g: 0, b: 0, i: 4 // red
+ //eHTMLColor_5 = 0xaa00aa, //r:aa , g: 0, b: aa, i: 5 // purple
+ //eHTMLColor_6 = 0xffaa00, //r:ff , g: aa, b: 0, i: 6 // orange
+ //eHTMLColor_7 = 0xaaaaaa, //r:aa , g: aa, b: aa, i: 7 // light gray
+ //eHTMLColor_8 = 0x555555, //r:55 , g: 55, b: 55, i: 8 // gray
+ //eHTMLColor_9 = 0x5555ff, //r:55 , g: 55, b: ff, i: 9 // blue
+ //eHTMLColor_a = 0x55ff55, //r:55 , g: ff, b: 55, i: a // green
+ //eHTMLColor_b = 0x55ffff, //r:55 , g: ff, b: ff, i: b // cyan
+ //eHTMLColor_c = 0xff5555, //r:ff , g: 55, b: 55, i: c // red pink
+ //eHTMLColor_d = 0xff55ff, //r:ff , g: 55, b: ff, i: d // bright pink
+ //eHTMLColor_e = 0xffff55, //r:ff , g: ff, b: 55, i: e // yellow
//eHTMLColor_f = 0xffffff, //r:ff , g: ff, b: ff, i: f
//eHTMLColor_0_dark = 0x000000, //r:0 , g: 0, b: 0, i: 10
//eHTMLColor_1_dark = 0x00002a, //r:0 , g: 0, b: 2a, i: 11
@@ -509,12 +525,12 @@ enum eMinecraftColour
//eHTMLColor_4_dark = 0x2a0000, //r:2a , g: 0, b: 0, i: 14
//eHTMLColor_5_dark = 0x2a002a, //r:2a , g: 0, b: 2a, i: 15
//eHTMLColor_6_dark = 0x2a2a00, //r:2a , g: 2a, b: 0, i: 16
- //eHTMLColor_7_dark = 0x2a2a2a, //r:2a , g: 2a, b: 2a, i: 17
+ //eHTMLColor_7_dark = 0x2a2a2a, //r:2a , g: 2a, b: 2a, i: 17 // dark gray
//eHTMLColor_8_dark = 0x151515, //r:15 , g: 15, b: 15, i: 18
//eHTMLColor_9_dark = 0x15153f, //r:15 , g: 15, b: 3f, i: 19
//eHTMLColor_a_dark = 0x153f15, //r:15 , g: 3f, b: 15, i: 1a
//eHTMLColor_b_dark = 0x153f3f, //r:15 , g: 3f, b: 3f, i: 1b
- //eHTMLColor_c_dark = 0x3f1515, //r:3f , g: 15, b: 15, i: 1c
+ //eHTMLColor_c_dark = 0x3f1515, //r:3f , g: 15, b: 15, i: 1c // brown
//eHTMLColor_d_dark = 0x3f153f, //r:3f , g: 15, b: 3f, i: 1d
//eHTMLColor_e_dark = 0x3f3f15, //r:3f , g: 3f, b: 15, i: 1e
//eHTMLColor_f_dark = 0x3f3f3f, //r:3f , g: 3f, b: 3f, i: 1f
@@ -617,9 +633,19 @@ enum eGameHostOption
eGameHostOption_HostCanBeInvisible,
eGameHostOption_BedrockFog,
eGameHostOption_NoHUD,
+ eGameHostOption_WorldSize,
eGameHostOption_All,
eGameHostOption_DisableSaving,
+ eGameHostOption_WasntSaveOwner, // Added for PS3 save transfer, so we can add a nice message in the future instead of the creative mode one
+
+ eGameHostOption_MobGriefing,
+ eGameHostOption_KeepInventory,
+ eGameHostOption_DoMobSpawning,
+ eGameHostOption_DoMobLoot,
+ eGameHostOption_DoTileDrops,
+ eGameHostOption_NaturalRegeneration,
+ eGameHostOption_DoDaylightCycle,
};
// 4J-PB - If any new DLC items are added to the TMSFiles, this array needs updated
@@ -639,6 +665,8 @@ enum _TMSFILES
TMS_SPM,
TMS_SPI,
TMS_SPG,
+ TMS_SPD1,
+ TMS_SPSW1,
TMS_THST,
TMS_THIR,
@@ -748,6 +776,8 @@ enum _TMSFILES
TMS_MPSR_DAT,
TMS_MPHA,
TMS_MPHA_DAT,
+ TMS_MPFE,
+ TMS_MPFE_DAT,
TMS_TP01,
TMS_TP01_DAT,
@@ -761,6 +791,8 @@ enum _TMSFILES
TMS_TP06_DAT,
TMS_TP07,
TMS_TP07_DAT,
+ TMS_TP08,
+ TMS_TP08_DAT,
TMS_COUNT
};
@@ -797,6 +829,7 @@ enum EControllerActions
ACTION_MENU_OTHER_STICK_LEFT,
ACTION_MENU_OTHER_STICK_RIGHT,
ACTION_MENU_PAUSEMENU,
+ ACTION_MENU_QUICK_MOVE,
#ifdef _DURANGO
ACTION_MENU_GTC_PAUSE,
@@ -875,7 +908,7 @@ enum eMCLang
eMCLang_plPL,
eMCLang_trTR,
eMCLang_elEL,
- eMCLang_zhCHS,
+ eMCLang_csCS,
eMCLang_zhCHT,
eMCLang_laLAS,
@@ -910,4 +943,7 @@ enum eMCLang
eMCLang_elGR,
eMCLang_nnNO,
eMCLang_skSK,
+
+ eMCLang_hans,
+ eMCLang_hant,
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/App_structs.h b/Minecraft.Client/Common/App_structs.h
index ed321b5f..a7552ec0 100644
--- a/Minecraft.Client/Common/App_structs.h
+++ b/Minecraft.Client/Common/App_structs.h
@@ -100,6 +100,10 @@ typedef struct
// PS3 1.05 - Adding Greek, so need a language
unsigned char ucLanguage;
+
+ // 29/Oct/2014 - Language selector.
+ unsigned char ucLocale;
+
// 4J Stu - See comment for GAME_SETTINGS_PROFILE_DATA_BYTES below
// was 192
//unsigned char ucUnused[192-TUTORIAL_PROFILE_STORAGE_BYTES-sizeof(DWORD)-sizeof(char)-sizeof(char)-sizeof(char)-sizeof(char)-sizeof(LONG)-sizeof(LONG)-sizeof(DWORD)];
diff --git a/Minecraft.Client/Common/Audio/Consoles_SoundEngine.cpp b/Minecraft.Client/Common/Audio/Consoles_SoundEngine.cpp
index 269b605b..e440316d 100644
--- a/Minecraft.Client/Common/Audio/Consoles_SoundEngine.cpp
+++ b/Minecraft.Client/Common/Audio/Consoles_SoundEngine.cpp
@@ -35,4 +35,43 @@ void ConsoleSoundEngine::SetIsPlayingNetherMusic(bool bVal)
m_bIsPlayingNetherMusic=bVal;
}
+void ConsoleSoundEngine::tick()
+{
+ if (scheduledSounds.empty())
+ {
+ return;
+ }
+
+ for(AUTO_VAR(it,scheduledSounds.begin()); it != scheduledSounds.end();)
+ {
+ SoundEngine::ScheduledSound *next = *it;
+ next->delay--;
+
+ if (next->delay <= 0)
+ {
+ play(next->iSound, next->x, next->y, next->z, next->volume, next->pitch);
+ it =scheduledSounds.erase(it);
+ delete next;
+ }
+ else
+ {
+ ++it;
+ }
+ }
+}
+void ConsoleSoundEngine::schedule(int iSound, float x, float y, float z, float volume, float pitch, int delayTicks)
+{
+ scheduledSounds.push_back(new SoundEngine::ScheduledSound(iSound, x, y, z, volume, pitch, delayTicks));
+}
+
+ConsoleSoundEngine::ScheduledSound::ScheduledSound(int iSound, float x, float y, float z, float volume, float pitch, int delay)
+{
+ this->iSound = iSound;
+ this->x = x;
+ this->y = y;
+ this->z = z;
+ this->volume = volume;
+ this->pitch = pitch;
+ this->delay = delay;
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/Audio/Consoles_SoundEngine.h b/Minecraft.Client/Common/Audio/Consoles_SoundEngine.h
index 4ec76036..b29b4378 100644
--- a/Minecraft.Client/Common/Audio/Consoles_SoundEngine.h
+++ b/Minecraft.Client/Common/Audio/Consoles_SoundEngine.h
@@ -69,6 +69,25 @@ public:
static const WCHAR *wchSoundNames[eSoundType_MAX];
static const WCHAR *wchUISoundNames[eSFX_MAX];
+public:
+ void tick();
+ void schedule(int iSound, float x, float y, float z, float volume, float pitch, int delayTicks);
+
+private:
+ class ScheduledSound
+ {
+ public:
+ int iSound;
+ float x, y, z;
+ float volume, pitch;
+ int delay;
+
+ public:
+ ScheduledSound(int iSound, float x, float y, float z, float volume, float pitch, int delay);
+ };
+
+ vector<ScheduledSound *> scheduledSounds;
+
private:
// platform specific functions
diff --git a/Minecraft.Client/Common/Audio/SoundEngine.cpp b/Minecraft.Client/Common/Audio/SoundEngine.cpp
index 1906b1aa..e9affe6b 100644
--- a/Minecraft.Client/Common/Audio/SoundEngine.cpp
+++ b/Minecraft.Client/Common/Audio/SoundEngine.cpp
@@ -490,6 +490,12 @@ void SoundEngine::updateMiles()
case eSoundType_MOB_ENDERDRAGON_HIT:
distanceScaler=100.0f;
break;
+ case eSoundType_FIREWORKS_BLAST:
+ case eSoundType_FIREWORKS_BLAST_FAR:
+ case eSoundType_FIREWORKS_LARGE_BLAST:
+ case eSoundType_FIREWORKS_LARGE_BLAST_FAR:
+ distanceScaler=100.0f;
+ break;
case eSoundType_MOB_GHAST_MOAN:
case eSoundType_MOB_GHAST_SCREAM:
case eSoundType_MOB_GHAST_DEATH:
@@ -624,6 +630,7 @@ static S32 running = AIL_ms_count();
void SoundEngine::tick(shared_ptr<Mob> *players, float a)
{
+ ConsoleSoundEngine::tick();
#ifdef __DISABLE_MILES__
return;
#endif
@@ -1129,6 +1136,11 @@ int SoundEngine::OpenStreamThreadProc( void* lpParameter )
#endif
SoundEngine *soundEngine = (SoundEngine *)lpParameter;
soundEngine->m_hStream = AIL_open_stream(soundEngine->m_hDriver,soundEngine->m_szStreamName,0);
+
+ if(soundEngine->m_hStream==0)
+ {
+ app.DebugPrintf("SoundEngine::OpenStreamThreadProc - Could not open - %s\n",soundEngine->m_szStreamName);
+ }
return 0;
}
@@ -1225,7 +1237,11 @@ void SoundEngine::playMusicUpdate()
char szName[255];
wcstombs(szName,wstrSoundName.c_str(),255);
+#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
+ string strFile="TPACK:/Data/" + string(szName) + ".binka";
+#else
string strFile="TPACK:\\Data\\" + string(szName) + ".binka";
+#endif
std::string mountedPath = StorageManager.GetMountedPath(strFile);
strcpy(m_szStreamName,mountedPath.c_str());
#endif
@@ -1318,6 +1334,38 @@ void SoundEngine::playMusicUpdate()
// char *SoundName = (char *)ConvertSoundPathToName(name);
// strcat((char *)szStreamName,SoundName);
+ const bool isCD = (m_musicID >= m_iStream_CD_1);
+ const char* folder = isCD ? "cds/" : "music/";
+
+ FILE* pFile = nullptr;
+ if (fopen_s(&pFile, reinterpret_cast<char*>(m_szStreamName), "rb") == 0 && pFile)
+ {
+ fclose(pFile);
+ }
+ else
+ {
+ const char* extensions[] = { ".wav" }; // only wav works outside of binka files to my knowledge, i've only tested ogg, wav, mp3 and only wav worked out of the bunch
+ size_t count = sizeof(extensions) / sizeof(extensions[0]);
+ bool found = false;
+
+ for (size_t i = 0; i < count; i++)
+ {
+ int n = sprintf_s(reinterpret_cast<char*>(m_szStreamName), 512, "%s%s%s%s", m_szMusicPath, folder, m_szStreamFileA[m_musicID], extensions[i]);
+ if (n < 0) continue;
+
+ if (fopen_s(&pFile, reinterpret_cast<char*>(m_szStreamName), "rb") == 0 && pFile)
+ {
+ fclose(pFile);
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ return;
+ }
+ }
app.DebugPrintf("Starting streaming - %s\n",m_szStreamName);
diff --git a/Minecraft.Client/Common/Audio/SoundNames.cpp b/Minecraft.Client/Common/Audio/SoundNames.cpp
index 170c87a0..1ab709b2 100644
--- a/Minecraft.Client/Common/Audio/SoundNames.cpp
+++ b/Minecraft.Client/Common/Audio/SoundNames.cpp
@@ -151,6 +151,78 @@ const WCHAR *ConsoleSoundEngine::wchSoundNames[eSoundType_MAX]=
L"dig.snow", // eSoundType_DIG_SNOW
L"dig.stone", // eSoundType_DIG_STONE
L"dig.wood", // eSoundType_DIG_WOOD
+
+ // 1.6.4
+ L"fireworks.launch", //eSoundType_FIREWORKS_LAUNCH,
+ L"fireworks.blast", //eSoundType_FIREWORKS_BLAST,
+ L"fireworks.blast_far", //eSoundType_FIREWORKS_BLAST_FAR,
+ L"fireworks.large_blast", //eSoundType_FIREWORKS_LARGE_BLAST,
+ L"fireworks.large_blast_far", //eSoundType_FIREWORKS_LARGE_BLAST_FAR,
+ L"fireworks.twinkle", //eSoundType_FIREWORKS_TWINKLE,
+ L"fireworks.twinkle_far", //eSoundType_FIREWORKS_TWINKLE_FAR,
+
+ L"mob.bat.idle", //eSoundType_MOB_BAT_IDLE,
+ L"mob.bat.hurt", //eSoundType_MOB_BAT_HURT,
+ L"mob.bat.death", //eSoundType_MOB_BAT_DEATH,
+ L"mob.bat.takeoff", //eSoundType_MOB_BAT_TAKEOFF,
+
+ L"mob.wither.spawn", //eSoundType_MOB_WITHER_SPAWN,
+ L"mob.wither.idle", //eSoundType_MOB_WITHER_IDLE,
+ L"mob.wither.hurt", //eSoundType_MOB_WITHER_HURT,
+ L"mob.wither.death", //eSoundType_MOB_WITHER_DEATH,
+ L"mob.wither.shoot", //eSoundType_MOB_WITHER_SHOOT,
+
+ L"mob.cow.step", //eSoundType_MOB_COW_STEP,
+ L"mob.chicken.step", //eSoundType_MOB_CHICKEN_STEP,
+ L"mob.pig.step", //eSoundType_MOB_PIG_STEP,
+ L"mob.enderman.stare", //eSoundType_MOB_ENDERMAN_STARE,
+ L"mob.enderman.scream", //eSoundType_MOB_ENDERMAN_SCREAM,
+ L"mob.sheep.shear", //eSoundType_MOB_SHEEP_SHEAR,
+ L"mob.sheep.step", //eSoundType_MOB_SHEEP_STEP,
+ L"mob.skeleton.death", //eSoundType_MOB_SKELETON_DEATH,
+ L"mob.skeleton.step", //eSoundType_MOB_SKELETON_STEP,
+ L"mob.spider.step", //eSoundType_MOB_SPIDER_STEP,
+ L"mob.wolf.step", //eSoundType_MOB_WOLF_STEP,
+ L"mob.zombie.step", //eSoundType_MOB_ZOMBIE_STEP,
+
+ L"liquid.swim", //eSoundType_LIQUID_SWIM,
+
+ L"mob.horse.land", //eSoundType_MOB_HORSE_LAND,
+ L"mob.horse.armor", //eSoundType_MOB_HORSE_ARMOR,
+ L"mob.horse.leather", //eSoundType_MOB_HORSE_LEATHER,
+ L"mob.horse.zombie.death", //eSoundType_MOB_HORSE_ZOMBIE_DEATH,
+ L"mob.horse.skeleton.death", //eSoundType_MOB_HORSE_SKELETON_DEATH,
+ L"mob.horse.donkey.death", //eSoundType_MOB_HORSE_DONKEY_DEATH,
+ L"mob.horse.death", //eSoundType_MOB_HORSE_DEATH,
+ L"mob.horse.zombie.hit", //eSoundType_MOB_HORSE_ZOMBIE_HIT,
+ L"mob.horse.skeleton.hit", //eSoundType_MOB_HORSE_SKELETON_HIT,
+ L"mob.horse.donkey.hit", //eSoundType_MOB_HORSE_DONKEY_HIT,
+ L"mob.horse.hit", //eSoundType_MOB_HORSE_HIT,
+ L"mob.horse.zombie.idle", //eSoundType_MOB_HORSE_ZOMBIE_IDLE,
+ L"mob.horse.skeleton.idle", //eSoundType_MOB_HORSE_SKELETON_IDLE,
+ L"mob.horse.donkey.idle", //eSoundType_MOB_HORSE_DONKEY_IDLE,
+ L"mob.horse.idle", //eSoundType_MOB_HORSE_IDLE,
+ L"mob.horse.donkey.angry", //eSoundType_MOB_HORSE_DONKEY_ANGRY,
+ L"mob.horse.angry", //eSoundType_MOB_HORSE_ANGRY,
+ L"mob.horse.gallop", //eSoundType_MOB_HORSE_GALLOP,
+ L"mob.horse.breathe", //eSoundType_MOB_HORSE_BREATHE,
+ L"mob.horse.wood", //eSoundType_MOB_HORSE_WOOD,
+ L"mob.horse.soft", //eSoundType_MOB_HORSE_SOFT,
+ L"mob.horse.jump", //eSoundType_MOB_HORSE_JUMP,
+
+ L"mob.witch.idle", //eSoundType_MOB_WITCH_IDLE, <--- missing
+ L"mob.witch.hurt", //eSoundType_MOB_WITCH_HURT, <--- missing
+ L"mob.witch.death", //eSoundType_MOB_WITCH_DEATH, <--- missing
+
+ L"mob.slime.big", //eSoundType_MOB_SLIME_BIG,
+ L"mob.slime.small", //eSoundType_MOB_SLIME_SMALL,
+
+ L"eating", //eSoundType_EATING <--- missing
+ L"random.levelup", //eSoundType_RANDOM_LEVELUP
+
+ // 4J-PB - Some sounds were updated, but we can't do that for the 360 or we have to do a new sound bank
+ // instead, we'll add the sounds as new ones and change the code to reference them
+ L"fire.new_ignite",
};
diff --git a/Minecraft.Client/Common/BuildVer.h b/Minecraft.Client/Common/BuildVer.h
index ee558b03..9248a8eb 100644
--- a/Minecraft.Client/Common/BuildVer.h
+++ b/Minecraft.Client/Common/BuildVer.h
@@ -7,14 +7,14 @@
// This goes up with each build
// 4J-JEV: This value is extracted with a regex so it can be placed as the version in the AppX manifest on Durango.
-#define VER_PRODUCTBUILD 495
+#define VER_PRODUCTBUILD 560
// This goes up if there is any change to network traffic or code in a build
-#define VER_NETWORK 495
+#define VER_NETWORK 560
#define VER_PRODUCTBUILD_QFE 0
-#define VER_FILEVERSION_STRING "1.3"
+#define VER_FILEVERSION_STRING "1.6"
#define VER_PRODUCTVERSION_STRING VER_FILEVERSION_STRING
-#define VER_FILEVERSION_STRING_W L"1.3"
+#define VER_FILEVERSION_STRING_W L"1.6"
#define VER_PRODUCTVERSION_STRING_W VER_FILEVERSION_STRING_W
#define VER_FILEBETA_STR ""
#undef VER_FILEVERSION
diff --git a/Minecraft.Client/Common/Colours/ColourTable.cpp b/Minecraft.Client/Common/Colours/ColourTable.cpp
index dc58cfb1..5c74d5ec 100644
--- a/Minecraft.Client/Common/Colours/ColourTable.cpp
+++ b/Minecraft.Client/Common/Colours/ColourTable.cpp
@@ -201,6 +201,10 @@ wchar_t *ColourTable::ColourTableElements[eMinecraftColour_COUNT] =
L"Effect_Hunger",
L"Effect_Weakness",
L"Effect_Poison",
+ L"Effect_Wither",
+ L"Effect_HealthBoost",
+ L"Effect_Absorption",
+ L"Effect_Saturation",
L"Potion_BaseColour",
@@ -246,6 +250,12 @@ wchar_t *ColourTable::ColourTableElements[eMinecraftColour_COUNT] =
L"Mob_Ocelot_Colour2",
L"Mob_Villager_Colour1",
L"Mob_Villager_Colour2",
+ L"Mob_Bat_Colour1",
+ L"Mob_Bat_Colour2",
+ L"Mob_Witch_Colour1",
+ L"Mob_Witch_Colour2",
+ L"Mob_Horse_Colour1",
+ L"Mob_Horse_Colour2",
L"Armour_Default_Leather_Colour",
L"Under_Water_Clear_Colour",
@@ -262,6 +272,11 @@ wchar_t *ColourTable::ColourTableElements[eMinecraftColour_COUNT] =
L"Sign_Text",
L"Map_Text",
+
+ L"Leash_Light_Colour",
+ L"Leash_Dark_Colour",
+
+ L"Fire_Overlay",
L"HTMLColor_0",
L"HTMLColor_1",
diff --git a/Minecraft.Client/Common/ConsoleGameMode.cpp b/Minecraft.Client/Common/ConsoleGameMode.cpp
index b080e628..703d3f55 100644
--- a/Minecraft.Client/Common/ConsoleGameMode.cpp
+++ b/Minecraft.Client/Common/ConsoleGameMode.cpp
@@ -1,9 +1,9 @@
#include "stdafx.h"
#include "ConsoleGameMode.h"
-#include "..\Common\Tutorial\Tutorial.h"
+#include ".\Tutorial\Tutorial.h"
ConsoleGameMode::ConsoleGameMode(int iPad, Minecraft *minecraft, ClientConnection *connection)
: TutorialMode(iPad, minecraft, connection)
{
tutorial = new Tutorial(iPad);
-} \ No newline at end of file
+}
diff --git a/Minecraft.Client/Common/ConsoleGameMode.h b/Minecraft.Client/Common/ConsoleGameMode.h
index 3e486cbf..983381b5 100644
--- a/Minecraft.Client/Common/ConsoleGameMode.h
+++ b/Minecraft.Client/Common/ConsoleGameMode.h
@@ -1,5 +1,5 @@
#pragma once
-#include "..\Common\Tutorial\TutorialMode.h"
+#include ".\Tutorial\TutorialMode.h"
class ConsoleGameMode : public TutorialMode
{
@@ -7,4 +7,4 @@ public:
ConsoleGameMode(int iPad, Minecraft *minecraft, ClientConnection *connection);
virtual bool isImplemented() { return true; }
-}; \ No newline at end of file
+};
diff --git a/Minecraft.Client/Common/Console_Debug_enum.h b/Minecraft.Client/Common/Console_Debug_enum.h
index 4e6c2b14..3d2b97af 100644
--- a/Minecraft.Client/Common/Console_Debug_enum.h
+++ b/Minecraft.Client/Common/Console_Debug_enum.h
@@ -12,15 +12,15 @@ enum eDebugSetting
eDebugSetting_CraftAnything,
eDebugSetting_UseDpadForDebug,
eDebugSetting_MobsDontTick,
- eDebugSetting_InstantDestroy,
+ eDebugSetting_ArtTools, //eDebugSetting_InstantDestroy,
eDebugSetting_ShowUIConsole,
eDebugSetting_DistributableSave,
eDebugSetting_DebugLeaderboards,
- eDebugSetting_EnableHeightWaterBiomeOverride, //eDebugSetting_TipsAlwaysOn,
+ eDebugSetting_EnableHeightWaterOverride, //eDebugSetting_TipsAlwaysOn,
eDebugSetting_SuperflatNether,
//eDebugSetting_LightDarkBackground,
eDebugSetting_RegularLightning,
- eDebugSetting_GoToNether,
+ eDebugSetting_EnableBiomeOverride, //eDebugSetting_GoToNether,
//eDebugSetting_GoToEnd,
eDebugSetting_GoToOverworld,
eDebugSetting_UnlockAllDLC, // eDebugSetting_ToggleFont,
diff --git a/Minecraft.Client/Common/Consoles_App.cpp b/Minecraft.Client/Common/Consoles_App.cpp
index c2082965..b476ca90 100644
--- a/Minecraft.Client/Common/Consoles_App.cpp
+++ b/Minecraft.Client/Common/Consoles_App.cpp
@@ -1,20 +1,22 @@

#include "stdafx.h"
-
-#include "..\..\Minecraft.World\Recipy.h"
-#include "..\..\Minecraft.Client\Options.h"
-#include "..\..\Minecraft.World\AABB.h"
-#include "..\..\Minecraft.World\Vec3.h"
+#include "..\..\Minecraft.World\net.minecraft.world.entity.item.h"
+#include "..\..\Minecraft.World\net.minecraft.world.entity.player.h"
+#include "..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
+#include "..\..\Minecraft.World\net.minecraft.world.phys.h"
+#include "..\..\Minecraft.World\InputOutputStream.h"
+#include "..\..\Minecraft.World\compression.h"
+#include "..\Options.h"
#include "..\MinecraftServer.h"
#include "..\MultiPlayerLevel.h"
#include "..\GameRenderer.h"
#include "..\ProgressRenderer.h"
-#include "..\..\Minecraft.Client\LevelRenderer.h"
-#include "..\..\Minecraft.Client\MobSkinMemTextureProcessor.h"
-#include "..\..\Minecraft.Client\Minecraft.h"
+#include "..\LevelRenderer.h"
+#include "..\MobSkinMemTextureProcessor.h"
+#include "..\Minecraft.h"
#include "..\ClientConnection.h"
#include "..\MultiPlayerLocalPlayer.h"
-#include "..\..\Minecraft.Client\LocalPlayer.h"
+#include "..\LocalPlayer.h"
#include "..\..\Minecraft.World\Player.h"
#include "..\..\Minecraft.World\Inventory.h"
#include "..\..\Minecraft.World\Level.h"
@@ -22,25 +24,23 @@
#include "..\..\Minecraft.World\Container.h"
#include "..\..\Minecraft.World\DispenserTileEntity.h"
#include "..\..\Minecraft.World\SignTileEntity.h"
-#include "..\..\Minecraft.Client\StatsCounter.h"
+#include "..\StatsCounter.h"
#include "..\GameMode.h"
#include "..\Xbox\Social\SocialManager.h"
#include "Tutorial\TutorialMode.h"
#if defined _XBOX || defined _WINDOWS64
-#include "..\..\Minecraft.Client\Xbox\XML\ATGXmlParser.h"
-#include "..\..\Minecraft.Client\Xbox\XML\xmlFilesCallback.h"
+#include "..\Xbox\XML\ATGXmlParser.h"
+#include "..\Xbox\XML\xmlFilesCallback.h"
#endif
#include "Minecraft_Macros.h"
-#include "..\..\Minecraft.Client\PlayerList.h"
-#include "..\..\Minecraft.Client\ServerPlayer.h"
+#include "..\PlayerList.h"
+#include "..\ServerPlayer.h"
#include "GameRules\ConsoleGameRules.h"
#include "GameRules\ConsoleSchematicFile.h"
-#include "..\..\Minecraft.World\InputOutputStream.h"
-#include "..\..\Minecraft.World\LevelSettings.h"
#include "..\User.h"
#include "..\..\Minecraft.World\LevelData.h"
#include "..\..\Minecraft.World\net.minecraft.world.entity.player.h"
-#include "..\..\Minecraft.Client\EntityRenderDispatcher.h"
+#include "..\EntityRenderDispatcher.h"
#include "..\..\Minecraft.World\compression.h"
#include "..\TexturePackRepository.h"
#include "..\DLCTexturePack.h"
@@ -155,8 +155,8 @@ CMinecraftApp::CMinecraftApp()
ZeroMemory(&m_InviteData,sizeof(JoinFromInviteData) );
-// m_bRead_TMS_XUIDS_XML=false;
-// m_bRead_TMS_DLCINFO_XML=false;
+ // m_bRead_TMS_XUIDS_XML=false;
+ // m_bRead_TMS_DLCINFO_XML=false;
m_pDLCFileBuffer=NULL;
m_dwDLCFileSize=0;
@@ -178,6 +178,12 @@ CMinecraftApp::CMinecraftApp()
m_uiGameHostSettings=0;
+#ifdef _LARGE_WORLDS
+ m_GameNewWorldSize = 0;
+ m_bGameNewWorldSizeUseMoat = false;
+ m_GameNewHellScale = 0;
+#endif
+
ZeroMemory(m_playerColours,MINECRAFT_NET_MAX_PLAYERS);
m_iDLCOfferC=0;
@@ -198,10 +204,10 @@ CMinecraftApp::CMinecraftApp()
m_dwRequiredTexturePackID=0;
m_bResetNether=false;
-
+
#ifdef _XBOX
-// m_bTransferSavesToXboxOne=false;
-// m_uiTransferSlotC=5;
+ // m_bTransferSavesToXboxOne=false;
+ // m_uiTransferSlotC=5;
#endif
#if (defined _CONTENT_PACAKGE) || (defined _XBOX)
@@ -308,7 +314,15 @@ LPCWSTR CMinecraftApp::GetString(int iID)
void CMinecraftApp::SetAction(int iPad, eXuiAction action, LPVOID param)
{
- if(m_eXuiAction[iPad] == eAppAction_ExitWorldCapturedThumbnail && action != eAppAction_Idle)
+ if( ( m_eXuiAction[iPad] == eAppAction_ReloadTexturePack ) && ( action == eAppAction_EthernetDisconnected ) )
+ {
+ app.DebugPrintf("Invalid change of App action for pad %d from %d to %d, ignoring\n", iPad, m_eXuiAction[iPad], action);
+ }
+ else if( ( m_eXuiAction[iPad] == eAppAction_ReloadTexturePack ) && ( action == eAppAction_ExitWorld ) )
+ {
+ app.DebugPrintf("Invalid change of App action for pad %d from %d to %d, ignoring\n", iPad, m_eXuiAction[iPad], action);
+ }
+ else if(m_eXuiAction[iPad] == eAppAction_ExitWorldCapturedThumbnail && action != eAppAction_Idle)
{
app.DebugPrintf("Invalid change of App action for pad %d from %d to %d, ignoring\n", iPad, m_eXuiAction[iPad], action);
}
@@ -352,17 +366,17 @@ void CMinecraftApp::HandleButtonPresses()
void CMinecraftApp::HandleButtonPresses(int iPad)
{
-// // test an update of the profile data
-// void *pData=ProfileManager.GetGameDefinedProfileData(iPad);
-//
-// unsigned char *pchData= (unsigned char *)pData;
-// int iCount=0;
-// for(int i=0;i<GAME_DEFINED_PROFILE_DATA_BYTES;i++)
-// {
-// pchData[i]=0xBC;
-// //if(iCount==255) iCount = 0;
-// }
-// ProfileManager.WriteToProfile(iPad,true);
+ // // test an update of the profile data
+ // void *pData=ProfileManager.GetGameDefinedProfileData(iPad);
+ //
+ // unsigned char *pchData= (unsigned char *)pData;
+ // int iCount=0;
+ // for(int i=0;i<GAME_DEFINED_PROFILE_DATA_BYTES;i++)
+ // {
+ // pchData[i]=0xBC;
+ // //if(iCount==255) iCount = 0;
+ // }
+ // ProfileManager.WriteToProfile(iPad,true);
}
bool CMinecraftApp::LoadInventoryMenu(int iPad,shared_ptr<LocalPlayer> player,bool bNavigateBack)
@@ -463,7 +477,32 @@ bool CMinecraftApp::LoadCrafting3x3Menu(int iPad,shared_ptr<LocalPlayer> player,
return success;
}
-bool CMinecraftApp::LoadEnchantingMenu(int iPad,shared_ptr<Inventory> inventory, int x, int y, int z, Level *level)
+bool CMinecraftApp::LoadFireworksMenu(int iPad,shared_ptr<LocalPlayer> player, int x, int y, int z)
+{
+ bool success = true;
+
+ FireworksScreenInput* initData = new FireworksScreenInput();
+ initData->player = player;
+ initData->iPad = iPad;
+ initData->x = x;
+ initData->y = y;
+ initData->z = z;
+
+ if(app.GetLocalPlayerCount()>1)
+ {
+ initData->bSplitscreen=true;
+ success = ui.NavigateToScene(iPad,eUIScene_FireworksMenu, initData);
+ }
+ else
+ {
+ initData->bSplitscreen=false;
+ success = ui.NavigateToScene(iPad,eUIScene_FireworksMenu, initData);
+ }
+
+ return success;
+}
+
+bool CMinecraftApp::LoadEnchantingMenu(int iPad,shared_ptr<Inventory> inventory, int x, int y, int z, Level *level, const wstring &name)
{
bool success = true;
@@ -474,6 +513,7 @@ bool CMinecraftApp::LoadEnchantingMenu(int iPad,shared_ptr<Inventory> inventory,
initData->y = y;
initData->z = z;
initData->iPad = iPad;
+ initData->name = name;
if(app.GetLocalPlayerCount()>1)
{
@@ -634,7 +674,7 @@ bool CMinecraftApp::LoadRepairingMenu(int iPad,shared_ptr<Inventory> inventory,
return success;
}
-bool CMinecraftApp::LoadTradingMenu(int iPad, shared_ptr<Inventory> inventory, shared_ptr<Merchant> trader, Level *level)
+bool CMinecraftApp::LoadTradingMenu(int iPad, shared_ptr<Inventory> inventory, shared_ptr<Merchant> trader, Level *level, const wstring &name)
{
bool success = true;
@@ -651,10 +691,112 @@ bool CMinecraftApp::LoadTradingMenu(int iPad, shared_ptr<Inventory> inventory, s
return success;
}
+bool CMinecraftApp::LoadHopperMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<HopperTileEntity> hopper)
+{
+ bool success = true;
+
+ HopperScreenInput *initData = new HopperScreenInput();
+ initData->inventory = inventory;
+ initData->hopper = hopper;
+ initData->iPad = iPad;
+ if(app.GetLocalPlayerCount()>1) initData->bSplitscreen=true;
+ else initData->bSplitscreen=false;
+
+ success = ui.NavigateToScene(iPad,eUIScene_HopperMenu, initData);
+
+ return success;
+}
+
+bool CMinecraftApp::LoadHopperMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<MinecartHopper> hopper)
+{
+ bool success = true;
+
+ HopperScreenInput *initData = new HopperScreenInput();
+ initData->inventory = inventory;
+ initData->hopper = dynamic_pointer_cast<Container>(hopper);
+ initData->iPad = iPad;
+ if(app.GetLocalPlayerCount()>1) initData->bSplitscreen=true;
+ else initData->bSplitscreen=false;
+
+ success = ui.NavigateToScene(iPad,eUIScene_HopperMenu, initData);
+
+ return success;
+}
+
+
+bool CMinecraftApp::LoadHorseMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<Container> container, shared_ptr<EntityHorse> horse)
+{
+ bool success = true;
+
+ HorseScreenInput *initData = new HorseScreenInput();
+ initData->inventory = inventory;
+ initData->container = container;
+ initData->horse = horse;
+ initData->iPad = iPad;
+ if(app.GetLocalPlayerCount()>1) initData->bSplitscreen=true;
+ else initData->bSplitscreen=false;
+
+ success = ui.NavigateToScene(iPad,eUIScene_HorseMenu, initData);
+
+ return success;
+}
+
+bool CMinecraftApp::LoadBeaconMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<BeaconTileEntity> beacon)
+{
+ bool success = true;
+
+ BeaconScreenInput *initData = new BeaconScreenInput();
+ initData->inventory = inventory;
+ initData->beacon = beacon;
+ initData->iPad = iPad;
+ if(app.GetLocalPlayerCount()>1) initData->bSplitscreen=true;
+ else initData->bSplitscreen=false;
+
+ success = ui.NavigateToScene(iPad,eUIScene_BeaconMenu, initData);
+
+ return success;
+}
//////////////////////////////////////////////
// GAME SETTINGS
//////////////////////////////////////////////
+
+#ifdef _WINDOWS64
+static void Win64_GetSettingsPath(char *outPath, DWORD size)
+{
+ GetModuleFileNameA(NULL, outPath, size);
+ char *lastSlash = strrchr(outPath, '\\');
+ if (lastSlash) *(lastSlash + 1) = '\0';
+ strncat_s(outPath, size, "settings.dat", _TRUNCATE);
+}
+static void Win64_SaveSettings(GAME_SETTINGS *gs)
+{
+ if (!gs) return;
+ char filePath[MAX_PATH] = {};
+ Win64_GetSettingsPath(filePath, MAX_PATH);
+ FILE *f = NULL;
+ if (fopen_s(&f, filePath, "wb") == 0 && f)
+ {
+ fwrite(gs, sizeof(GAME_SETTINGS), 1, f);
+ fclose(f);
+ }
+}
+static void Win64_LoadSettings(GAME_SETTINGS *gs)
+{
+ if (!gs) return;
+ char filePath[MAX_PATH] = {};
+ Win64_GetSettingsPath(filePath, MAX_PATH);
+ FILE *f = NULL;
+ if (fopen_s(&f, filePath, "rb") == 0 && f)
+ {
+ GAME_SETTINGS temp = {};
+ if (fread(&temp, sizeof(GAME_SETTINGS), 1, f) == 1)
+ memcpy(gs, &temp, sizeof(GAME_SETTINGS));
+ fclose(f);
+ }
+}
+#endif
+
void CMinecraftApp::InitGameSettings()
{
for(int i=0;i<XUSER_MAX_COUNT;i++)
@@ -675,6 +817,8 @@ void CMinecraftApp::InitGameSettings()
// clear this for now - it will come from reading the system values
memset(pProfileSettings,0,sizeof(C_4JProfile::PROFILESETTINGS));
SetDefaultOptions(pProfileSettings,i);
+ Win64_LoadSettings(GameSettingsA[i]);
+ ApplyGameSettingsChanged(i);
#elif defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__
C4JStorage::PROFILESETTINGS *pProfileSettings=StorageManager.GetDashboardProfileSettings(i);
// 4J-PB - don't cause an options write to happen here
@@ -750,15 +894,32 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
// TU 13
GameSettingsA[iPad]->uiMashUpPackWorldsDisplay=0xFFFFFFFF;
+ // 1.6.4
+ app.SetGameHostOption(eGameHostOption_MobGriefing, 1);
+ app.SetGameHostOption(eGameHostOption_KeepInventory, 0);
+ app.SetGameHostOption(eGameHostOption_DoMobSpawning, 1 );
+ app.SetGameHostOption(eGameHostOption_DoMobLoot, 1 );
+ app.SetGameHostOption(eGameHostOption_DoTileDrops, 1 );
+ app.SetGameHostOption(eGameHostOption_NaturalRegeneration, 1 );
+ app.SetGameHostOption(eGameHostOption_DoDaylightCycle, 1 );
+
// 4J-PB - leave these in, or remove from everywhere they are referenced!
// Although probably best to leave in unless we split the profile settings into platform specific classes - having different meaning per platform for the same bitmask could get confusing
-//#ifdef __PS3__
+ //#ifdef __PS3__
// PS3DEC13
SetGameSettings(iPad,eGameSetting_PS3_EULA_Read,0); // EULA not read
// PS3 1.05 - added Greek
- GameSettingsA[iPad]->ucLanguage = MINECRAFT_LANGUAGE_DEFAULT; // use the system language
-//#endif
+
+ // 4J-JEV: We cannot change these in-game, as they could affect localised strings and font.
+ // XB1: Fix for #172947 - Content: Gameplay: While playing in language different form system default one and resetting options to their defaults in active gameplay causes in-game language to change and HUD to disappear
+ if (!app.GetGameStarted())
+ {
+ GameSettingsA[iPad]->ucLanguage = MINECRAFT_LANGUAGE_DEFAULT; // use the system language
+ GameSettingsA[iPad]->ucLocale = MINECRAFT_LANGUAGE_DEFAULT; // use the system locale
+ }
+
+ //#endif
#if (defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__)
GameSettingsA[iPad]->bSettingsChanged=bWriteProfile;
@@ -780,7 +941,7 @@ int CMinecraftApp::DefaultOptionsCallback(LPVOID pParam,C_4JProfile::PROFILESETT
pApp->DebugPrintf("Setting default options for player %d", iPad);
pApp->SetAction(iPad,eAppAction_SetDefaultOptions, (LPVOID)pSettings);
//pApp->SetDefaultOptions(pSettings,iPad);
-
+
// if the profile data has been changed, then force a profile write
// It seems we're allowed to break the 5 minute rule if it's the result of a user action
//pApp->CheckGameSettingsChanged();
@@ -790,6 +951,28 @@ int CMinecraftApp::DefaultOptionsCallback(LPVOID pParam,C_4JProfile::PROFILESETT
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__)
+wstring CMinecraftApp::toStringOptionsStatus(const C4JStorage::eOptionsCallback &eStatus)
+{
+#ifndef _CONTENT_PACKAGE
+ switch(eStatus)
+ {
+ case C4JStorage::eOptions_Callback_Idle: return L"Idle";
+ case C4JStorage::eOptions_Callback_Write: return L"Write";
+ case C4JStorage::eOptions_Callback_Write_Fail_NoSpace: return L"Write_Fail_NoSpace";
+ case C4JStorage::eOptions_Callback_Write_Fail: return L"Write_Fail";
+ case C4JStorage::eOptions_Callback_Read: return L"Read";
+ case C4JStorage::eOptions_Callback_Read_Fail: return L"Read_Fail";
+ case C4JStorage::eOptions_Callback_Read_FileNotFound: return L"Read_FileNotFound";
+ case C4JStorage::eOptions_Callback_Read_Corrupt: return L"Read_Corrupt";
+ case C4JStorage::eOptions_Callback_Read_CorruptDeletePending: return L"Read_CorruptDeletePending";
+ case C4JStorage::eOptions_Callback_Read_CorruptDeleted: return L"Read_CorruptDeleted";
+ default: return L"[UNRECOGNISED_OPTIONS_STATUS]";
+ }
+#else
+ return L"";
+#endif
+}
+
#ifdef __ORBIS__
int CMinecraftApp::OptionsDataCallback(LPVOID pParam,int iPad,unsigned short usVersion,C4JStorage::eOptionsCallback eStatus,int iBlocksRequired)
{
@@ -808,7 +991,13 @@ int CMinecraftApp::GetOptionsBlocksRequired(int iPad)
int CMinecraftApp::OptionsDataCallback(LPVOID pParam,int iPad,unsigned short usVersion,C4JStorage::eOptionsCallback eStatus)
{
CMinecraftApp *pApp=(CMinecraftApp *)pParam;
- pApp->m_eOptionsStatusA[iPad]=eStatus;
+
+#ifndef _CONTENT_PACKAGE
+ pApp->DebugPrintf("[OptionsDataCallback] Pad_%i: new status == %ls(%i).\n", iPad, pApp->toStringOptionsStatus(eStatus).c_str(), (int) eStatus);
+#endif
+
+ pApp->m_eOptionsStatusA[iPad] = eStatus;
+
return 0;
}
#endif
@@ -850,7 +1039,7 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
pGameSettings->uiBitmaskValues=0L; // reset
pGameSettings->uiBitmaskValues|=GAMESETTING_CLOUDS; //eGameSetting_Clouds - on
pGameSettings->uiBitmaskValues|=GAMESETTING_ONLINE; //eGameSetting_GameSetting_Online - on
- //eGameSetting_GameSetting_Invite - off
+ //eGameSetting_GameSetting_Invite - off
pGameSettings->uiBitmaskValues|=GAMESETTING_FRIENDSOFFRIENDS; //eGameSetting_GameSetting_FriendsOfFriends - on
pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
// TU6
@@ -885,7 +1074,7 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
pGameSettings->uiBitmaskValues=0L; // reset
pGameSettings->uiBitmaskValues|=GAMESETTING_CLOUDS; //eGameSetting_Clouds - on
pGameSettings->uiBitmaskValues|=GAMESETTING_ONLINE; //eGameSetting_GameSetting_Online - on
- //eGameSetting_GameSetting_Invite - off
+ //eGameSetting_GameSetting_Invite - off
pGameSettings->uiBitmaskValues|=GAMESETTING_FRIENDSOFFRIENDS; //eGameSetting_GameSetting_FriendsOfFriends - on
pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
// TU6
@@ -917,7 +1106,7 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
case PROFILE_VERSION_4:
{
GAME_SETTINGS *pGameSettings=(GAME_SETTINGS *)pucData;
-
+
pGameSettings->uiBitmaskValues&=~GAMESETTING_BEDROCKFOG; //eGameSetting_BedrockFog - off
pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYHUD; //eGameSetting_DisplayHUD - on
pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYHAND; //eGameSetting_DisplayHand - on
@@ -1040,7 +1229,7 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
{
GAME_SETTINGS *pGameSettings=(GAME_SETTINGS *)pucData;
// reset the display new message counter
- //pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
+ pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
// Added a bitmask in TU13 to enable/disable display of the Mash-up pack worlds in the saves list
pGameSettings->uiMashUpPackWorldsDisplay = 0xFFFFFFFF;
@@ -1057,8 +1246,9 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
// PS3DEC13
{
GAME_SETTINGS *pGameSettings=(GAME_SETTINGS *)pucData;
+ pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
pGameSettings->uiBitmaskValues&=~GAMESETTING_PS3EULAREAD; //eGameSetting_PS3_EULA_Read - off
-
+
// PS3 1.05 - added Greek
pGameSettings->ucLanguage = MINECRAFT_LANGUAGE_DEFAULT; // use the system language
@@ -1067,18 +1257,29 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat
case PROFILE_VERSION_10:
{
GAME_SETTINGS *pGameSettings=(GAME_SETTINGS *)pucData;
-
+ pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
pGameSettings->ucLanguage = MINECRAFT_LANGUAGE_DEFAULT; // use the system language
}
break;
-
+ case PROFILE_VERSION_11:
+ {
+ GAME_SETTINGS *pGameSettings=(GAME_SETTINGS *)pucData;
+ pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
+ }
+ break;
+ case PROFILE_VERSION_12:
+ {
+ GAME_SETTINGS *pGameSettings=(GAME_SETTINGS *)pucData;
+ pGameSettings->uiBitmaskValues|=GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter)
+ }
+ break;
default:
{
// This might be from a version during testing of new profile updates
app.DebugPrintf("Don't know what to do with this profile version!\n");
- #ifndef _CONTENT_PACKAGE
- // __debugbreak();
- #endif
+#ifndef _CONTENT_PACKAGE
+ // __debugbreak();
+#endif
GAME_SETTINGS *pGameSettings=(GAME_SETTINGS *)pucData;
pGameSettings->ucMenuSensitivity=100; //eGameSetting_Sensitivity_InMenu
@@ -1180,9 +1381,13 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
case eGameSetting_Gamma:
if(iPad==ProfileManager.GetPrimaryPad())
{
+#if defined(_WIN64) || defined(_WINDOWS64)
+ pMinecraft->options->set(Options::Option::GAMMA, ((float)GameSettingsA[iPad]->ucGamma) / 100.0f);
+#else
// ucGamma range is 0-100, UpdateGamma is 0 - 32768
float fVal=((float)GameSettingsA[iPad]->ucGamma)*327.68f;
RenderManager.UpdateGamma((unsigned short)fVal);
+#endif
}
break;
@@ -1208,7 +1413,7 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
{
app.DebugPrintf("NOT ACTIONING DIFFICULTY - Primary pad is %d, This pad is %d\n",ProfileManager.GetPrimaryPad(),iPad);
}
-
+
break;
case eGameSetting_Sensitivity_InGame:
// 4J-PB - we don't use the options value
@@ -1278,7 +1483,7 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal)
}
}
break;
-// Interim TU 1.6.6
+ // Interim TU 1.6.6
case eGameSetting_Sensitivity_InMenu:
// 4J-PB - we don't use the options value
// tell the input that we've changed the sensitivity - range of the slider is 0 to 200, default is 100
@@ -1414,7 +1619,7 @@ DWORD CMinecraftApp::GetPlayerSkinId(int iPad)
{
// 4J Stu - DLC skins are numbered using decimal rather than hex to make it easier to number manually
swprintf(chars, 256, L"dlcskin%08d.png", GET_DLC_SKIN_ID_FROM_BITMASK(dwSkin));
-
+
Pack=app.m_dlcManager.getPackContainingSkin(chars);
if(Pack)
@@ -1439,10 +1644,10 @@ DWORD CMinecraftApp::GetPlayerSkinId(int iPad)
return dwSkin;
}
- DWORD CMinecraftApp::GetAdditionalModelParts(int iPad)
- {
+DWORD CMinecraftApp::GetAdditionalModelParts(int iPad)
+{
return m_dwAdditionalModelParts[iPad];
- }
+}
void CMinecraftApp::SetPlayerCape(int iPad,const wstring &name)
@@ -1518,7 +1723,7 @@ unsigned int CMinecraftApp::GetPlayerFavoriteSkinsCount(int iPad)
void CMinecraftApp::ValidateFavoriteSkins(int iPad)
{
unsigned int uiCount=GetPlayerFavoriteSkinsCount(iPad);
-
+
// remove invalid skins
unsigned int uiValidSkin=0;
wchar_t chars[256];
@@ -1558,12 +1763,6 @@ void CMinecraftApp::HideMashupPackWorld(int iPad, unsigned int iMashupPackID)
GameSettingsA[iPad]->bSettingsChanged = true;
}
-void CMinecraftApp::SetMinecraftLanguage(int iPad, unsigned char ucLanguage)
-{
- GameSettingsA[iPad]->ucLanguage = ucLanguage;
- GameSettingsA[iPad]->bSettingsChanged = true;
-}
-
void CMinecraftApp::EnableMashupPackWorlds(int iPad)
{
GameSettingsA[iPad]->uiMashUpPackWorldsDisplay=0xFFFFFFFF;
@@ -1575,6 +1774,12 @@ unsigned int CMinecraftApp::GetMashupPackWorlds(int iPad)
return GameSettingsA[iPad]->uiMashUpPackWorldsDisplay;
}
+void CMinecraftApp::SetMinecraftLanguage(int iPad, unsigned char ucLanguage)
+{
+ GameSettingsA[iPad]->ucLanguage = ucLanguage;
+ GameSettingsA[iPad]->bSettingsChanged = true;
+}
+
unsigned char CMinecraftApp::GetMinecraftLanguage(int iPad)
{
// if there are no game settings read yet, return the default language
@@ -1588,6 +1793,25 @@ unsigned char CMinecraftApp::GetMinecraftLanguage(int iPad)
}
}
+void CMinecraftApp::SetMinecraftLocale(int iPad, unsigned char ucLocale)
+{
+ GameSettingsA[iPad]->ucLocale = ucLocale;
+ GameSettingsA[iPad]->bSettingsChanged = true;
+}
+
+unsigned char CMinecraftApp::GetMinecraftLocale(int iPad)
+{
+ // if there are no game settings read yet, return the default language
+ if(GameSettingsA[iPad]==NULL)
+ {
+ return 0;
+ }
+ else
+ {
+ return GameSettingsA[iPad]->ucLocale;
+ }
+}
+
void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucVal)
{
//Minecraft *pMinecraft=Minecraft::GetInstance();
@@ -1958,7 +2182,7 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV
}
break;
- // TU9
+ // TU9
case eGameSetting_DeathMessages:
if((GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_DEATHMESSAGES)!=(ucVal&0x01)<<10)
{
@@ -2091,7 +2315,7 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal)
case eGameSetting_SplitScreenVertical:
return ((GameSettingsA[iPad]->usBitmaskValues&0x0100)>>8);
break;
- // 4J-PB - Added for Interim TU for 1.6.6
+ // 4J-PB - Added for Interim TU for 1.6.6
case eGameSetting_Sensitivity_InMenu:
return GameSettingsA[iPad]->ucMenuSensitivity;
break;
@@ -2116,7 +2340,7 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal)
case eGameSetting_InterfaceOpacity:
return GameSettingsA[iPad]->ucInterfaceOpacity;
break;
-
+
case eGameSetting_Clouds:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_CLOUDS);
break;
@@ -2144,7 +2368,7 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal)
case eGameSetting_CustomSkinAnim:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_CUSTOMSKINANIM)>>9;
break;
- // TU9
+ // TU9
case eGameSetting_DeathMessages:
return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_DEATHMESSAGES)>>10;
break;
@@ -2187,6 +2411,9 @@ void CMinecraftApp::CheckGameSettingsChanged(bool bOverride5MinuteTimer, int iPa
StorageManager.WriteToProfile(i,true, bOverride5MinuteTimer);
#else
ProfileManager.WriteToProfile(i,true, bOverride5MinuteTimer);
+#ifdef _WINDOWS64
+ Win64_SaveSettings(GameSettingsA[i]);
+#endif
#endif
GameSettingsA[i]->bSettingsChanged=false;
}
@@ -2200,6 +2427,9 @@ void CMinecraftApp::CheckGameSettingsChanged(bool bOverride5MinuteTimer, int iPa
StorageManager.WriteToProfile(iPad,true, bOverride5MinuteTimer);
#else
ProfileManager.WriteToProfile(iPad,true, bOverride5MinuteTimer);
+#ifdef _WINDOWS64
+ Win64_SaveSettings(GameSettingsA[iPad]);
+#endif
#endif
GameSettingsA[iPad]->bSettingsChanged=false;
}
@@ -2333,18 +2563,18 @@ void CMinecraftApp::ActionDebugMask(int iPad,bool bSetAllClear)
}
break;
- //case eDebugSetting_HandRenderingOff:
- // if(ulBitmask&(1<<i))
- // {
- // // Turn off hand rendering.
- // //app.SetHandRenderingOff( true );
- // }
- // else
- // {
- // // Turn on hand rendering.
- // //app.SetHandRenderingOff( false );
- // }
- // break;
+ //case eDebugSetting_HandRenderingOff:
+ // if(ulBitmask&(1<<i))
+ // {
+ // // Turn off hand rendering.
+ // //app.SetHandRenderingOff( true );
+ // }
+ // else
+ // {
+ // // Turn on hand rendering.
+ // //app.SetHandRenderingOff( false );
+ // }
+ // break;
case eDebugSetting_ShowUIConsole:
if(ulBitmask&(1<<i))
@@ -2440,7 +2670,7 @@ void CMinecraftApp::HandleXuiActions(void)
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_CANT_PLACE_NEAR_SPAWN_TITLE, IDS_CANT_PLACE_NEAR_SPAWN_TEXT, uiIDA,1,XUSER_INDEX_ANY,NULL,NULL, app.GetStringTable());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_CANT_PLACE_NEAR_SPAWN_TITLE, IDS_CANT_PLACE_NEAR_SPAWN_TEXT, uiIDA,1,XUSER_INDEX_ANY);
if(result != C4JStorage::EMessage_Busy) SetGlobalXuiAction(eAppAction_Idle);
}
@@ -2523,11 +2753,11 @@ void CMinecraftApp::HandleXuiActions(void)
else
{
// ask the player if they would like to upgrade, or they'll lose the level
-
+
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_UNLOCK_TITLE, IDS_UNLOCK_TOSAVE_TEXT, uiIDA, 2,i,&CMinecraftApp::UnlockFullSaveReturned,this,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_UNLOCK_TITLE, IDS_UNLOCK_TOSAVE_TEXT, uiIDA, 2,i,&CMinecraftApp::UnlockFullSaveReturned,this);
}
}
@@ -2556,7 +2786,7 @@ void CMinecraftApp::HandleXuiActions(void)
// Check that there is a name for the save - if we're saving from the tutorial and this is the first save from the tutorial, we'll not have a name
/*if(StorageManager.GetSaveName()==NULL)
{
- app.NavigateToScene(i,eUIScene_SaveWorld);
+ app.NavigateToScene(i,eUIScene_SaveWorld);
}
else*/
{
@@ -2569,7 +2799,7 @@ void CMinecraftApp::HandleXuiActions(void)
//INT saveOrCheckpointId = 0;
//bool validSave = StorageManager.GetSaveUniqueNumber(&saveOrCheckpointId);
//SentientManager.RecordLevelSaveOrCheckpoint(ProfileManager.GetPrimaryPad(), saveOrCheckpointId);
-
+
LoadingInputParams *loadingParams = new LoadingInputParams();
loadingParams->func = &UIScene_PauseMenu::SaveWorldThreadProc;
loadingParams->lpParam = (LPVOID)false;
@@ -2593,7 +2823,7 @@ void CMinecraftApp::HandleXuiActions(void)
}
loadingParams->completionData = completionData;
-
+
// 4J Stu - Xbox only
#ifdef _XBOX
// Temporarily make this scene fullscreen
@@ -2624,12 +2854,12 @@ void CMinecraftApp::HandleXuiActions(void)
// This just allows it to be shown
if(pMinecraft->localgameModes[ProfileManager.GetPrimaryPad()] != NULL) pMinecraft->localgameModes[ProfileManager.GetPrimaryPad()]->getTutorial()->showTutorialPopup(false);
-
+
//INT saveOrCheckpointId = 0;
//bool validSave = StorageManager.GetSaveUniqueNumber(&saveOrCheckpointId);
//SentientManager.RecordLevelSaveOrCheckpoint(ProfileManager.GetPrimaryPad(), saveOrCheckpointId);
-
+
LoadingInputParams *loadingParams = new LoadingInputParams();
loadingParams->func = &UIScene_PauseMenu::SaveWorldThreadProc;
@@ -2642,7 +2872,7 @@ void CMinecraftApp::HandleXuiActions(void)
completionData->iPad = ProfileManager.GetPrimaryPad();
//completionData->bAutosaveWasMenuDisplayed=ui.GetMenuDisplayed(ProfileManager.GetPrimaryPad());
loadingParams->completionData = completionData;
-
+
// 4J Stu - Xbox only
#ifdef _XBOX
// Temporarily make this scene fullscreen
@@ -2676,11 +2906,11 @@ void CMinecraftApp::HandleXuiActions(void)
#endif
// not required - it's done within the removeLocalPlayerIdx
- // if(pMinecraft->level->isClientSide)
- // {
- // // we need to remove the qnetplayer, or this player won't be able to get back into the game until qnet times out and removes them
- // g_NetworkManager.NotifyPlayerLeaving(g_NetworkManager.GetLocalPlayerByUserIndex(i));
- // }
+ // if(pMinecraft->level->isClientSide)
+ // {
+ // // we need to remove the qnetplayer, or this player won't be able to get back into the game until qnet times out and removes them
+ // g_NetworkManager.NotifyPlayerLeaving(g_NetworkManager.GetLocalPlayerByUserIndex(i));
+ // }
// if there are any tips showing, we need to close them
@@ -2747,11 +2977,11 @@ void CMinecraftApp::HandleXuiActions(void)
}
}
}
-
+
#ifdef _DURANGO
ProfileManager.RemoveGamepadFromGame(i);
#endif
-
+
SetAction(i,eAppAction_Idle);
}
break;
@@ -2936,12 +3166,12 @@ void CMinecraftApp::HandleXuiActions(void)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_UNLOCK_TITLE, IDS_UNLOCK_TOSAVE_TEXT, uiIDA, 2, i,&CMinecraftApp::UnlockFullExitReturned,this,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_UNLOCK_TITLE, IDS_UNLOCK_TOSAVE_TEXT, uiIDA, 2, i,&CMinecraftApp::UnlockFullExitReturned,this);
}
// Change the presence info
// Are we offline or online, and how many players are there
-
+
if(g_NetworkManager.GetPlayerCount()>1)
{
for(int j=0;j<XUSER_MAX_COUNT;j++)
@@ -2987,14 +3217,14 @@ void CMinecraftApp::HandleXuiActions(void)
// turn off the gamertags in splitscreen for the primary player, since they are about to be made fullscreen
ui.HideAllGameUIElements();
-
+
// 4J Stu - Fix for #12368 - Crash: Game crashes when saving then exiting and selecting to save
for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
{
#ifdef _XBOX
app.TutorialSceneNavigateBack(idx,true);
#endif
-
+
// 4J Stu - Fix for #13257 - CRASH: Gameplay: Title crashed after exiting the tutorial
// It doesn't matter if they were in the tutorial already
pMinecraft->playerLeftTutorial( idx );
@@ -3031,14 +3261,14 @@ void CMinecraftApp::HandleXuiActions(void)
SetGameStarted(false);
ui.CloseAllPlayersScenes();
-
+
// 4J Stu - Fix for #12368 - Crash: Game crashes when saving then exiting and selecting to save
for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
{
#ifdef _XBOX
app.TutorialSceneNavigateBack(idx,true);
#endif
-
+
// 4J Stu - Fix for #13257 - CRASH: Gameplay: Title crashed after exiting the tutorial
// It doesn't matter if they were in the tutorial already
pMinecraft->playerLeftTutorial( idx );
@@ -3054,7 +3284,7 @@ void CMinecraftApp::HandleXuiActions(void)
completionData->type = e_ProgressCompletion_NavigateToHomeMenu;
completionData->iPad = DEFAULT_XUI_MENU_USER;
loadingParams->completionData = completionData;
-
+
ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_FullscreenProgress, loadingParams);
}
@@ -3072,7 +3302,7 @@ void CMinecraftApp::HandleXuiActions(void)
param->showTooltips = false;
param->setFailTimer = false;
ui.NavigateToScene(i,eUIScene_ConnectingProgress, param);
-
+
// Need to reset this incase the player has already died and respawned
pMinecraft->localplayers[i]->SetPlayerRespawned(false);
@@ -3100,7 +3330,7 @@ void CMinecraftApp::HandleXuiActions(void)
// Disable game & update thread whilst we do any of this
//app.SetGameStarted(false);
pMinecraft->gameRenderer->DisableUpdateThread();
-
+
// 4J Stu - We don't need this on a thread in multiplayer as respawning is asynchronous.
pMinecraft->localplayers[i]->respawn();
@@ -3135,8 +3365,8 @@ void CMinecraftApp::HandleXuiActions(void)
// clear the progress messages
-// pMinecraft->progressRenderer->progressStart(-1);
-// pMinecraft->progressRenderer->progressStage(-1);
+ // pMinecraft->progressRenderer->progressStart(-1);
+ // pMinecraft->progressRenderer->progressStage(-1);
}
else if(!g_NetworkManager.IsInGameplay())
{
@@ -3173,10 +3403,10 @@ void CMinecraftApp::HandleXuiActions(void)
pStats->clear();
// 4J-PB - the libs will display the Returned to Title screen
-// UINT uiIDA[1];
-// uiIDA[0]=IDS_CONFIRM_OK;
-//
-// ui.RequestMessageBox(IDS_RETURNEDTOMENU_TITLE, IDS_RETURNEDTOTITLESCREEN_TEXT, uiIDA, 1, i,&CMinecraftApp::PrimaryPlayerSignedOutReturned,this,app.GetStringTable());
+ // UINT uiIDA[1];
+ // uiIDA[0]=IDS_CONFIRM_OK;
+ //
+ // ui.RequestMessageBox(IDS_RETURNEDTOMENU_TITLE, IDS_RETURNEDTOTITLESCREEN_TEXT, uiIDA, 1, i,&CMinecraftApp::PrimaryPlayerSignedOutReturned,this,app.GetStringTable());
if( g_NetworkManager.IsInSession() )
{
app.SetAction(i,eAppAction_PrimaryPlayerSignedOutReturned);
@@ -3215,9 +3445,9 @@ void CMinecraftApp::HandleXuiActions(void)
// If there's a non-null level then, for our purposes, the game has started
bool gameStarted = false;
- for(int i = 0; i < pMinecraft->levels.length; i++)
+ for(int j = 0; j < pMinecraft->levels.length; j++)
{
- if (pMinecraft->levels.data[i] != NULL)
+ if (pMinecraft->levels.data[i] != nullptr)
{
gameStarted = true;
break;
@@ -3239,7 +3469,7 @@ void CMinecraftApp::HandleXuiActions(void)
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST), g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE), uiIDA, 1, i,&CMinecraftApp::EthernetDisconnectReturned,this, app.GetStringTable());
+ ui.RequestErrorMessage(g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST), g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE), uiIDA, 1, i,&CMinecraftApp::EthernetDisconnectReturned,this);
}
else
{
@@ -3250,6 +3480,15 @@ void CMinecraftApp::HandleXuiActions(void)
}
else
{
+#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
+ if(UIScene_LoadOrJoinMenu::isSaveTransferRunning())
+ {
+ // the save transfer is still in progress, delay jumping back to the main menu until we've cleaned up
+ SetAction(i,eAppAction_EthernetDisconnected);
+ }
+ else
+#endif
+ {
app.DebugPrintf("Handling eAppAction_EthernetDisconnected - Not host\n");
// need to clear the player stats - can't assume it'll be done in setlevel - we may not be in the game
StatsCounter* pStats = Minecraft::GetInstance()->stats[ i ];
@@ -3257,12 +3496,14 @@ void CMinecraftApp::HandleXuiActions(void)
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST), g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE), uiIDA, 1, i,&CMinecraftApp::EthernetDisconnectReturned,this, app.GetStringTable());
+ ui.RequestErrorMessage(g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST), g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE), uiIDA, 1, i,&CMinecraftApp::EthernetDisconnectReturned,this);
+
+ }
}
}
}
break;
- // We currently handle both these returns the same way.
+ // We currently handle both these returns the same way.
case eAppAction_EthernetDisconnectedReturned:
case eAppAction_PrimaryPlayerSignedOutReturned:
{
@@ -3294,14 +3535,14 @@ void CMinecraftApp::HandleXuiActions(void)
ui.HideAllGameUIElements();
ui.CloseAllPlayersScenes();
-
+
// 4J Stu - Fix for #12368 - Crash: Game crashes when saving then exiting and selecting to save
for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
{
#ifdef _XBOX
app.TutorialSceneNavigateBack(idx,true);
#endif
-
+
// 4J Stu - Fix for #13257 - CRASH: Gameplay: Title crashed after exiting the tutorial
// It doesn't matter if they were in the tutorial already
pMinecraft->playerLeftTutorial( idx );
@@ -3352,7 +3593,7 @@ void CMinecraftApp::HandleXuiActions(void)
uiIDA[0]=IDS_UNLOCK_TITLE;
uiIDA[1]=IDS_EXIT_GAME;
- ui.RequestMessageBox(IDS_TRIALOVER_TITLE, IDS_TRIALOVER_TEXT, uiIDA, 2, i,&CMinecraftApp::TrialOverReturned,this,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_TRIALOVER_TITLE, IDS_TRIALOVER_TEXT, uiIDA, 2, i,&CMinecraftApp::TrialOverReturned,this);
}
break;
@@ -3366,7 +3607,7 @@ void CMinecraftApp::HandleXuiActions(void)
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_UNLOCK_TITLE, IDS_UNLOCK_ACCEPT_INVITE, uiIDA, 2, i,&CMinecraftApp::UnlockFullInviteReturned,this,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_UNLOCK_TITLE, IDS_UNLOCK_ACCEPT_INVITE, uiIDA, 2, i,&CMinecraftApp::UnlockFullInviteReturned,this);
}
break;
case eAppAction_ExitAndJoinFromInvite:
@@ -3384,7 +3625,7 @@ void CMinecraftApp::HandleXuiActions(void)
uiIDA[1]=IDS_EXIT_GAME_SAVE;
uiIDA[2]=IDS_EXIT_GAME_NO_SAVE;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_LEAVE_VIA_INVITE, uiIDA, 3, i,&CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_LEAVE_VIA_INVITE, uiIDA, 3, i,&CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned,this);
}
else
#else
@@ -3394,7 +3635,7 @@ void CMinecraftApp::HandleXuiActions(void)
uiIDA[1]=IDS_EXIT_GAME_SAVE;
uiIDA[2]=IDS_EXIT_GAME_NO_SAVE;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_LEAVE_VIA_INVITE, uiIDA, 3, i,&CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_LEAVE_VIA_INVITE, uiIDA, 3, i,&CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned,this);
}
else
#endif
@@ -3406,13 +3647,13 @@ void CMinecraftApp::HandleXuiActions(void)
// upsell
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_UNLOCK_TITLE, IDS_UNLOCK_ACCEPT_INVITE, uiIDA, 2, i,&CMinecraftApp::UnlockFullInviteReturned,this,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_UNLOCK_TITLE, IDS_UNLOCK_ACCEPT_INVITE, uiIDA, 2, i,&CMinecraftApp::UnlockFullInviteReturned,this);
}
else
{
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_LEAVE_VIA_INVITE, uiIDA, 2,i,&CMinecraftApp::ExitAndJoinFromInvite,this,app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_LEAVE_VIA_INVITE, uiIDA, 2,i,&CMinecraftApp::ExitAndJoinFromInvite,this);
}
}
}
@@ -3430,14 +3671,14 @@ void CMinecraftApp::HandleXuiActions(void)
SetGameStarted(false);
ui.CloseAllPlayersScenes();
-
+
// 4J Stu - Fix for #12368 - Crash: Game crashes when saving then exiting and selecting to save
for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
{
#ifdef _XBOX
app.TutorialSceneNavigateBack(idx,true);
#endif
-
+
// 4J Stu - Fix for #13257 - CRASH: Gameplay: Title crashed after exiting the tutorial
// It doesn't matter if they were in the tutorial already
pMinecraft->playerLeftTutorial( idx );
@@ -3567,8 +3808,8 @@ void CMinecraftApp::HandleXuiActions(void)
// 4J Stu - Copied this from XUI_FullScreenProgress to properly handle the fail case, as the thread will no longer be failing
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_CONNECTION_FAILED, IDS_CONNECTION_LOST_SERVER, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
-
+ ui.RequestErrorMessage( IDS_CONNECTION_FAILED, IDS_CONNECTION_LOST_SERVER, uiIDA,1,ProfileManager.GetPrimaryPad());
+
ui.NavigateToHomeMenu();
ui.UpdatePlayerBasePositions();
}
@@ -3580,7 +3821,7 @@ void CMinecraftApp::HandleXuiActions(void)
if( g_NetworkManager.IsInGameplay() )
{
// This kicks off a thread that waits for the server to end, then closes the current session, starts a new one and joins the local players into it
-
+
SetAction(i,eAppAction_Idle);
if( !GetChangingSessionType() && !g_NetworkManager.IsLocalGame() )
@@ -3597,11 +3838,11 @@ void CMinecraftApp::HandleXuiActions(void)
ui.CloseAllPlayersScenes();
}
ui.ShowOtherPlayersBaseScene(ProfileManager.GetPrimaryPad(), true);
-
+
// Remove this line to fix:
// #49084 - TU5: Code: Gameplay: The title crashes every time client navigates to 'Play game' menu and loads/creates new game after a "Connection to Xbox LIVE was lost" message has appeared.
//app.NavigateToScene(0,eUIScene_Main);
-
+
LoadingInputParams *loadingParams = new LoadingInputParams();
loadingParams->func = &CGameNetworkManager::ChangeSessionTypeThreadProc;
loadingParams->lpParam = NULL;
@@ -3663,7 +3904,7 @@ void CMinecraftApp::HandleXuiActions(void)
CheckGameSettingsChanged(true,i);
break;
-
+
case eAppAction_RemoteServerSave:
{
// If the remote server save has already finished, don't complete the action
@@ -3674,7 +3915,7 @@ void CMinecraftApp::HandleXuiActions(void)
}
SetAction(i,eAppAction_WaitRemoteServerSaveComplete);
-
+
for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
{
ui.CloseUIScenes(i, true);
@@ -3716,7 +3957,7 @@ void CMinecraftApp::HandleXuiActions(void)
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
if(result != C4JStorage::EMessage_Busy) SetAction(i,eAppAction_Idle);
}
break;
@@ -3736,7 +3977,7 @@ void CMinecraftApp::HandleXuiActions(void)
MinecraftServer::resetFlags();
}
break;
-
+
case eAppAction_BanLevel:
{
// It's possible that this state can get set after the game has been exited (e.g. by network disconnection) so we can't ban the level at that point
@@ -3780,7 +4021,7 @@ void CMinecraftApp::HandleXuiActions(void)
{
swprintf(wchFormat, 40, L"%ls\n\n%%ls",player->GetOnlineName());
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_BANNED_LEVEL_TITLE, IDS_PLAYER_BANNED_LEVEL, uiIDA,2,i,&CMinecraftApp::BannedLevelDialogReturned,this, app.GetStringTable(),wchFormat);
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_BANNED_LEVEL_TITLE, IDS_PLAYER_BANNED_LEVEL, uiIDA,2,i,&CMinecraftApp::BannedLevelDialogReturned,this, wchFormat);
if(result != C4JStorage::EMessage_Busy) SetAction(i,eAppAction_Idle);
}
else
@@ -3809,7 +4050,7 @@ void CMinecraftApp::HandleXuiActions(void)
Minecraft *pMinecraft = Minecraft::GetInstance();
pMinecraft->textures->reloadAll();
pMinecraft->skins->updateUI();
-
+
if(!pMinecraft->skins->isUsingDefaultSkin())
{
TexturePack *pTexturePack = pMinecraft->skins->getSelected();
@@ -3833,11 +4074,37 @@ void CMinecraftApp::HandleXuiActions(void)
Minecraft::GetInstance()->soundEngine->playStreaming(L"", 0, 0, 0, 1, 1);
}
}
+ break;
+
+ case eAppAction_ReloadFont:
+ {
+#ifndef _XBOX
+ app.DebugPrintf(
+ "[Consoles_App] eAppAction_ReloadFont, ingame='%s'.\n",
+ app.GetGameStarted() ? "Yes" : "No" );
+
+ SetAction(i,eAppAction_Idle);
+
+ ui.SetTooltips(i, -1);
+
+ ui.ReloadSkin();
+ ui.StartReloadSkinThread();
+ ui.setCleanupOnReload();
+#endif
+ }
break;
case eAppAction_TexturePackRequired:
{
+#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
+ UINT uiIDA[2];
+ uiIDA[0]=IDS_TEXTUREPACK_FULLVERSION;
+ uiIDA[1]=IDS_CONFIRM_CANCEL; // let them continue without the texture pack here (as this is only really for r
+ // Give the player a warning about the texture pack missing
+ ui.RequestErrorMessage(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::TexturePackDialogReturned,this);
+ SetAction(i,eAppAction_Idle);
+#else
#ifdef _XBOX
ULONGLONG ullOfferID_Full;
app.GetDLCFullOfferIDForPackID(app.GetRequiredTexturePackID(),&ullOfferID_Full);
@@ -3850,8 +4117,9 @@ void CMinecraftApp::HandleXuiActions(void)
uiIDA[1]=IDS_TEXTURE_PACK_TRIALVERSION;
// Give the player a warning about the texture pack missing
- ui.RequestMessageBox(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::TexturePackDialogReturned,this,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::TexturePackDialogReturned,this);
SetAction(i,eAppAction_Idle);
+#endif
}
break;
@@ -3877,7 +4145,7 @@ void CMinecraftApp::HandleXuiActions(void)
app.TMSPP_RetrieveFileList(i,C4JStorage::eGlobalStorage_Title,eTMSAction_TMSPP_UserFileList);
#else
SetTMSAction(i,eTMSAction_TMSPP_UserFileList);
- #endif
+#endif
break;
#ifdef _XBOX
@@ -3983,47 +4251,47 @@ void CMinecraftApp::HandleXuiActions(void)
// TMS files
-/* case eTMSAction_TMS_RetrieveFiles_CreateLoad_SignInReturned:
- case eTMSAction_TMS_RetrieveFiles_RunPlayGame:
-#ifdef _XBOX
+ /* case eTMSAction_TMS_RetrieveFiles_CreateLoad_SignInReturned:
+ case eTMSAction_TMS_RetrieveFiles_RunPlayGame:
+ #ifdef _XBOX
SetTMSAction(i,eTMSAction_TMS_XUIDSFile_Waiting);
// pass in the next app action on the call or callback completing
app.ReadXuidsFileFromTMS(i,eTMSAction_TMS_DLCFile,true);
-#else
+ #else
SetTMSAction(i,eTMSAction_TMS_DLCFile);
-#endif
+ #endif
break;
- case eTMSAction_TMS_DLCFile:
-#ifdef _XBOX
+ case eTMSAction_TMS_DLCFile:
+ #ifdef _XBOX
SetTMSAction(i,eTMSAction_TMS_DLCFile_Waiting);
// pass in the next app action on the call or callback completing
app.ReadDLCFileFromTMS(i,eTMSAction_TMS_BannedListFile,true);
-#else
+ #else
SetTMSAction(i,eTMSAction_TMS_BannedListFile);
-#endif
+ #endif
break;
- case eTMSAction_TMS_RetrieveFiles_HelpAndOptions:
- case eTMSAction_TMS_RetrieveFiles_DLCMain:
-#ifdef _XBOX
+ case eTMSAction_TMS_RetrieveFiles_HelpAndOptions:
+ case eTMSAction_TMS_RetrieveFiles_DLCMain:
+ #ifdef _XBOX
SetTMSAction(i,eTMSAction_TMS_DLCFile_Waiting);
// pass in the next app action on the call or callback completing
app.ReadDLCFileFromTMS(i,eTMSAction_Idle,true);
-#else
+ #else
SetTMSAction(i,eTMSAction_Idle);
-#endif
+ #endif
break;
- case eTMSAction_TMS_BannedListFile:
-#ifdef _XBOX
+ case eTMSAction_TMS_BannedListFile:
+ #ifdef _XBOX
SetTMSAction(i,eTMSAction_TMS_BannedListFile_Waiting);
// pass in the next app action on the call or callback completing
app.ReadBannedList(i, eTMSAction_TMS_RetrieveFiles_Complete,true);
-#else
+ #else
SetTMSAction(i,eTMSAction_TMS_RetrieveFiles_Complete);
-#endif
+ #endif
break;
@@ -4102,12 +4370,12 @@ void CMinecraftApp::loadMediaArchive()
#if 0
string path = "Common\\media.arc";
HANDLE hFile = CreateFile( path.c_str(),
- GENERIC_READ,
- FILE_SHARE_READ,
- NULL,
- OPEN_EXISTING,
- FILE_FLAG_SEQUENTIAL_SCAN,
- NULL );
+ GENERIC_READ,
+ FILE_SHARE_READ,
+ NULL,
+ OPEN_EXISTING,
+ FILE_FLAG_SEQUENTIAL_SCAN,
+ NULL );
if( hFile != INVALID_HANDLE_VALUE )
{
@@ -4120,10 +4388,10 @@ void CMinecraftApp::loadMediaArchive()
DWORD m_fSize = 0;
BOOL hr = ReadFile( hFile,
- m_fBody,
- dwFileSize,
- &m_fSize,
- NULL );
+ m_fBody,
+ dwFileSize,
+ &m_fSize,
+ NULL );
assert( m_fSize == dwFileSize );
@@ -4199,10 +4467,8 @@ int CMinecraftApp::EthernetDisconnectReturned(void *pParam,int iPad,const C4JSto
else
{
// 4J-PB - turn off the PSN store icon just in case this happened when we were in one of the DLC menus
-#ifdef __ORBIS__
- sceNpCommerceHidePsStoreIcon();
-#elif defined __PSVITA__
- sceNpCommerce2HidePsStoreIcon();
+#if defined __ORBIS__ || defined __PSVITA__
+ app.GetCommerce()->HidePsStoreIcon();
#endif
app.SetAction(iPad,eAppAction_EthernetDisconnectedReturned_Menus);
}
@@ -4326,7 +4592,7 @@ int CMinecraftApp::SignoutExitWorldThreadProc( void* lpParameter )
app.m_gameRules.unloadCurrentGameRules(); //
MinecraftServer::resetFlags();
-
+
// We can't start/join a new game until the session is destroyed, so wait for it to be idle again
while( g_NetworkManager.IsInSession() )
{
@@ -4362,7 +4628,7 @@ int CMinecraftApp::UnlockFullInviteReturned(void *pParam,int iPad,C4JStorage::EM
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
#endif
@@ -4377,7 +4643,7 @@ int CMinecraftApp::UnlockFullInviteReturned(void *pParam,int iPad,C4JStorage::EM
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app);
}
#endif
@@ -4407,7 +4673,7 @@ int CMinecraftApp::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::EMes
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
#endif
@@ -4422,7 +4688,7 @@ int CMinecraftApp::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::EMes
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app);
}
#elif defined(__ORBIS__)
else
@@ -4435,14 +4701,14 @@ int CMinecraftApp::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::EMes
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app);
}
}
#endif
@@ -4472,7 +4738,7 @@ int CMinecraftApp::UnlockFullExitReturned(void *pParam,int iPad,C4JStorage::EMes
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
#endif
@@ -4491,7 +4757,7 @@ int CMinecraftApp::UnlockFullExitReturned(void *pParam,int iPad,C4JStorage::EMes
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturnedExitTrial,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturnedExitTrial,&app);
}
#elif defined(__ORBIS__)
else
@@ -4504,7 +4770,7 @@ int CMinecraftApp::UnlockFullExitReturned(void *pParam,int iPad,C4JStorage::EMes
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad);
// still need to exit the trial or we'll be in the Pause menu with input ignored
pApp->SetAction(pMinecraft->player->GetXboxPad(),eAppAction_ExitWorldTrial);
}
@@ -4513,7 +4779,7 @@ int CMinecraftApp::UnlockFullExitReturned(void *pParam,int iPad,C4JStorage::EMes
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &CMinecraftApp::MustSignInFullVersionPurchaseReturnedExitTrial,&app, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &CMinecraftApp::MustSignInFullVersionPurchaseReturnedExitTrial,&app);
}
}
#endif
@@ -4545,7 +4811,7 @@ int CMinecraftApp::TrialOverReturned(void *pParam,int iPad,C4JStorage::EMessageR
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
#endif
@@ -4561,7 +4827,7 @@ int CMinecraftApp::TrialOverReturned(void *pParam,int iPad,C4JStorage::EMessageR
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app);
// 4J Stu - We can't actually exit the game, so just exit back to the main menu
//pApp->SetAction(pMinecraft->player->GetXboxPad(),eAppAction_ExitWorldTrial);
@@ -4629,7 +4895,7 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
{
// Primary Player gone or there's been a sign out and sign in of the primary player, so kick them out
pApp->SetAction(iPrimaryPlayer,eAppAction_PrimaryPlayerSignedOut);
-
+
// 4J-PB - invalidate their banned level list
pApp->InvalidateBannedList(iPrimaryPlayer);
@@ -4665,7 +4931,7 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_GUEST_ORDER_CHANGED_TITLE, IDS_GUEST_ORDER_CHANGED_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,NULL,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_GUEST_ORDER_CHANGED_TITLE, IDS_GUEST_ORDER_CHANGED_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
// 4J Stu - On PS4 we can also cause to exit players if they are signed out here, but we shouldn't do that if
@@ -4687,7 +4953,7 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
if(hasGuestIdChanged && pApp->m_currentSigninInfo[i].dwGuestNumber != 0 && g_NetworkManager.GetLocalPlayerByUserIndex(i)!=NULL)
{
pApp->DebugPrintf("Recommending removal of player at index %d because their guest id changed\n",i);
- pApp->SetAction(i,eAppAction_ExitPlayer);
+ pApp->SetAction(i, eAppAction_ExitPlayer);
}
else
{
@@ -4705,11 +4971,13 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
// 4J-PB - invalidate their banned level list
pApp->DebugPrintf("Player at index %d Left - invalidating their banned list\n",i);
pApp->InvalidateBannedList(i);
-
- if(g_NetworkManager.GetLocalPlayerByUserIndex(i)!=NULL)
+
+ // 4J-HG: If either the player is in the network manager or in the game, need to exit player
+ // TODO: Do we need to check the network manager?
+ if (g_NetworkManager.GetLocalPlayerByUserIndex(i) != NULL || Minecraft::GetInstance()->localplayers[i] != NULL)
{
pApp->DebugPrintf("Player %d signed out\n", i);
- pApp->SetAction(i,eAppAction_ExitPlayer);
+ pApp->SetAction(i, eAppAction_ExitPlayer);
}
}
}
@@ -4735,15 +5003,20 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
pApp->SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected);
}
-
+
g_NetworkManager.HandleSignInChange();
}
// Some menus require the player to be signed in to live, so if this callback happens and the primary player is
// no longer signed in then nav back
else if ( pApp->GetLiveLinkRequired() && !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) )
{
+#ifdef __PSVITA__
+ if(!CGameNetworkManager::usingAdhocMode()) // if we're in adhoc mode, we can ignore this
+#endif
+ {
pApp->SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected);
}
+ }
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ )
// 4J-JEV: Need to kick of loading of profile data for sub-sign in players.
@@ -4930,16 +5203,16 @@ void CMinecraftApp::UpsellReturnedCallback(LPVOID pParam, eUpsellType type, eUps
#ifdef __PS3__
// special case for people who are not signed in to the PSN while playing the trial game
case eUpsellResponse_UserNotSignedInPSN:
-
+
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::MustSignInFullVersionPurchaseReturned,&app);
return;
case eUpsellResponse_NotAllowedOnline: // On earning a trophy in the trial version, where the user is underage and can't go online to buy the game, but they selected to buy the game on the trophy upsell
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,&app, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
break;
#endif
case eUpsellResponse_Declined:
@@ -4963,6 +5236,13 @@ void CMinecraftApp::UpsellReturnedCallback(LPVOID pParam, eUpsellType type, eUps
TelemetryManager->RecordUpsellResponded(ProfileManager.GetPrimaryPad(), eSen_UpsellID_Full_Version_Of_Game, app.m_dwOfferID, senResponse);
}
+#ifdef _DEBUG_MENUS_ENABLED
+bool CMinecraftApp::DebugArtToolsOn()
+{
+ return DebugSettingsOn() && (GetGameSettingsDebugMask(ProfileManager.GetPrimaryPad())&(1L<<eDebugSetting_ArtTools)) != 0;
+}
+#endif
+
void CMinecraftApp::SetDebugSequence(const char *pchSeq)
{
InputManager.SetDebugSequence(pchSeq,&CMinecraftApp::DebugInputCallback,this);
@@ -5083,8 +5363,8 @@ void CMinecraftApp::MountNextDLC(int iPad)
/* Removed - now loading these on demand instead of as each pack is mounted
if(m_iTotalDLCInstalled > 0)
{
- Minecraft *pMinecraft=Minecraft::GetInstance();
- pMinecraft->levelRenderer->AddDLCSkinsToMemTextures();
+ Minecraft *pMinecraft=Minecraft::GetInstance();
+ pMinecraft->levelRenderer->AddDLCSkinsToMemTextures();
}
*/
@@ -5108,6 +5388,16 @@ void CMinecraftApp::MountNextDLC(int iPad)
}
}
#endif
+#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
+ {
+ TexturePack* currentTPack = Minecraft::GetInstance()->skins->getSelected();
+ TexturePack* requiredTPack = Minecraft::GetInstance()->skins->getTexturePackById(app.GetRequiredTexturePackID());
+ if(currentTPack != requiredTPack)
+ {
+ Minecraft::GetInstance()->skins->selectTexturePackById(app.GetRequiredTexturePackID());
+ }
+ }
+#endif
}
}
@@ -5142,7 +5432,7 @@ int CMinecraftApp::DLCMountedCallback(LPVOID pParam,int iPad,DWORD dwErr,DWORD d
app.m_dlcManager.removePack(pack);
pack = NULL;
}
-
+
if(pack == NULL)
{
app.DebugPrintf("Pack \"%ls\" is not installed, so adding it\n", CONTENT_DATA_DISPLAY_NAME(ContentData));
@@ -5211,20 +5501,25 @@ int CMinecraftApp::DLCMountedCallback(LPVOID pParam,int iPad,DWORD dwErr,DWORD d
// }
// }
- void CMinecraftApp::HandleDLC(DLCPack *pack)
- {
- DWORD dwFilesProcessed = 0;
+void CMinecraftApp::HandleDLC(DLCPack *pack)
+{
+ DWORD dwFilesProcessed = 0;
#ifndef _XBOX
#if defined(__PS3__) || defined(__ORBIS__) || defined(_WINDOWS64) || defined (__PSVITA__)
- std::vector<std::string> dlcFilenames;
+ std::vector<std::string> dlcFilenames;
#elif defined _DURANGO
- std::vector<std::wstring> dlcFilenames;
+ std::vector<std::wstring> dlcFilenames;
+#endif
+ StorageManager.GetMountedDLCFileList("DLCDrive", dlcFilenames);
+#ifdef __ORBIS__
+ // 4J Stu - I don't know why we handle more than one file here any more, however this doesn't seem to work with the PS4 patches
+ if(dlcFilenames.size() > 0) m_dlcManager.readDLCDataFile(dwFilesProcessed, dlcFilenames[0], pack);
+#else
+ for(int i=0; i<dlcFilenames.size();i++)
+ {
+ m_dlcManager.readDLCDataFile(dwFilesProcessed, dlcFilenames[i], pack);
+ }
#endif
- StorageManager.GetMountedDLCFileList("DLCDrive", dlcFilenames);
- for(int i=0; i<dlcFilenames.size();i++)
- {
- m_dlcManager.readDLCDataFile(dwFilesProcessed, dlcFilenames[i], pack);
- }
#else
WIN32_FIND_DATA wfd;
HANDLE hFind;
@@ -5248,7 +5543,7 @@ int CMinecraftApp::DLCMountedCallback(LPVOID pParam,int iPad,DWORD dwErr,DWORD d
{
strcpy(szFullFilename,szPath);
strcat(szFullFilename,wfd.cFileName);
-
+
if(( GetFileAttributes( szFullFilename ) & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
{
#ifdef _XBOX
@@ -5280,7 +5575,7 @@ int CMinecraftApp::DLCMountedCallback(LPVOID pParam,int iPad,DWORD dwErr,DWORD d
#endif // __PS3__ || __ORBIS__
if( dwFilesProcessed == 0 ) m_dlcManager.removePack(pack);
- }
+}
// int CMinecraftApp::DLCReadCallback(LPVOID pParam,C4JStorage::DLC_FILE_DETAILS *pDLCData)
// {
@@ -5289,45 +5584,45 @@ int CMinecraftApp::DLCMountedCallback(LPVOID pParam,int iPad,DWORD dwErr,DWORD d
// return 0;
// }
- //-------------------------------------------------------------------------------------
- // Name: InitTime()
- // Desc: Initializes the timer variables
- //-------------------------------------------------------------------------------------
- void CMinecraftApp::InitTime()
- {
+//-------------------------------------------------------------------------------------
+// Name: InitTime()
+// Desc: Initializes the timer variables
+//-------------------------------------------------------------------------------------
+void CMinecraftApp::InitTime()
+{
- // Get the frequency of the timer
- LARGE_INTEGER qwTicksPerSec;
- QueryPerformanceFrequency( &qwTicksPerSec );
- m_Time.fSecsPerTick = 1.0f / (float)qwTicksPerSec.QuadPart;
+ // Get the frequency of the timer
+ LARGE_INTEGER qwTicksPerSec;
+ QueryPerformanceFrequency( &qwTicksPerSec );
+ m_Time.fSecsPerTick = 1.0f / (float)qwTicksPerSec.QuadPart;
- // Save the start time
- QueryPerformanceCounter( &m_Time.qwTime );
+ // Save the start time
+ QueryPerformanceCounter( &m_Time.qwTime );
- // Zero out the elapsed and total time
- m_Time.qwAppTime.QuadPart = 0;
- m_Time.fAppTime = 0.0f;
- m_Time.fElapsedTime = 0.0f;
- }
+ // Zero out the elapsed and total time
+ m_Time.qwAppTime.QuadPart = 0;
+ m_Time.fAppTime = 0.0f;
+ m_Time.fElapsedTime = 0.0f;
+}
- //-------------------------------------------------------------------------------------
- // Name: UpdateTime()
- // Desc: Updates the elapsed time since our last frame.
- //-------------------------------------------------------------------------------------
- void CMinecraftApp::UpdateTime()
- {
- LARGE_INTEGER qwNewTime;
- LARGE_INTEGER qwDeltaTime;
+//-------------------------------------------------------------------------------------
+// Name: UpdateTime()
+// Desc: Updates the elapsed time since our last frame.
+//-------------------------------------------------------------------------------------
+void CMinecraftApp::UpdateTime()
+{
+ LARGE_INTEGER qwNewTime;
+ LARGE_INTEGER qwDeltaTime;
- QueryPerformanceCounter( &qwNewTime );
- qwDeltaTime.QuadPart = qwNewTime.QuadPart - m_Time.qwTime.QuadPart;
+ QueryPerformanceCounter( &qwNewTime );
+ qwDeltaTime.QuadPart = qwNewTime.QuadPart - m_Time.qwTime.QuadPart;
- m_Time.qwAppTime.QuadPart += qwDeltaTime.QuadPart;
- m_Time.qwTime.QuadPart = qwNewTime.QuadPart;
+ m_Time.qwAppTime.QuadPart += qwDeltaTime.QuadPart;
+ m_Time.qwTime.QuadPart = qwNewTime.QuadPart;
- m_Time.fElapsedTime = m_Time.fSecsPerTick * ((FLOAT)(qwDeltaTime.QuadPart));
- m_Time.fAppTime = m_Time.fSecsPerTick * ((FLOAT)(m_Time.qwAppTime.QuadPart));
- }
+ m_Time.fElapsedTime = m_Time.fSecsPerTick * ((FLOAT)(qwDeltaTime.QuadPart));
+ m_Time.fAppTime = m_Time.fSecsPerTick * ((FLOAT)(m_Time.qwAppTime.QuadPart));
+}
@@ -5368,7 +5663,7 @@ void CMinecraftApp::AddMemoryTextureFile(const wstring &wName,PBYTE pbData,DWORD
if(it != m_MEM_Files.end())
{
#ifndef _CONTENT_PACKAGE
- wprintf(L"Incrementing the memory texture file count for %ls\n", wName.c_str());
+ wprintf(L"Incrementing the memory texture file count for %ls\n", wName.c_str());
#endif
pData = (*it).second;
@@ -5387,7 +5682,7 @@ void CMinecraftApp::AddMemoryTextureFile(const wstring &wName,PBYTE pbData,DWORD
}
#ifndef _CONTENT_PACKAGE
- //wprintf(L"Adding the memory texture file data for %ls\n", wName.c_str());
+ //wprintf(L"Adding the memory texture file data for %ls\n", wName.c_str());
#endif
// this is a texture (png) file
@@ -5408,12 +5703,12 @@ void CMinecraftApp::AddMemoryTextureFile(const wstring &wName,PBYTE pbData,DWORD
void CMinecraftApp::RemoveMemoryTextureFile(const wstring &wName)
{
EnterCriticalSection(&csMemFilesLock);
-
+
AUTO_VAR(it, m_MEM_Files.find(wName));
if(it != m_MEM_Files.end())
{
#ifndef _CONTENT_PACKAGE
- wprintf(L"Decrementing the memory texture file count for %ls\n", wName.c_str());
+ wprintf(L"Decrementing the memory texture file count for %ls\n", wName.c_str());
#endif
PMEMDATA pData = (*it).second;
--pData->ucRefCount;
@@ -5667,7 +5962,7 @@ int CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned(void *pParam,int iPad
uiIDA[1]=IDS_CONFIRM_CANCEL;
// Give the player a warning about the trial version of the texture pack
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, iPad,&CMinecraftApp::WarningTrialTexturePackReturned,pClass,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, iPad,&CMinecraftApp::WarningTrialTexturePackReturned,pClass);
return S_OK;
}
@@ -5683,7 +5978,7 @@ int CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned(void *pParam,int iPad
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::ExitAndJoinFromInviteAndSaveReturned,pClass, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::ExitAndJoinFromInviteAndSaveReturned,pClass);
return 0;
}
else
@@ -5701,7 +5996,7 @@ int CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned(void *pParam,int iPad
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_DECLINE_SAVE_GAME, IDS_CONFIRM_DECLINE_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::ExitAndJoinFromInviteDeclineSaveReturned,pClass, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_TITLE_DECLINE_SAVE_GAME, IDS_CONFIRM_DECLINE_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CMinecraftApp::ExitAndJoinFromInviteDeclineSaveReturned,pClass);
return 0;
}
@@ -5712,6 +6007,102 @@ int CMinecraftApp::ExitAndJoinFromInviteSaveDialogReturned(void *pParam,int iPad
int CMinecraftApp::WarningTrialTexturePackReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
+ // 4J Stu - I added this in when fixing an X1 bug. We should probably add this as well but I don't have time to test all platforms atm
+#if 0 //defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
+ if(result==C4JStorage::EMessage_ResultAccept)
+ {
+ if(!ProfileManager.IsSignedInLive(iPad))
+ {
+ // you're not signed in to PSN!
+
+ }
+ else
+ {
+ // 4J-PB - need to check this user can access the store
+ bool bContentRestricted;
+ ProfileManager.GetChatAndContentRestrictions(iPad,true,NULL,&bContentRestricted,NULL);
+ if(bContentRestricted)
+ {
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_CONFIRM_OK;
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
+ }
+ else
+ {
+ // need to get info on the pack to see if the user has already downloaded it
+ TexturePack *tPack = Minecraft::GetInstance()->skins->getSelected();
+ DLCTexturePack *pDLCTexPack=(DLCTexturePack *)tPack;
+
+ // retrieve the store name for the skin pack
+ DLCPack *pDLCPack=pDLCTexPack->getDLCInfoParentPack();//tPack->getDLCPack();
+ const char *pchPackName=wstringtofilename(pDLCPack->getName());
+ app.DebugPrintf("Texture Pack - %s\n",pchPackName);
+ SONYDLC *pSONYDLCInfo=app.GetSONYDLCInfo((char *)pchPackName);
+
+ if(pSONYDLCInfo!=NULL)
+ {
+ char chName[42];
+ char chSkuID[SCE_NP_COMMERCE2_SKU_ID_LEN];
+
+ memset(chSkuID,0,SCE_NP_COMMERCE2_SKU_ID_LEN);
+ // find the info on the skin pack
+ // we have to retrieve the skuid from the store info, it can't be hardcoded since Sony may change it.
+ // So we assume the first sku for the product is the one we want
+#ifdef __ORBIS__
+ sprintf(chName,"%s",pSONYDLCInfo->chDLCKeyname);
+#else
+ sprintf(chName,"%s-%s",app.GetCommerceCategory(),pSONYDLCInfo->chDLCKeyname);
+#endif
+ app.GetDLCSkuIDFromProductList(chName,chSkuID);
+ // 4J-PB - need to check for an empty store
+#if defined __ORBIS__ || defined __PSVITA__ || defined __PS3__
+ if(app.CheckForEmptyStore(iPad)==false)
+#endif
+ {
+ if(app.DLCAlreadyPurchased(chSkuID))
+ {
+ app.DownloadAlreadyPurchased(chSkuID);
+ }
+ else
+ {
+ app.Checkout(chSkuID);
+ }
+ }
+ }
+ }
+ }
+ }
+#endif //
+
+#ifdef _XBOX_ONE
+ if(result==C4JStorage::EMessage_ResultAccept)
+ {
+ if(ProfileManager.IsSignedIn(iPad))
+ {
+ if (ProfileManager.IsSignedInLive(iPad))
+ {
+ TexturePack *tPack = Minecraft::GetInstance()->skins->getSelected();
+ // get the dlc texture pack
+ DLCTexturePack *pDLCTexPack=(DLCTexturePack *)tPack;
+
+ DLCPack *pDLCPack=pDLCTexPack->getDLCInfoParentPack();
+
+ DLC_INFO *pDLCInfo=app.GetDLCInfoForProductName((WCHAR *)pDLCPack->getName().c_str());
+
+ StorageManager.InstallOffer(1,(WCHAR *)pDLCInfo->wsProductId.c_str(),NULL,NULL);
+
+ // the license change coming in when the offer has been installed will cause this scene to refresh
+ }
+ else
+ {
+ // 4J-JEV: Fix for XB1: #165863 - XR-074: Compliance: With no active network connection user is unable to convert from Trial to Full texture pack and is not messaged why.
+ UINT uiIDA[1] = { IDS_CONFIRM_OK };
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad);
+ }
+ }
+ }
+
+#endif
#ifdef _XBOX
CMinecraftApp* pClass = (CMinecraftApp*)pParam;
@@ -5777,7 +6168,7 @@ int CMinecraftApp::ExitAndJoinFromInviteAndSaveReturned(void *pParam,int iPad,C4
uiIDA[1]=IDS_CONFIRM_CANCEL;
// Give the player a warning about the trial version of the texture pack
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, iPad,&CMinecraftApp::WarningTrialTexturePackReturned,NULL,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, iPad,&CMinecraftApp::WarningTrialTexturePackReturned,NULL);
return S_OK;
}
@@ -5797,7 +6188,7 @@ int CMinecraftApp::ExitAndJoinFromInviteDeclineSaveReturned(void *pParam,int iPa
if(result==C4JStorage::EMessage_ResultDecline)
{
#if defined(_XBOX_ONE) || defined(__ORBIS__)
- StorageManager.SetSaveDisabled(false);
+ StorageManager.SetSaveDisabled(false);
#endif
MinecraftServer::getInstance()->setSaveOnExit( false );
// flag a app action of exit and join game from invite
@@ -5919,9 +6310,9 @@ void CMinecraftApp::InitialiseTips()
// randomise then quicksort
// going to leave the multiplayer tip so it is always first
-// Only randomise the content package build
+ // Only randomise the content package build
#ifdef _CONTENT_PACKAGE
-
+
for(int i=1;i<MAX_TIPS_GAMETIP;i++)
{
m_GameTipA[i].iSortValue=TipRandom->nextInt();
@@ -6019,7 +6410,7 @@ int CMinecraftApp::GetHTMLFontSize(EHTMLFontSize size)
wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shadowColour /*= 0xFFFFFFFF*/)
{
wstring text(desc);
-
+
wchar_t replacements[64];
// We will also insert line breaks here as couldn't figure out how to get them to come through from strings.resx !
text = replaceAll(text, L"{*B*}", L"<br />" );
@@ -6094,6 +6485,8 @@ wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shado
text = replaceAll(text, L"{*CONTROLLER_ACTION_CRAFTING*}", GetActionReplacement(iPad,MINECRAFT_ACTION_CRAFTING ) );
text = replaceAll(text, L"{*CONTROLLER_ACTION_DROP*}", GetActionReplacement(iPad,MINECRAFT_ACTION_DROP ) );
text = replaceAll(text, L"{*CONTROLLER_ACTION_CAMERA*}", GetActionReplacement(iPad,MINECRAFT_ACTION_RENDER_THIRD_PERSON ) );
+ text = replaceAll(text, L"{*CONTROLLER_ACTION_MENU_PAGEDOWN*}", GetActionReplacement(iPad,ACTION_MENU_PAGEDOWN ) );
+ text = replaceAll(text, L"{*CONTROLLER_ACTION_DISMOUNT*}", GetActionReplacement(iPad,MINECRAFT_ACTION_SNEAK_TOGGLE ) );
text = replaceAll(text, L"{*CONTROLLER_VK_A*}", GetVKReplacement(VK_PAD_A) );
text = replaceAll(text, L"{*CONTROLLER_VK_B*}", GetVKReplacement(VK_PAD_B) );
text = replaceAll(text, L"{*CONTROLLER_VK_X*}", GetVKReplacement(VK_PAD_X) );
@@ -6198,20 +6591,20 @@ wstring CMinecraftApp::GetActionReplacement(int iPad, unsigned char ucAction)
else if(input &_360_JOY_BUTTON_X) replacement = L"ButtonX";
else if(input &_360_JOY_BUTTON_Y) replacement = L"ButtonY";
else if(
- (input &_360_JOY_BUTTON_LSTICK_UP) ||
- (input &_360_JOY_BUTTON_LSTICK_DOWN) ||
- (input &_360_JOY_BUTTON_LSTICK_LEFT) ||
- (input &_360_JOY_BUTTON_LSTICK_RIGHT)
- )
+ (input &_360_JOY_BUTTON_LSTICK_UP) ||
+ (input &_360_JOY_BUTTON_LSTICK_DOWN) ||
+ (input &_360_JOY_BUTTON_LSTICK_LEFT) ||
+ (input &_360_JOY_BUTTON_LSTICK_RIGHT)
+ )
{
replacement = L"ButtonLeftStick";
}
else if(
- (input &_360_JOY_BUTTON_RSTICK_LEFT) ||
- (input &_360_JOY_BUTTON_RSTICK_RIGHT) ||
- (input &_360_JOY_BUTTON_RSTICK_UP) ||
- (input &_360_JOY_BUTTON_RSTICK_DOWN)
- )
+ (input &_360_JOY_BUTTON_RSTICK_LEFT) ||
+ (input &_360_JOY_BUTTON_RSTICK_RIGHT) ||
+ (input &_360_JOY_BUTTON_RSTICK_UP) ||
+ (input &_360_JOY_BUTTON_RSTICK_DOWN)
+ )
{
replacement = L"ButtonRightStick";
}
@@ -6465,7 +6858,7 @@ HRESULT CMinecraftApp::RegisterMojangData(WCHAR *pXuidName, PlayerUID xuid, WCHA
pMojangData = new MOJANG_DATA;
ZeroMemory(pMojangData,sizeof(MOJANG_DATA));
pMojangData->eXuid=eTempXuid;
-
+
wcsncpy( pMojangData->wchSkin, pSkin, MAX_CAPENAME_SIZE);
wcsncpy( pMojangData->wchCape, pCape, MAX_CAPENAME_SIZE);
MojangData[xuid]=pMojangData;
@@ -6483,27 +6876,27 @@ HRESULT CMinecraftApp::RegisterConfigValues(WCHAR *pType, int iValue)
{
HRESULT hr=S_OK;
-// #ifdef _XBOX
-// if(pType!=NULL)
-// {
-// if(wcscmp(pType,L"XboxOneTransfer")==0)
-// {
-// if(iValue>0)
-// {
-// app.m_bTransferSavesToXboxOne=true;
-// }
-// else
-// {
-// app.m_bTransferSavesToXboxOne=false;
-// }
-// }
-// else if(wcscmp(pType,L"TransferSlotCount")==0)
-// {
-// app.m_uiTransferSlotC=iValue;
-// }
-//
-// }
-// #endif
+ // #ifdef _XBOX
+ // if(pType!=NULL)
+ // {
+ // if(wcscmp(pType,L"XboxOneTransfer")==0)
+ // {
+ // if(iValue>0)
+ // {
+ // app.m_bTransferSavesToXboxOne=true;
+ // }
+ // else
+ // {
+ // app.m_bTransferSavesToXboxOne=false;
+ // }
+ // }
+ // else if(wcscmp(pType,L"TransferSlotCount")==0)
+ // {
+ // app.m_uiTransferSlotC=iValue;
+ // }
+ //
+ // }
+ // #endif
return hr;
@@ -6630,18 +7023,18 @@ HRESULT CMinecraftApp::RegisterDLCData(eDLCContentType eType, WCHAR *pwchBannerN
{
case e_DLC_MashupPacks:
case e_DLC_TexturePacks:
- DLCTextures_PackID[iConfig]=pDLCData->wsProductId;
+ DLCTextures_PackID[iConfig]=pDLCData->wsProductId;
break;
}
if(pwchFirstSkin[0]!=0) DLCInfo_SkinName[pwchFirstSkin]=pDLCData->wsProductId;
- #ifdef _XBOX_ONE
+#ifdef _XBOX_ONE
// ignore the names, and use the product id instead
DLCInfo_Full[pDLCData->wsProductId]=pDLCData;
- #else
+#else
DLCInfo_Full[pDLCData->wsDisplayName]=pDLCData;
- #endif
+#endif
}
app.DebugPrintf("DLCInfo - type - %d, productID - %ls, name - %ls , banner - %ls, iconfig - %d, sort index - %d\n",eType,pwchProductId, pwchProductName,pwchBannerName, iConfig, uiSortIndex);
return hr;
@@ -6689,11 +7082,11 @@ HRESULT CMinecraftApp::RegisterDLCData(char *pchDLCName, unsigned int uiSortInde
app.DebugPrintf(5,"Adding DLC - %s\n",pchDLCName);
DLCInfo[pchDLCName]=pDLCData;
-// if(ullOfferID_Trial!=0ll) DLCInfo_Trial[ullOfferID_Trial]=pDLCData;
-// if(ullOfferID_Full!=0ll) DLCInfo_Full[ullOfferID_Full]=pDLCData;
-// if(pFirstSkin[0]!=0) DLCInfo_SkinName[pFirstSkin]=ullOfferID_Full;
+ // if(ullOfferID_Trial!=0ll) DLCInfo_Trial[ullOfferID_Trial]=pDLCData;
+ // if(ullOfferID_Full!=0ll) DLCInfo_Full[ullOfferID_Full]=pDLCData;
+ // if(pFirstSkin[0]!=0) DLCInfo_SkinName[pFirstSkin]=ullOfferID_Full;
-// DLCInfo[ullOfferID_Trial]=pDLCData;
+ // DLCInfo[ullOfferID_Trial]=pDLCData;
return hr;
}
@@ -6965,7 +7358,7 @@ DLC_INFO *CMinecraftApp::GetDLCInfoForProductName(WCHAR *pwchProductName)
}
++it;
}
-
+
return NULL;
}
@@ -6998,6 +7391,8 @@ void CMinecraftApp::EnterSaveNotificationSection()
EnterCriticalSection(&m_saveNotificationCriticalSection);
if( m_saveNotificationDepth++ == 0 )
{
+ if(g_NetworkManager.IsInSession()) // this can be triggered from the front end if we're downloading a save
+ {
MinecraftServer::getInstance()->broadcastStartSavingPacket();
if( g_NetworkManager.IsLocalGame() && g_NetworkManager.GetPlayerCount() == 1 )
@@ -7005,6 +7400,7 @@ void CMinecraftApp::EnterSaveNotificationSection()
app.SetXuiServerAction(ProfileManager.GetPrimaryPad(),eXuiServerAction_PauseServer,(void *)TRUE);
}
}
+ }
LeaveCriticalSection(&m_saveNotificationCriticalSection);
}
@@ -7013,6 +7409,8 @@ void CMinecraftApp::LeaveSaveNotificationSection()
EnterCriticalSection(&m_saveNotificationCriticalSection);
if( --m_saveNotificationDepth == 0 )
{
+ if(g_NetworkManager.IsInSession()) // this can be triggered from the front end if we're downloading a save
+ {
MinecraftServer::getInstance()->broadcastStopSavingPacket();
if( g_NetworkManager.IsLocalGame() && g_NetworkManager.GetPlayerCount() == 1 )
@@ -7020,6 +7418,7 @@ void CMinecraftApp::LeaveSaveNotificationSection()
app.SetXuiServerAction(ProfileManager.GetPrimaryPad(),eXuiServerAction_PauseServer,(void *)FALSE);
}
}
+ }
LeaveCriticalSection(&m_saveNotificationCriticalSection);
}
@@ -7069,12 +7468,12 @@ int CMinecraftApp::RemoteSaveThreadProc( void* lpParameter )
void CMinecraftApp::ExitGameFromRemoteSave( LPVOID lpParameter )
{
int primaryPad = ProfileManager.GetPrimaryPad();
-
+
UINT uiIDA[3];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, primaryPad,&CMinecraftApp::ExitGameFromRemoteSaveDialogReturned,NULL, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, primaryPad,&CMinecraftApp::ExitGameFromRemoteSaveDialogReturned,NULL);
}
int CMinecraftApp::ExitGameFromRemoteSaveDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
@@ -7212,12 +7611,12 @@ void CMinecraftApp::RemoveLevelFromBannedLevelList(int iPad, PlayerUID xuid, cha
{
//bool bFound=false;
//bool bRes;
-
+
// we will have retrieved the banned level list from TMS, so remove this one from it and write it back to TMS
for(AUTO_VAR(it, m_vBannedListA[iPad]->begin()); it != m_vBannedListA[iPad]->end(); )
{
PBANNEDLISTDATA pBannedListData = *it;
-
+
if(pBannedListData!=NULL)
{
#ifdef _XBOX_ONE
@@ -7327,8 +7726,8 @@ void CMinecraftApp::SetGameHostOption(eGameHostOption eVal,unsigned int uiVal)
}
-void CMinecraftApp::SetGameHostOption(unsigned int &uiHostSettings, eGameHostOption eVal,unsigned int uiVal)
- {
+void CMinecraftApp::SetGameHostOption(unsigned int &uiHostSettings, eGameHostOption eVal, unsigned int uiVal)
+{
switch(eVal)
{
case eGameHostOption_FriendsOfFriends:
@@ -7530,6 +7929,99 @@ void CMinecraftApp::SetGameHostOption(unsigned int &uiHostSettings, eGameHostOpt
uiHostSettings&=~GAME_HOST_OPTION_BITMASK_DISABLESAVE;
}
break;
+ case eGameHostOption_WasntSaveOwner:
+ if(uiVal!=0)
+ {
+ uiHostSettings|=GAME_HOST_OPTION_BITMASK_NOTOWNER;
+ }
+ else
+ {
+ // off
+ uiHostSettings&=~GAME_HOST_OPTION_BITMASK_NOTOWNER;
+ }
+ break;
+ case eGameHostOption_MobGriefing:
+ if(uiVal!=1)
+ {
+ uiHostSettings |= GAME_HOST_OPTION_BITMASK_MOBGRIEFING;
+ }
+ else
+ {
+ // off
+ uiHostSettings &= ~GAME_HOST_OPTION_BITMASK_MOBGRIEFING;
+ }
+ break;
+ case eGameHostOption_KeepInventory:
+ if(uiVal!=0)
+ {
+ uiHostSettings |= GAME_HOST_OPTION_BITMASK_KEEPINVENTORY;
+ }
+ else
+ {
+ // off
+ uiHostSettings &= ~GAME_HOST_OPTION_BITMASK_KEEPINVENTORY;
+ }
+ break;
+ case eGameHostOption_DoMobSpawning:
+ if(uiVal!=1)
+ {
+ uiHostSettings |= GAME_HOST_OPTION_BITMASK_DOMOBSPAWNING;
+ }
+ else
+ {
+ // off
+ uiHostSettings &=~ GAME_HOST_OPTION_BITMASK_DOMOBSPAWNING;
+ }
+ break;
+ case eGameHostOption_DoMobLoot:
+ if(uiVal!=1)
+ {
+ uiHostSettings |= GAME_HOST_OPTION_BITMASK_DOMOBLOOT;
+ }
+ else
+ {
+ // off
+ uiHostSettings &= ~GAME_HOST_OPTION_BITMASK_DOMOBLOOT;
+ }
+ break;
+ case eGameHostOption_DoTileDrops:
+ if(uiVal!=1)
+ {
+ uiHostSettings |= GAME_HOST_OPTION_BITMASK_DOTILEDROPS;
+ }
+ else
+ {
+ // off
+ uiHostSettings &= ~GAME_HOST_OPTION_BITMASK_DOTILEDROPS;
+ }
+ break;
+ case eGameHostOption_NaturalRegeneration:
+ if(uiVal!=1)
+ {
+ uiHostSettings |= GAME_HOST_OPTION_BITMASK_NATURALREGEN;
+ }
+ else
+ {
+ // off
+ uiHostSettings &= ~GAME_HOST_OPTION_BITMASK_NATURALREGEN;
+ }
+ break;
+ case eGameHostOption_DoDaylightCycle:
+ if(uiVal!=1)
+ {
+ uiHostSettings |= GAME_HOST_OPTION_BITMASK_DODAYLIGHTCYCLE;
+ }
+ else
+ {
+ // off
+ uiHostSettings &= ~GAME_HOST_OPTION_BITMASK_DODAYLIGHTCYCLE;
+ }
+ break;
+ case eGameHostOption_WorldSize:
+ // clear the difficulty first
+ uiHostSettings&=~GAME_HOST_OPTION_BITMASK_WORLDSIZE;
+ uiHostSettings|=(GAME_HOST_OPTION_BITMASK_WORLDSIZE & (uiVal<<GAME_HOST_OPTION_BITMASK_WORLDSIZE_BITSHIFT));
+ break;
case eGameHostOption_All:
uiHostSettings=uiVal;
break;
@@ -7563,7 +8055,12 @@ unsigned int CMinecraftApp::GetGameHostOption(unsigned int uiHostSettings, eGame
break;
case eGameHostOption_Tutorial:
// special case - tutorial is offline, but we want the gamertag option, and set Easy mode, structures on, fire on, tnt on, pvp on, trust players on
- return ((uiHostSettings&GAME_HOST_OPTION_BITMASK_GAMERTAGS)|GAME_HOST_OPTION_BITMASK_TRUSTPLAYERS|GAME_HOST_OPTION_BITMASK_FIRESPREADS|GAME_HOST_OPTION_BITMASK_TNT|GAME_HOST_OPTION_BITMASK_PVP|GAME_HOST_OPTION_BITMASK_STRUCTURES|1);
+ return ((uiHostSettings&GAME_HOST_OPTION_BITMASK_GAMERTAGS)|
+ GAME_HOST_OPTION_BITMASK_TRUSTPLAYERS|
+ GAME_HOST_OPTION_BITMASK_FIRESPREADS|
+ GAME_HOST_OPTION_BITMASK_TNT|
+ GAME_HOST_OPTION_BITMASK_PVP|
+ GAME_HOST_OPTION_BITMASK_STRUCTURES|1);
break;
case eGameHostOption_LevelType:
return (uiHostSettings&GAME_HOST_OPTION_BITMASK_LEVELTYPE);
@@ -7607,6 +8104,25 @@ unsigned int CMinecraftApp::GetGameHostOption(unsigned int uiHostSettings, eGame
case eGameHostOption_DisableSaving:
return (uiHostSettings&GAME_HOST_OPTION_BITMASK_DISABLESAVE);
break;
+ case eGameHostOption_WasntSaveOwner:
+ return (uiHostSettings&GAME_HOST_OPTION_BITMASK_NOTOWNER);
+ case eGameHostOption_WorldSize:
+ return (uiHostSettings&GAME_HOST_OPTION_BITMASK_WORLDSIZE) >> GAME_HOST_OPTION_BITMASK_WORLDSIZE_BITSHIFT;
+ case eGameHostOption_MobGriefing:
+ return !(uiHostSettings&GAME_HOST_OPTION_BITMASK_MOBGRIEFING);
+ case eGameHostOption_KeepInventory:
+ return (uiHostSettings&GAME_HOST_OPTION_BITMASK_KEEPINVENTORY);
+ case eGameHostOption_DoMobSpawning:
+ return !(uiHostSettings&GAME_HOST_OPTION_BITMASK_DOMOBSPAWNING);
+ case eGameHostOption_DoMobLoot:
+ return !(uiHostSettings&GAME_HOST_OPTION_BITMASK_DOMOBLOOT);
+ case eGameHostOption_DoTileDrops:
+ return !(uiHostSettings&GAME_HOST_OPTION_BITMASK_DOTILEDROPS);
+ case eGameHostOption_NaturalRegeneration:
+ return !(uiHostSettings&GAME_HOST_OPTION_BITMASK_NATURALREGEN);
+ case eGameHostOption_DoDaylightCycle:
+ return !(uiHostSettings&GAME_HOST_OPTION_BITMASK_DODAYLIGHTCYCLE);
+ break;
}
return false;
@@ -7614,11 +8130,18 @@ unsigned int CMinecraftApp::GetGameHostOption(unsigned int uiHostSettings, eGame
bool CMinecraftApp::CanRecordStatsAndAchievements()
{
+ bool isTutorial = Minecraft::GetInstance() != NULL && Minecraft::GetInstance()->isTutorial();
// 4J Stu - All of these options give the host player some advantage, so should not allow achievements
return !(app.GetGameHostOption(eGameHostOption_HasBeenInCreative) ||
app.GetGameHostOption(eGameHostOption_HostCanBeInvisible) ||
app.GetGameHostOption(eGameHostOption_HostCanChangeHunger) ||
- app.GetGameHostOption(eGameHostOption_HostCanFly));
+ app.GetGameHostOption(eGameHostOption_HostCanFly) ||
+ app.GetGameHostOption(eGameHostOption_WasntSaveOwner) ||
+ !app.GetGameHostOption(eGameHostOption_MobGriefing) ||
+ app.GetGameHostOption(eGameHostOption_KeepInventory) ||
+ !app.GetGameHostOption(eGameHostOption_DoMobSpawning) ||
+ (!app.GetGameHostOption(eGameHostOption_DoDaylightCycle) && !isTutorial )
+ );
}
void CMinecraftApp::processSchematics(LevelChunk *levelChunk)
@@ -7723,8 +8246,8 @@ void CMinecraftApp::GetImageTextData(PBYTE pbImageData, DWORD dwImageBytes,unsig
bHostOptionsRead = true;
// read the host options value
unsigned int uiValueC=0;
- unsigned char pszHostOptions[8]; // Hex representation of unsigned int
- ZeroMemory(&pszHostOptions,8);
+ unsigned char pszHostOptions[9]; // Hex representation of unsigned int
+ ZeroMemory(&pszHostOptions,9);
while(*pszKeyword!=0 && (pszKeyword < ucPtr + uiCount + uiChunkLen) && uiValueC < 8)
{
pszHostOptions[uiValueC++]=*pszKeyword;
@@ -7740,8 +8263,8 @@ void CMinecraftApp::GetImageTextData(PBYTE pbImageData, DWORD dwImageBytes,unsig
{
// read the texture pack value
unsigned int uiValueC=0;
- unsigned char pszTexturePack[8]; // Hex representation of unsigned int
- ZeroMemory(&pszTexturePack,8);
+ unsigned char pszTexturePack[9]; // Hex representation of unsigned int
+ ZeroMemory(&pszTexturePack,9);
while(*pszKeyword!=0 && (pszKeyword < ucPtr + uiCount + uiChunkLen) && uiValueC < 8)
{
pszTexturePack[uiValueC++]=*pszKeyword;
@@ -7830,7 +8353,7 @@ bool CMinecraftApp::GetTerrainFeaturePosition(_eTerrainFeatureType eType,int *pX
for(AUTO_VAR(it, m_vTerrainFeatures.begin()); it < m_vTerrainFeatures.end(); ++it)
{
FEATURE_DATA *pFeatureData=*it;
-
+
if(pFeatureData->eTerrainFeature==eType)
{
*pX=pFeatureData->x;
@@ -7936,7 +8459,14 @@ wstring CMinecraftApp::getEntityName(eINSTANCEOF type)
// 4J-PB - fix for #107167 - Customer Encountered: TU12: Content: UI: There is no information what killed Player after being slain by Iron Golem.
case eTYPE_VILLAGERGOLEM:
return app.GetString(IDS_IRONGOLEM);
-
+ case eTYPE_HORSE:
+ return app.GetString(IDS_HORSE);
+ case eTYPE_WITCH:
+ return app.GetString(IDS_WITCH);
+ case eTYPE_WITHERBOSS:
+ return app.GetString(IDS_WITHER);
+ case eTYPE_BAT:
+ return app.GetString(IDS_BAT);
};
return L"";
@@ -8015,29 +8545,29 @@ unsigned int CMinecraftApp::AddTMSPPFileTypeRequest(eDLCContentType eType, bool
for(AUTO_VAR(it, m_TMSPPDownloadQueue.begin()); it != m_TMSPPDownloadQueue.end(); ++it)
{
- TMSPPRequest *pCurrent = *it;
+ TMSPPRequest *pCurrent = *it;
- if(pCurrent->eType==eType)
- {
- if(!(pCurrent->eState == e_TMS_ContentState_Retrieving || pCurrent->eState == e_TMS_ContentState_Retrieved))
- {
- // promote
- if(bPromote)
- {
- m_TMSPPDownloadQueue.erase(m_TMSPPDownloadQueue.begin()+iPosition);
- m_TMSPPDownloadQueue.insert(m_TMSPPDownloadQueue.begin(),pCurrent);
- bPromoted=true;
- }
- }
- }
- iPosition++;
+ if(pCurrent->eType==eType)
+ {
+ if(!(pCurrent->eState == e_TMS_ContentState_Retrieving || pCurrent->eState == e_TMS_ContentState_Retrieved))
+ {
+ // promote
+ if(bPromote)
+ {
+ m_TMSPPDownloadQueue.erase(m_TMSPPDownloadQueue.begin()+iPosition);
+ m_TMSPPDownloadQueue.insert(m_TMSPPDownloadQueue.begin(),pCurrent);
+ bPromoted=true;
+ }
+ }
+ }
+ iPosition++;
}
if(bPromoted)
{
- // re-ordered the list, so leave now
- LeaveCriticalSection(&csTMSPPDownloadQueue);
- return 0;
+ // re-ordered the list, so leave now
+ LeaveCriticalSection(&csTMSPPDownloadQueue);
+ return 0;
}
*/
@@ -8185,7 +8715,7 @@ unsigned int CMinecraftApp::AddTMSPPFileTypeRequest(eDLCContentType eType, bool
//if(iIndex!=-1)
{
bool bPresent = app.IsFileInMemoryTextures(cString);
-
+
if(!bPresent)
{
// this may already be present in the vector because of a previous trial/full offer
@@ -8329,7 +8859,7 @@ int CMinecraftApp::TMSPPFileReturned(LPVOID pParam,int iPad,int iUserData,C4JSto
#if defined(_XBOX) || defined(_WINDOWS64)
char szFile[MAX_TMSFILENAME_SIZE];
wcstombs(szFile,pCurrent->wchFilename,MAX_TMSFILENAME_SIZE);
-
+
if(strcmp(szFilename,szFile)==0)
#elif _XBOX_ONE
@@ -8343,7 +8873,7 @@ int CMinecraftApp::TMSPPFileReturned(LPVOID pParam,int iPad,int iUserData,C4JSto
{
#ifdef _XBOX_ONE
-
+
switch(pCurrent->eType)
{
@@ -8365,10 +8895,10 @@ int CMinecraftApp::TMSPPFileReturned(LPVOID pParam,int iPad,int iUserData,C4JSto
if(pFileData->pbData[0]==0x89)
{
// 4J-PB - we need to allocate memory for the file data and copy into it, since the current data is a reference into the blob download memory
- PBYTE pbData = new BYTE [pFileData->dwSize];
- memcpy(pbData,pFileData->pbData,pFileData->dwSize);
-
- pClass->m_vTMSPPData.push_back(pbData);
+ PBYTE pbData = new BYTE [pFileData->dwSize];
+ memcpy(pbData,pFileData->pbData,pFileData->dwSize);
+
+ pClass->m_vTMSPPData.push_back(pbData);
app.DebugPrintf("Got image data - %ls\n",pCurrent->wchFilename);
app.AddMemoryTextureFile(pCurrent->wchFilename, pbData, pFileData->dwSize);
}
@@ -8407,7 +8937,7 @@ int CMinecraftApp::TMSPPFileReturned(LPVOID pParam,int iPad,int iUserData,C4JSto
}
break;
}
-
+
}
LeaveCriticalSection(&pClass->csTMSPPDownloadQueue);
@@ -8661,7 +9191,7 @@ void CMinecraftApp::SetAdditionalSkinBoxes(DWORD dwSkinID, SKIN_BOX *SkinBoxA, D
m_AdditionalModelParts.insert( std::pair<DWORD, vector<ModelPart *> *>(dwSkinID, pvModelPart) );
m_AdditionalSkinBoxes.insert( std::pair<DWORD, vector<SKIN_BOX *> *>(dwSkinID, pvSkinBoxes) );
-
+
LeaveCriticalSection( &csAdditionalSkinBoxes );
LeaveCriticalSection( &csAdditionalModelParts );
@@ -8725,7 +9255,7 @@ vector<SKIN_BOX *> *CMinecraftApp::GetAdditionalSkinBoxes(DWORD dwSkinID)
pvSkinBoxes = (*it).second;
}
}
-
+
LeaveCriticalSection( &csAdditionalSkinBoxes );
return pvSkinBoxes;
}
@@ -8770,14 +9300,14 @@ DWORD CMinecraftApp::getSkinIdFromPath(const wstring &skin)
{
bool dlcSkin = false;
unsigned int skinId = 0;
-
+
if(skin.size() >= 14)
{
dlcSkin = skin.substr(0,3).compare(L"dlc") == 0;
wstring skinValue = skin.substr(7,skin.size());
skinValue = skinValue.substr(0,skinValue.find_first_of(L'.'));
-
+
std::wstringstream ss;
// 4J Stu - dlc skins are numbered using decimal to make it easier for artists/people to number manually
// Everything else is numbered using hex
@@ -8801,7 +9331,7 @@ wstring CMinecraftApp::getSkinPathFromId(DWORD skinId)
{
// 4J Stu - DLC skins are numbered using decimal rather than hex to make it easier to number manually
swprintf(chars, 256, L"dlcskin%08d.png", GET_DLC_SKIN_ID_FROM_BITMASK(skinId));
-
+
}
else
{
@@ -8822,6 +9352,61 @@ wstring CMinecraftApp::getSkinPathFromId(DWORD skinId)
int CMinecraftApp::TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
+
+
+#if defined __PSVITA__ || defined __PS3__ || defined __ORBIS__
+ if(result==C4JStorage::EMessage_ResultAccept)
+ {
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if( pMinecraft->skins->selectTexturePackById(app.GetRequiredTexturePackID()) )
+ {
+ // it's been installed already
+ }
+ else
+ {
+ // we need to enable background downloading for the DLC
+ XBackgroundDownloadSetMode(XBACKGROUND_DOWNLOAD_MODE_ALWAYS_ALLOW);
+ SONYDLC *pSONYDLCInfo=app.GetSONYDLCInfo(app.GetRequiredTexturePackID());
+ if(pSONYDLCInfo!=NULL)
+ {
+ char chName[42];
+ char chKeyName[20];
+ char chSkuID[SCE_NP_COMMERCE2_SKU_ID_LEN];
+
+ memset(chSkuID,0,SCE_NP_COMMERCE2_SKU_ID_LEN);
+ // we have to retrieve the skuid from the store info, it can't be hardcoded since Sony may change it.
+ // So we assume the first sku for the product is the one we want
+ // MGH - keyname in the DLC file is 16 chars long, but there's no space for a NULL terminating char
+ memset(chKeyName, 0, sizeof(chKeyName));
+ strncpy(chKeyName, pSONYDLCInfo->chDLCKeyname, 16);
+
+ #ifdef __ORBIS__
+ strcpy(chName, chKeyName);
+ #else
+ sprintf(chName,"%s-%s",app.GetCommerceCategory(),chKeyName);
+ #endif
+ app.GetDLCSkuIDFromProductList(chName,chSkuID);
+ // 4J-PB - need to check for an empty store
+ if(app.CheckForEmptyStore(iPad)==false)
+ {
+ if(app.DLCAlreadyPurchased(chSkuID))
+ {
+ app.DownloadAlreadyPurchased(chSkuID);
+ }
+ else
+ {
+ app.Checkout(chSkuID);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ app.DebugPrintf("Continuing without installing texture pack\n");
+ }
+#endif
+
#ifdef _XBOX
if(result!=C4JStorage::EMessage_Cancelled)
{
@@ -8993,7 +9578,7 @@ bool CMinecraftApp::IsLocalMultiplayerAvailable()
void CMinecraftApp::getLocale(vector<wstring> &vecWstrLocales)
{
vector<eMCLang> locales;
-
+
DWORD dwSystemLanguage = XGetLanguage( );
// 4J-PB - restrict the 360 language until we're ready to have them in
@@ -9101,6 +9686,8 @@ void CMinecraftApp::getLocale(vector<wstring> &vecWstrLocales)
case XC_LOCALE_CHILE:
case XC_LOCALE_COLOMBIA:
case XC_LOCALE_UNITED_STATES:
+ case XC_LOCALE_LATIN_AMERICA:
+ locales.push_back(eMCLang_laLAS);
locales.push_back(eMCLang_esMX);
break;
default://XC_LOCALE_SPAIN
@@ -9127,6 +9714,7 @@ void CMinecraftApp::getLocale(vector<wstring> &vecWstrLocales)
default:
break;
}
+ locales.push_back(eMCLang_hant);
locales.push_back(eMCLang_zhCHT);
break;
case XC_LANGUAGE_PORTUGUESE :
@@ -9170,26 +9758,21 @@ void CMinecraftApp::getLocale(vector<wstring> &vecWstrLocales)
{
case XC_LOCALE_SINGAPORE:
locales.push_back(eMCLang_zhSG);
- break;
+ break;
default:
break;
}
- locales.push_back(eMCLang_zhCHS);
+ locales.push_back(eMCLang_hans);
+ locales.push_back(eMCLang_csCS);
locales.push_back(eMCLang_zhCN);
break;
-
#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ || defined _DURANGO
case XC_LANGUAGE_DANISH:
locales.push_back(eMCLang_daDA);
locales.push_back(eMCLang_daDK);
break;
- case XC_LANGUAGE_LATINAMERICANSPANISH:
- locales.push_back(eMCLang_laLAS);
- locales.push_back(eMCLang_esES);
- break;
-
case XC_LANGUAGE_FINISH :
locales.push_back(eMCLang_fiFI);
break;
@@ -9238,7 +9821,7 @@ DWORD CMinecraftApp::get_xcLang(WCHAR *pwchLocale)
void CMinecraftApp::LocaleAndLanguageInit()
{
m_localeA[eMCLang_zhCHT] =L"zh-CHT";
- m_localeA[eMCLang_zhCHS] =L"zh-CHS";
+ m_localeA[eMCLang_csCS] =L"cs-CS";
m_localeA[eMCLang_laLAS] =L"la-LAS";
m_localeA[eMCLang_null] =L"en-EN";
m_localeA[eMCLang_enUS] =L"en-US";
@@ -9294,14 +9877,17 @@ void CMinecraftApp::LocaleAndLanguageInit()
m_localeA[eMCLang_esCO] =L"es-CO";
m_localeA[eMCLang_esUS] =L"es-US";
m_localeA[eMCLang_svSE] =L"sv-SE";
-
+
m_localeA[eMCLang_csCZ] =L"cs-CZ";
m_localeA[eMCLang_elGR] =L"el-GR";
m_localeA[eMCLang_nnNO] =L"nn-NO";
m_localeA[eMCLang_skSK] =L"sk-SK";
- m_eMCLangA[L"zh-CHT"] =eMCLang_zhCHS;
- m_eMCLangA[L"zh-CHS"] =eMCLang_zhCHT;
+ m_localeA[eMCLang_hans] =L"zh-HANS";
+ m_localeA[eMCLang_hant] =L"zh-HANT";
+
+ m_eMCLangA[L"zh-CHT"] =eMCLang_zhCHT;
+ m_eMCLangA[L"cs-CS"] =eMCLang_csCS;
m_eMCLangA[L"la-LAS"] =eMCLang_laLAS;
m_eMCLangA[L"en-EN"] =eMCLang_null;
m_eMCLangA[L"en-US"] =eMCLang_enUS;
@@ -9363,8 +9949,11 @@ void CMinecraftApp::LocaleAndLanguageInit()
m_eMCLangA[L"nn-NO"] =eMCLang_nnNO;
m_eMCLangA[L"sk-SK"] =eMCLang_skSK;
+ m_eMCLangA[L"zh-HANS"] =eMCLang_hans;
+ m_eMCLangA[L"zh-HANT"] =eMCLang_hant;
+
m_xcLangA[L"zh-CHT"] =XC_LOCALE_CHINA;
- m_xcLangA[L"zh-CHS"] =XC_LOCALE_CHINA;
+ m_xcLangA[L"cs-CS"] =XC_LOCALE_CHINA;
m_xcLangA[L"en-EN"] =XC_LOCALE_UNITED_STATES;
m_xcLangA[L"en-US"] =XC_LOCALE_UNITED_STATES;
m_xcLangA[L"en-GB"] =XC_LOCALE_GREAT_BRITAIN;
@@ -9428,6 +10017,9 @@ void CMinecraftApp::LocaleAndLanguageInit()
m_xcLangA[L"cs-CZ"] =XC_LOCALE_CZECH_REPUBLIC;
m_xcLangA[L"el-GR"] =XC_LOCALE_GREECE;
m_xcLangA[L"sk-SK"] =XC_LOCALE_SLOVAK_REPUBLIC;
+
+ m_xcLangA[L"zh-HANS"] =XC_LOCALE_CHINA;
+ m_xcLangA[L"zh-HANT"] =XC_LOCALE_CHINA;
}
void CMinecraftApp::SetTickTMSDLCFiles(bool bVal)
@@ -9436,17 +10028,15 @@ void CMinecraftApp::SetTickTMSDLCFiles(bool bVal)
m_bTickTMSDLCFiles=bVal;
}
-wstring CMinecraftApp::getFilePath(DWORD packId, wstring filename, bool bAddDataFolder)
+wstring CMinecraftApp::getFilePath(DWORD packId, wstring filename, bool bAddDataFolder, wstring mountPoint)
{
-#ifdef _XBOX
- wstring path = getRootPath(packId, true, bAddDataFolder) + filename;
+ wstring path = getRootPath(packId, true, bAddDataFolder, mountPoint) + filename;
File f(path);
if(f.exists())
{
return path;
}
-#endif
- return getRootPath(packId, false, true) + filename;
+ return getRootPath(packId, false, true, mountPoint) + filename;
}
#ifdef _XBOX
@@ -9456,13 +10046,16 @@ enum ETitleUpdateTexturePacks
eTUTP_MassEffect = 0x400,
eTUTP_Skyrim = 0x401,
eTUTP_Halo = 0x402,
+ eTUTP_Festive = 0x405,
eTUTP_Plastic = 0x801,
eTUTP_Candy = 0x802,
eTUTP_Fantasy = 0x803,
eTUTP_Halloween = 0x804,
eTUTP_Natural = 0x805,
- eTUTP_City = 0x01000806 // 4J Stu - The released City pack had a sub-pack ID
+ eTUTP_City = 0x01000806, // 4J Stu - The released City pack had a sub-pack ID
+ eTUTP_Cartoon = 0x807,
+ eTUTP_Steampunk = 0x01000808, // 4J Stu - The released Steampunk pack had a sub-pack ID
};
#ifdef _TU_BUILD
@@ -9470,11 +10063,41 @@ wstring titleUpdateTexturePackRoot = L"UPDATE:\\res\\DLC\\";
#else
wstring titleUpdateTexturePackRoot = L"GAME:\\res\\TitleUpdate\\DLC\\";
#endif
+#else
+enum ETitleUpdateTexturePacks
+{
+ //eTUTP_MassEffect = 0x400,
+ //eTUTP_Skyrim = 0x401,
+ //eTUTP_Halo = 0x402,
+ //eTUTP_Festive = 0x405,
+
+ //eTUTP_Plastic = 0x801,
+ //eTUTP_Candy = 0x802,
+ //eTUTP_Fantasy = 0x803,
+ eTUTP_Halloween = 0x804,
+ //eTUTP_Natural = 0x805,
+ //eTUTP_City = 0x01000806, // 4J Stu - The released City pack had a sub-pack ID
+ //eTUTP_Cartoon = 0x807,
+ //eTUTP_Steampunk = 0x01000808, // 4J Stu - The released Steampunk pack had a sub-pack ID
+};
+
+#ifdef _WINDOWS64
+wstring titleUpdateTexturePackRoot = L"Windows64\\DLC\\";
+#elif defined(__ORBIS__)
+wstring titleUpdateTexturePackRoot = L"/app0/orbis/CU/DLC/";
+#elif defined(__PSVITA__)
+wstring titleUpdateTexturePackRoot = L"PSVita/CU/DLC/";
+#elif defined(__PS3__)
+wstring titleUpdateTexturePackRoot = L"PS3/CU/DLC/";
+#else
+wstring titleUpdateTexturePackRoot = L"CU\\DLC\\";
+#endif
+
#endif
-wstring CMinecraftApp::getRootPath(DWORD packId, bool allowOverride, bool bAddDataFolder)
+wstring CMinecraftApp::getRootPath(DWORD packId, bool allowOverride, bool bAddDataFolder, wstring mountPoint)
{
- wstring path = L"TPACK:";
+ wstring path = mountPoint;
#ifdef _XBOX
if(allowOverride)
{
@@ -9489,6 +10112,9 @@ wstring CMinecraftApp::getRootPath(DWORD packId, bool allowOverride, bool bAddDa
case eTUTP_Halo:
path = titleUpdateTexturePackRoot + L"Halo";
break;
+ case eTUTP_Festive:
+ path = titleUpdateTexturePackRoot + L"Festive";
+ break;
case eTUTP_Plastic:
path = titleUpdateTexturePackRoot + L"Plastic";
break;
@@ -9507,11 +10133,32 @@ wstring CMinecraftApp::getRootPath(DWORD packId, bool allowOverride, bool bAddDa
case eTUTP_City:
path = titleUpdateTexturePackRoot + L"City";
break;
+ case eTUTP_Cartoon:
+ path = titleUpdateTexturePackRoot + L"Cartoon";
+ break;
+ case eTUTP_Steampunk:
+ path = titleUpdateTexturePackRoot + L"Steampunk";
+ break;
};
File folder(path);
if(!folder.exists())
{
- path = L"TPACK:";
+ path = mountPoint;
+ }
+ }
+#else
+ if(allowOverride)
+ {
+ switch(packId)
+ {
+ case eTUTP_Halloween:
+ path = titleUpdateTexturePackRoot + L"Halloween Texture Pack";
+ break;
+ };
+ File folder(path);
+ if(!folder.exists())
+ {
+ path = mountPoint;
}
}
#endif
@@ -9524,6 +10171,7 @@ wstring CMinecraftApp::getRootPath(DWORD packId, bool allowOverride, bool bAddDa
{
return path + L"\\";
}
+
}
#ifdef _XBOX_ONE
diff --git a/Minecraft.Client/Common/Consoles_App.h b/Minecraft.Client/Common/Consoles_App.h
index 14356010..ec36b765 100644
--- a/Minecraft.Client/Common/Consoles_App.h
+++ b/Minecraft.Client/Common/Consoles_App.h
@@ -5,11 +5,11 @@ using namespace std;
#include "Audio/Consoles_SoundEngine.h"
#include <xuiapp.h>
-#include "..\Common\Tutorial\TutorialEnum.h"
+#include ".\Tutorial\TutorialEnum.h"
#ifdef _XBOX
-#include "..\Common\XUI\XUI_Helper.h"
-#include "..\Common\XUI\XUI_HelpCredits.h"
+#include ".\XUI\XUI_Helper.h"
+#include ".\XUI\XUI_HelpCredits.h"
#endif
#include "UI\UIStructs.h"
@@ -17,9 +17,9 @@ using namespace std;
#include <xsocialpost.h>
#include "..\StringTable.h"
-#include "..\Common\DLC\DLCManager.h"
-#include "..\Common\GameRules\ConsoleGameRulesConstants.h"
-#include "..\Common\GameRules\GameRuleManager.h"
+#include ".\DLC\DLCManager.h"
+#include ".\GameRules\ConsoleGameRulesConstants.h"
+#include ".\GameRules\GameRuleManager.h"
#include "..\SkinBox.h"
#include "..\ArchiveFile.h"
@@ -39,6 +39,11 @@ class Container;
class DispenserTileEntity;
class SignTileEntity;
class BrewingStandTileEntity;
+class CommandBlockEntity;
+class HopperTileEntity;
+class MinecartHopper;
+class EntityHorse;
+class BeaconTileEntity;
class LocalPlayer;
class DLCPack;
class LevelRuleset;
@@ -87,9 +92,9 @@ public:
#ifdef _EXTENDED_ACHIEVEMENTS
/* 4J-JEV:
- * We need more space in the profile data because of the new achievements and statistics
- * necessary for the new expanded achievement set.
- */
+ * We need more space in the profile data because of the new achievements and statistics
+ * necessary for the new expanded achievement set.
+ */
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 2*972; // per user
#else
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 972; // per user
@@ -108,7 +113,7 @@ public:
static const int USER_RR = 5;
static const int USER_SR = 6;
static const int USER_UI = 7; // 4J Stu - This also makes it appear on the UI console
-
+
void HandleButtonPresses();
bool IntroRunning() { return m_bIntroRunning;}
void SetIntroRunning(bool bSet) {m_bIntroRunning=bSet;}
@@ -127,23 +132,30 @@ public:
int GetLocalPlayerCount(void);
bool LoadInventoryMenu(int iPad,shared_ptr<LocalPlayer> player, bool bNavigateBack=false);
bool LoadCreativeMenu(int iPad,shared_ptr<LocalPlayer> player,bool bNavigateBack=false);
- bool LoadEnchantingMenu(int iPad,shared_ptr<Inventory> inventory, int x, int y, int z, Level *level);
+ bool LoadEnchantingMenu(int iPad,shared_ptr<Inventory> inventory, int x, int y, int z, Level *level, const wstring &name);
bool LoadFurnaceMenu(int iPad,shared_ptr<Inventory> inventory, shared_ptr<FurnaceTileEntity> furnace);
bool LoadBrewingStandMenu(int iPad,shared_ptr<Inventory> inventory, shared_ptr<BrewingStandTileEntity> brewingStand);
bool LoadContainerMenu(int iPad,shared_ptr<Container> inventory, shared_ptr<Container> container);
bool LoadTrapMenu(int iPad,shared_ptr<Container> inventory, shared_ptr<DispenserTileEntity> trap);
bool LoadCrafting2x2Menu(int iPad,shared_ptr<LocalPlayer> player);
bool LoadCrafting3x3Menu(int iPad,shared_ptr<LocalPlayer> player, int x, int y, int z);
+ bool LoadFireworksMenu(int iPad,shared_ptr<LocalPlayer> player, int x, int y, int z);
bool LoadSignEntryMenu(int iPad,shared_ptr<SignTileEntity> sign);
bool LoadRepairingMenu(int iPad,shared_ptr<Inventory> inventory, Level *level, int x, int y, int z);
- bool LoadTradingMenu(int iPad, shared_ptr<Inventory> inventory, shared_ptr<Merchant> trader, Level *level);
+ bool LoadTradingMenu(int iPad, shared_ptr<Inventory> inventory, shared_ptr<Merchant> trader, Level *level, const wstring &name);
+
+ bool LoadCommandBlockMenu(int iPad, shared_ptr<CommandBlockEntity> commandBlock) { return false; }
+ bool LoadHopperMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<HopperTileEntity> hopper);
+ bool LoadHopperMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<MinecartHopper> hopper);
+ bool LoadHorseMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<Container> container, shared_ptr<EntityHorse> horse);
+ bool LoadBeaconMenu(int iPad ,shared_ptr<Inventory> inventory, shared_ptr<BeaconTileEntity> beacon);
bool GetTutorialMode() { return m_bTutorialMode;}
void SetTutorialMode(bool bSet) {m_bTutorialMode=bSet;}
void SetSpecialTutorialCompletionFlag(int iPad, int index);
- static LPCWSTR GetString(int iID);
+ static LPCWSTR GetString(int iID);
eGameMode GetGameMode() { return m_eGameMode;}
void SetGameMode(eGameMode eMode) { m_eGameMode=eMode;}
@@ -159,7 +171,7 @@ public:
void SetXuiServerAction(int iPad, eXuiServerAction action, LPVOID param = NULL) {m_eXuiServerAction[iPad]=action; m_eXuiServerActionParam[iPad] = param;}
eXuiServerAction GetGlobalXuiServerAction() {return m_eGlobalXuiServerAction;}
void SetGlobalXuiServerAction(eXuiServerAction action) {m_eGlobalXuiServerAction=action;}
-
+
DisconnectPacket::eDisconnectReason GetDisconnectReason() { return m_disconnectReason; }
void SetDisconnectReason(DisconnectPacket::eDisconnectReason bVal) { m_disconnectReason = bVal; }
@@ -206,6 +218,7 @@ public:
static int OldProfileVersionCallback(LPVOID pParam,unsigned char *pucData, const unsigned short usVersion, const int iPad);
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ )
+ wstring toStringOptionsStatus(const C4JStorage::eOptionsCallback &eStatus);
static int DefaultOptionsCallback(LPVOID pParam,C4JStorage::PROFILESETTINGS *pSettings, const int iPad);
int SetDefaultOptions(C4JStorage::PROFILESETTINGS *pSettings,const int iPad,bool bWriteProfile=true);
#ifdef __ORBIS__
@@ -224,7 +237,7 @@ public:
#endif
virtual void SetRichPresenceContext(int iPad, int contextId) = 0;
-
+
void SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucVal);
unsigned char GetGameSettings(int iPad,eGameSetting eVal);
unsigned char GetGameSettings(eGameSetting eVal); // for the primary pad
@@ -247,7 +260,8 @@ public:
// Minecraft language select
void SetMinecraftLanguage(int iPad, unsigned char ucLanguage);
unsigned char GetMinecraftLanguage(int iPad);
-
+ void SetMinecraftLocale(int iPad, unsigned char ucLanguage);
+ unsigned char GetMinecraftLocale(int iPad);
// 4J-PB - set a timer when the user navigates the quickselect, so we can bring the opacity back to defaults for a short time
unsigned int GetOpacityTimer(int iPad) { return m_uiOpacityCountDown[iPad]; }
@@ -301,9 +315,11 @@ public:
#endif
#ifdef _DEBUG_MENUS_ENABLED
- bool DebugSettingsOn() { return m_bDebugOptions;}
+ bool DebugSettingsOn() { return m_bDebugOptions;}
+ bool DebugArtToolsOn();
#else
- bool DebugSettingsOn() { return false;}
+ bool DebugSettingsOn() { return false;}
+ bool DebugArtToolsOn() { return false;}
#endif
void SetDebugSequence(const char *pchSeq);
static int DebugInputCallback(LPVOID pParam);
@@ -424,10 +440,10 @@ public:
byteArray getArchiveFile(const wstring &filename);
private:
-
+
static int BannedLevelDialogReturned(void *pParam,int iPad,const C4JStorage::EMessageResult);
static int TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
-
+
VBANNEDLIST *m_vBannedListA[XUSER_MAX_COUNT];
void HandleButtonPresses(int iPad);
@@ -440,7 +456,7 @@ private:
// Container scene for some menu
-// CXuiScene debugContainerScene;
+ // CXuiScene debugContainerScene;
//bool m_bSplitScreenEnabled;
@@ -482,14 +498,14 @@ public:
static const DWORD m_dwOfferID = 0x00000001;
-// timer
+ // timer
void InitTime();
void UpdateTime();
// trial timer
void SetTrialTimerStart(void);
float getTrialTimer(void);
-
+
// notifications from the game for qnet
VNOTIFICATIONS *GetNotifications() {return &m_vNotifications;}
@@ -599,7 +615,7 @@ public:
unsigned int GetDLCCreditsCount();
SCreditTextItemDef * GetDLCCredits(int iIndex);
-// TMS
+ // TMS
void ReadDLCFileFromTMS(int iPad,eTMSAction action, bool bCallback=false);
void ReadXuidsFileFromTMS(int iPad,eTMSAction action,bool bCallback=false);
@@ -633,8 +649,8 @@ private:
static unordered_map<ULONGLONG,DLC_INFO * > DLCInfo_Full; // full offerid, dlc_info
static unordered_map<wstring, ULONGLONG > DLCInfo_SkinName; // skin name, full offer id
#endif
-// bool m_bRead_TMS_XUIDS_XML; // track whether we have already read the TMS xuids.xml file
-// bool m_bRead_TMS_DLCINFO_XML; // track whether we have already read the TMS DLC.xml file
+ // bool m_bRead_TMS_XUIDS_XML; // track whether we have already read the TMS xuids.xml file
+ // bool m_bRead_TMS_DLCINFO_XML; // track whether we have already read the TMS DLC.xml file
bool m_bDefaultCapeInstallAttempted; // have we attempted to install the default cape from tms
@@ -651,13 +667,13 @@ public:
XUSER_SIGNIN_INFO m_currentSigninInfo[XUSER_MAX_COUNT];
//void OverrideFontRenderer(bool set, bool immediate = true);
-// void ToggleFontRenderer() { OverrideFontRenderer(!m_bFontRendererOverridden,false); }
+ // void ToggleFontRenderer() { OverrideFontRenderer(!m_bFontRendererOverridden,false); }
BANNEDLIST BannedListA[XUSER_MAX_COUNT];
private:
-// XUI_FontRenderer *m_fontRenderer;
-// bool m_bFontRendererOverridden;
-// bool m_bOverrideFontRenderer;
+ // XUI_FontRenderer *m_fontRenderer;
+ // bool m_bFontRendererOverridden;
+ // bool m_bOverrideFontRenderer;
bool m_bRead_BannedListA[XUSER_MAX_COUNT];
@@ -667,7 +683,7 @@ private:
public:
void SetBanListCheck(int iPad,bool bVal) {m_BanListCheck[iPad]=bVal;}
bool GetBanListCheck(int iPad) { return m_BanListCheck[iPad];}
-// AUTOSAVE
+ // AUTOSAVE
public:
void SetAutosaveTimerTime(void);
bool AutosaveDue(void);
@@ -685,6 +701,11 @@ private:
unsigned int m_uiGameHostSettings;
static unsigned char m_szPNG[8];
+#ifdef _LARGE_WORLDS
+ unsigned int m_GameNewWorldSize;
+ bool m_bGameNewWorldSizeUseMoat;
+ unsigned int m_GameNewHellScale;
+#endif
unsigned int FromBigEndian(unsigned int uiValue);
public:
@@ -695,6 +716,13 @@ public:
unsigned int GetGameHostOption(eGameHostOption eVal);
unsigned int GetGameHostOption(unsigned int uiHostSettings, eGameHostOption eVal);
+#ifdef _LARGE_WORLDS
+ void SetGameNewWorldSize(unsigned int newSize, bool useMoat) { m_GameNewWorldSize = newSize; m_bGameNewWorldSizeUseMoat = useMoat; }
+ unsigned int GetGameNewWorldSize() { return m_GameNewWorldSize; }
+ unsigned int GetGameNewWorldSizeUseMoat() { return m_bGameNewWorldSizeUseMoat; }
+ void SetGameNewHellScale(unsigned int newScale) { m_GameNewHellScale = newScale; }
+ unsigned int GetGameNewHellScale() { return m_GameNewHellScale; }
+#endif
void SetResetNether(bool bResetNether) {m_bResetNether=bResetNether;}
bool GetResetNether() {return m_bResetNether;}
bool CanRecordStatsAndAchievements();
@@ -808,9 +836,9 @@ public:
DWORD m_dwDLCFileSize;
BYTE *m_pDLCFileBuffer;
-// 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);
+ // 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);
// Storing additional model parts per skin texture
void SetAdditionalSkinBoxes(DWORD dwSkinID, SKIN_BOX *SkinBoxA, DWORD dwSkinBoxC);
@@ -875,27 +903,27 @@ public:
void SetTickTMSDLCFiles(bool bVal);
- wstring getFilePath(DWORD packId, wstring filename, bool bAddDataFolder);
+ wstring getFilePath(DWORD packId, wstring filename, bool bAddDataFolder, wstring mountPoint = L"TPACK:");
private:
- unordered_map<int, wstring>m_localeA;
- unordered_map<wstring, int>m_eMCLangA;
- unordered_map<wstring, int>m_xcLangA;
- wstring getRootPath(DWORD packId, bool allowOverride, bool bAddDataFolder);
+ unordered_map<int, wstring>m_localeA;
+ unordered_map<wstring, int>m_eMCLangA;
+ unordered_map<wstring, int>m_xcLangA;
+ wstring getRootPath(DWORD packId, bool allowOverride, bool bAddDataFolder, wstring mountPoint);
public:
#ifdef _XBOX
-// bool m_bTransferSavesToXboxOne;
-// unsigned int m_uiTransferSlotC;
-
+ // bool m_bTransferSavesToXboxOne;
+ // unsigned int m_uiTransferSlotC;
+
#elif defined (__PS3__)
-
+
#elif defined _DURANGO
-
+
#elif defined _WINDOWS64
//CMinecraftAudio audio;
#else // PS4
-
+
#endif
#ifdef _XBOX_ONE
diff --git a/Minecraft.Client/Common/DLC/DLCManager.cpp b/Minecraft.Client/Common/DLC/DLCManager.cpp
index 123e4266..17c9fc6d 100644
--- a/Minecraft.Client/Common/DLC/DLCManager.cpp
+++ b/Minecraft.Client/Common/DLC/DLCManager.cpp
@@ -91,6 +91,28 @@ void DLCManager::removePack(DLCPack *pack)
}
}
+void DLCManager::removeAllPacks(void)
+{
+ for(AUTO_VAR(it, m_packs.begin()); it != m_packs.end(); ++it)
+ {
+ DLCPack *pack = (DLCPack *)*it;
+ delete pack;
+ }
+
+ m_packs.clear();
+}
+
+void DLCManager::LanguageChanged(void)
+{
+ for(AUTO_VAR(it, m_packs.begin()); it != m_packs.end(); ++it)
+ {
+ DLCPack *pack = (DLCPack *)*it;
+ // update the language
+ pack->UpdateLanguage();
+ }
+
+}
+
DLCPack *DLCManager::getPack(const wstring &name)
{
DLCPack *pack = NULL;
@@ -292,12 +314,12 @@ DWORD DLCManager::checkForCorruptDLCAndAlert(bool showMessage /*= true*/)
WCHAR wchFormat[132];
swprintf(wchFormat, 132, L"%ls\n\n%%ls", firstCorruptPack->getName().c_str());
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_CORRUPT_DLC_TITLE, IDS_CORRUPT_DLC, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),wchFormat);
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_CORRUPT_DLC_TITLE, IDS_CORRUPT_DLC, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL,wchFormat);
}
else
{
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_CORRUPT_DLC_TITLE, IDS_CORRUPT_DLC_MULTIPLE, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_CORRUPT_DLC_TITLE, IDS_CORRUPT_DLC_MULTIPLE, uiIDA,1,ProfileManager.GetPrimaryPad());
}
}
diff --git a/Minecraft.Client/Common/DLC/DLCManager.h b/Minecraft.Client/Common/DLC/DLCManager.h
index 55a62312..27765232 100644
--- a/Minecraft.Client/Common/DLC/DLCManager.h
+++ b/Minecraft.Client/Common/DLC/DLCManager.h
@@ -74,6 +74,8 @@ public:
void addPack(DLCPack *pack);
void removePack(DLCPack *pack);
+ void removeAllPacks(void);
+ void LanguageChanged(void);
DLCPack *getPack(const wstring &name);
#ifdef _XBOX_ONE
diff --git a/Minecraft.Client/Common/DLC/DLCPack.cpp b/Minecraft.Client/Common/DLC/DLCPack.cpp
index 507e51a7..4a003d05 100644
--- a/Minecraft.Client/Common/DLC/DLCPack.cpp
+++ b/Minecraft.Client/Common/DLC/DLCPack.cpp
@@ -191,7 +191,8 @@ DLCFile *DLCPack::addFile(DLCManager::EDLCType type, const wstring &path)
{
case DLCManager::e_DLCType_Skin:
{
- std::vector<std::wstring> splitPath = stringSplit(path,L'/');
+ wstring newPath = replaceAll(path, L"\\", L"/");
+ std::vector<std::wstring> splitPath = stringSplit(newPath,L'/');
wstring strippedPath = splitPath.back();
newFile = new DLCSkinFile(strippedPath);
@@ -211,7 +212,8 @@ DLCFile *DLCPack::addFile(DLCManager::EDLCType type, const wstring &path)
break;
case DLCManager::e_DLCType_Cape:
{
- std::vector<std::wstring> splitPath = stringSplit(path,L'/');
+ wstring newPath = replaceAll(path, L"\\", L"/");
+ std::vector<std::wstring> splitPath = stringSplit(newPath,L'/');
wstring strippedPath = splitPath.back();
newFile = new DLCCapeFile(strippedPath);
}
@@ -411,3 +413,19 @@ bool DLCPack::hasPurchasedFile(DLCManager::EDLCType type, const wstring &path)
return true;
}*/
}
+
+void DLCPack::UpdateLanguage()
+{
+ // find the language file
+ DLCManager::e_DLCType_LocalisationData;
+ DLCFile *file = NULL;
+
+ if(m_files[DLCManager::e_DLCType_LocalisationData].size() > 0)
+ {
+ file = m_files[DLCManager::e_DLCType_LocalisationData][0];
+ DLCLocalisationFile *localisationFile = (DLCLocalisationFile *)getFile(DLCManager::e_DLCType_LocalisationData, L"languages.loc");
+ StringTable *strTable = localisationFile->getStringTable();
+ strTable->ReloadStringTable();
+ }
+
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/DLC/DLCPack.h b/Minecraft.Client/Common/DLC/DLCPack.h
index 856744c2..df1f65f0 100644
--- a/Minecraft.Client/Common/DLC/DLCPack.h
+++ b/Minecraft.Client/Common/DLC/DLCPack.h
@@ -68,6 +68,8 @@ public:
DWORD getLicenseMask( ) { return m_dwLicenseMask; }
wstring getName() { return m_packName; }
+
+ void UpdateLanguage();
#ifdef _XBOX_ONE
wstring getPurchaseOfferId() { return m_wsProductId; }
#else
diff --git a/Minecraft.Client/Common/DLC/DLCTextureFile.cpp b/Minecraft.Client/Common/DLC/DLCTextureFile.cpp
index cf99465a..edf071c6 100644
--- a/Minecraft.Client/Common/DLC/DLCTextureFile.cpp
+++ b/Minecraft.Client/Common/DLC/DLCTextureFile.cpp
@@ -30,6 +30,7 @@ void DLCTextureFile::addParameter(DLCManager::EDLCParameterType type, const wstr
{
case DLCManager::e_DLCParamType_Anim:
m_animString = value;
+ if(m_animString.empty()) m_animString = L",";
m_bIsAnim = true;
break;
diff --git a/Minecraft.Client/Common/GameRules/ConsoleGenerateStructure.h b/Minecraft.Client/Common/GameRules/ConsoleGenerateStructure.h
index 5b97b108..91c4ef35 100644
--- a/Minecraft.Client/Common/GameRules/ConsoleGenerateStructure.h
+++ b/Minecraft.Client/Common/GameRules/ConsoleGenerateStructure.h
@@ -35,4 +35,8 @@ public:
bool checkIntersects(int x0, int y0, int z0, int x1, int y1, int z1);
virtual int getMinY();
+
+ EStructurePiece GetType() { return (EStructurePiece)0; }
+ void addAdditonalSaveData(CompoundTag *tag) {}
+ void readAdditonalSaveData(CompoundTag *tag) {}
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/GameRules/ConsoleSchematicFile.cpp b/Minecraft.Client/Common/GameRules/ConsoleSchematicFile.cpp
index 4a4e27b2..3b995000 100644
--- a/Minecraft.Client/Common/GameRules/ConsoleSchematicFile.cpp
+++ b/Minecraft.Client/Common/GameRules/ConsoleSchematicFile.cpp
@@ -278,7 +278,7 @@ __int64 ConsoleSchematicFile::applyBlocksAndData(LevelChunk *chunk, AABB *chunkB
//{
// if(blockData[i] == Tile::sand_Id || blockData[i] == Tile::sandStone_Id)
// {
- // blockData[i] = Tile::whiteStone_Id;
+ // blockData[i] = Tile::endStone_Id;
// }
//}
@@ -706,15 +706,19 @@ void ConsoleSchematicFile::generateSchematicFile(DataOutputStream *dos, Level *l
shared_ptr<Entity> e = *it;
bool mobCanBeSaved = false;
- if(bSaveMobs)
+ if (bSaveMobs)
{
- if( ( e->GetType() & eTYPE_MONSTER ) || ( e->GetType() & eTYPE_WATERANIMAL ) || ( e->GetType() & eTYPE_ANIMAL ) ||
- ( e->GetType() == eTYPE_CHICKEN ) || ( e->GetType() == eTYPE_WOLF ) || ( e->GetType() == eTYPE_VILLAGER) || ( e->GetType() == eTYPE_MUSHROOMCOW ) )
+ if ( e->instanceof(eTYPE_MONSTER) || e->instanceof(eTYPE_WATERANIMAL) || e->instanceof(eTYPE_ANIMAL) || (e->GetType() == eTYPE_VILLAGER) )
+
+ // 4J-JEV: All these are derived from eTYPE_ANIMAL and true implicitly.
+ //|| ( e->GetType() == eTYPE_CHICKEN ) || ( e->GetType() == eTYPE_WOLF ) || ( e->GetType() == eTYPE_MUSHROOMCOW ) )
{
mobCanBeSaved = true;
}
}
- if(mobCanBeSaved || e->GetType() == eTYPE_MINECART || e->GetType() == eTYPE_BOAT || e->GetType() == eTYPE_PAINTING || e->GetType() == eTYPE_ITEM_FRAME)
+
+ // 4J-JEV: Changed to check for instances of minecarts and hangingEntities instead of just eTYPE_PAINTING, eTYPE_ITEM_FRAME and eTYPE_MINECART
+ if (mobCanBeSaved || e->instanceof(eTYPE_MINECART) || e->GetType() == eTYPE_BOAT || e->instanceof(eTYPE_HANGING_ENTITY))
{
CompoundTag *eTag = new CompoundTag();
if( e->save(eTag) )
@@ -725,7 +729,7 @@ void ConsoleSchematicFile::generateSchematicFile(DataOutputStream *dos, Level *l
pos->get(1)->data -= yStart;
pos->get(2)->data -= zStart;
- if( e->GetType() == eTYPE_PAINTING || e->GetType() == eTYPE_ITEM_FRAME )
+ if( e->instanceof(eTYPE_HANGING_ENTITY) )
{
((IntTag *) eTag->get(L"TileX") )->data -= xStart;
((IntTag *) eTag->get(L"TileY") )->data -= yStart;
diff --git a/Minecraft.Client/Common/GameRules/GameRuleManager.cpp b/Minecraft.Client/Common/GameRules/GameRuleManager.cpp
index 0c6a7804..6e5688cc 100644
--- a/Minecraft.Client/Common/GameRules/GameRuleManager.cpp
+++ b/Minecraft.Client/Common/GameRules/GameRuleManager.cpp
@@ -106,17 +106,14 @@ void GameRuleManager::loadGameRules(DLCPack *pack)
DWORD dSize;
byte *dData = dlcHeader->getData(dSize);
- LevelGenerationOptions *createdLevelGenerationOptions = new LevelGenerationOptions();
+ LevelGenerationOptions *createdLevelGenerationOptions = new LevelGenerationOptions(pack);
// = loadGameRules(dData, dSize); //, strings);
createdLevelGenerationOptions->setGrSource( dlcHeader );
+ createdLevelGenerationOptions->setSrc( LevelGenerationOptions::eSrc_fromDLC );
readRuleFile(createdLevelGenerationOptions, dData, dSize, strings);
- createdLevelGenerationOptions->setSrc( LevelGenerationOptions::eSrc_fromDLC );
-
-
- //createdLevelGenerationOptions->setSrc( LevelGenerationOptions::eSrc_fromDLC );
dlcHeader->lgo = createdLevelGenerationOptions;
}
@@ -128,15 +125,13 @@ void GameRuleManager::loadGameRules(DLCPack *pack)
DWORD dSize;
byte *dData = dlcFile->getData(dSize);
- LevelGenerationOptions *createdLevelGenerationOptions = new LevelGenerationOptions();
+ LevelGenerationOptions *createdLevelGenerationOptions = new LevelGenerationOptions(pack);
// = loadGameRules(dData, dSize); //, strings);
createdLevelGenerationOptions->setGrSource( new JustGrSource() );
- readRuleFile(createdLevelGenerationOptions, dData, dSize, strings);
-
createdLevelGenerationOptions->setSrc( LevelGenerationOptions::eSrc_tutorial );
-
- //createdLevelGenerationOptions->set_DLCGameRulesFile( dlcFile );
+
+ readRuleFile(createdLevelGenerationOptions, dData, dSize, strings);
createdLevelGenerationOptions->setLoadedData();
}
@@ -659,6 +654,25 @@ void GameRuleManager::loadDefaultGameRules()
#else // _XBOX
+#ifdef _WINDOWS64
+ File packedTutorialFile(L"Windows64Media\\Tutorial\\Tutorial.pck");
+ if(!packedTutorialFile.exists()) packedTutorialFile = File(L"Windows64\\Tutorial\\Tutorial.pck");
+#elif defined(__ORBIS__)
+ File packedTutorialFile(L"/app0/orbis/Tutorial/Tutorial.pck");
+#elif defined(__PSVITA__)
+ File packedTutorialFile(L"PSVita/Tutorial/Tutorial.pck");
+#elif defined(__PS3__)
+ File packedTutorialFile(L"PS3/Tutorial/Tutorial.pck");
+#else
+ File packedTutorialFile(L"Tutorial\\Tutorial.pck");
+#endif
+ if(loadGameRulesPack(&packedTutorialFile))
+ {
+ m_levelGenerators.getLevelGenerators()->at(0)->setWorldName(app.GetString(IDS_PLAY_TUTORIAL));
+ //m_levelGenerators.getLevelGenerators()->at(0)->setDefaultSaveName(L"Tutorial");
+ m_levelGenerators.getLevelGenerators()->at(0)->setDefaultSaveName(app.GetString(IDS_TUTORIALSAVENAME));
+ }
+#if 0
wstring fpTutorial = L"Tutorial.pck";
if(app.getArchiveFileSize(fpTutorial) >= 0)
{
@@ -667,25 +681,18 @@ void GameRuleManager::loadDefaultGameRules()
if ( app.m_dlcManager.readDLCDataFile(dwFilesProcessed,fpTutorial,pack,true) )
{
app.m_dlcManager.addPack(pack);
- m_levelGenerators.getLevelGenerators()->at(0)->setWorldName(app.GetString(IDS_PLAY_TUTORIAL));
- m_levelGenerators.getLevelGenerators()->at(0)->setDefaultSaveName(app.GetString(IDS_TUTORIALSAVENAME));
+ //m_levelGenerators.getLevelGenerators()->at(0)->setWorldName(app.GetString(IDS_PLAY_TUTORIAL));
+ //m_levelGenerators.getLevelGenerators()->at(0)->setDefaultSaveName(app.GetString(IDS_TUTORIALSAVENAME));
}
else delete pack;
}
- /*StringTable *strings = new StringTable(baStrings.data, baStrings.length);
- LevelGenerationOptions *lgo = new LevelGenerationOptions();
- lgo->setGrSource( new JustGrSource() );
- lgo->setSrc( LevelGenerationOptions::eSrc_tutorial );
- readRuleFile(lgo, tutorial.data, tutorial.length, strings);
- lgo->setLoadedData();*/
-
+#endif
#endif
}
bool GameRuleManager::loadGameRulesPack(File *path)
{
bool success = false;
-#ifdef _XBOX
if(path->exists())
{
DLCPack *pack = new DLCPack(L"",0xffffffff);
@@ -700,12 +707,13 @@ bool GameRuleManager::loadGameRulesPack(File *path)
delete pack;
}
}
-#endif
return success;
}
void GameRuleManager::setLevelGenerationOptions(LevelGenerationOptions *levelGen)
{
+ unloadCurrentGameRules();
+
m_currentGameRuleDefinitions = NULL;
m_currentLevelGenerationOptions = levelGen;
diff --git a/Minecraft.Client/Common/GameRules/LevelGenerationOptions.cpp b/Minecraft.Client/Common/GameRules/LevelGenerationOptions.cpp
index 717b066e..9ebd3428 100644
--- a/Minecraft.Client/Common/GameRules/LevelGenerationOptions.cpp
+++ b/Minecraft.Client/Common/GameRules/LevelGenerationOptions.cpp
@@ -7,6 +7,7 @@
#include "..\..\..\Minecraft.World\net.minecraft.world.phys.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.level.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.level.chunk.h"
+#include "Common\DLC\DLCGameRulesHeader.h"
#include "..\..\StringTable.h"
#include "LevelGenerationOptions.h"
#include "ConsoleGameRules.h"
@@ -41,7 +42,7 @@ void JustGrSource::setBaseSavePath(const wstring &x) { m_baseSavePath = x; m_bRe
bool JustGrSource::ready() { return true; }
-LevelGenerationOptions::LevelGenerationOptions()
+LevelGenerationOptions::LevelGenerationOptions(DLCPack *parentPack)
{
m_spawnPos = NULL;
m_stringTable = NULL;
@@ -49,6 +50,7 @@ LevelGenerationOptions::LevelGenerationOptions()
m_hasLoadedData = false;
m_seed = 0;
+ m_bHasBeenInCreative = true;
m_useFlatWorld = false;
m_bHaveMinY = false;
m_minY = INT_MAX;
@@ -56,6 +58,9 @@ LevelGenerationOptions::LevelGenerationOptions()
m_pbBaseSaveData = NULL;
m_dwBaseSaveSize = 0;
+
+ m_parentDLCPack = parentPack;
+ m_bLoadingData = false;
}
LevelGenerationOptions::~LevelGenerationOptions()
@@ -70,17 +75,17 @@ LevelGenerationOptions::~LevelGenerationOptions()
{
delete *it;
}
-
+
for(AUTO_VAR(it, m_biomeOverrides.begin()); it != m_biomeOverrides.end(); ++it)
{
delete *it;
}
-
+
for(AUTO_VAR(it, m_features.begin()); it != m_features.end(); ++it)
{
delete *it;
}
-
+
if (m_stringTable)
if (!isTutorial())
delete m_stringTable;
@@ -93,7 +98,7 @@ ConsoleGameRules::EGameRuleType LevelGenerationOptions::getActionType() { return
void LevelGenerationOptions::writeAttributes(DataOutputStream *dos, UINT numAttrs)
{
GameRuleDefinition::writeAttributes(dos, numAttrs + 5);
-
+
ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_spawnX);
dos->writeUTF(_toString(m_spawnPos->x));
ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_spawnY);
@@ -110,12 +115,12 @@ void LevelGenerationOptions::writeAttributes(DataOutputStream *dos, UINT numAttr
void LevelGenerationOptions::getChildren(vector<GameRuleDefinition *> *children)
{
GameRuleDefinition::getChildren(children);
-
+
vector<ApplySchematicRuleDefinition *> used_schematics;
for (AUTO_VAR(it, m_schematicRules.begin()); it != m_schematicRules.end(); it++)
if ( !(*it)->isComplete() )
used_schematics.push_back( *it );
-
+
for(AUTO_VAR(it, m_structureRules.begin()); it!=m_structureRules.end(); it++)
children->push_back( *it );
for(AUTO_VAR(it, used_schematics.begin()); it!=used_schematics.end(); it++)
@@ -190,24 +195,24 @@ void LevelGenerationOptions::addAttribute(const wstring &attributeName, const ws
{
if(attributeValue.compare(L"true") == 0) m_useFlatWorld = true;
app.DebugPrintf("LevelGenerationOptions: Adding parameter flatworld=%s\n",m_useFlatWorld?"TRUE":"FALSE");
- }
+ }
else if(attributeName.compare(L"saveName") == 0)
{
- wstring string(getString(attributeValue));
+ wstring string(attributeValue);
if(!string.empty()) setDefaultSaveName( string );
else setDefaultSaveName( attributeValue );
app.DebugPrintf("LevelGenerationOptions: Adding parameter saveName=%ls\n", getDefaultSaveName().c_str());
}
else if(attributeName.compare(L"worldName") == 0)
{
- wstring string(getString(attributeValue));
+ wstring string(attributeValue);
if(!string.empty()) setWorldName( string );
else setWorldName( attributeValue );
app.DebugPrintf("LevelGenerationOptions: Adding parameter worldName=%ls\n", getWorldName());
}
else if(attributeName.compare(L"displayName") == 0)
{
- wstring string(getString(attributeValue));
+ wstring string(attributeValue);
if(!string.empty()) setDisplayName( string );
else setDisplayName( attributeValue );
app.DebugPrintf("LevelGenerationOptions: Adding parameter displayName=%ls\n", getDisplayName());
@@ -228,6 +233,12 @@ void LevelGenerationOptions::addAttribute(const wstring &attributeName, const ws
setBaseSavePath( attributeValue );
app.DebugPrintf("LevelGenerationOptions: Adding parameter baseSaveName=%ls\n", getBaseSavePath().c_str());
}
+ else if(attributeName.compare(L"hasBeenInCreative") == 0)
+ {
+ bool value = _fromString<bool>(attributeValue);
+ m_bHasBeenInCreative = value;
+ app.DebugPrintf("LevelGenerationOptions: Adding parameter gameMode=%d\n", m_bHasBeenInCreative);
+ }
else
{
GameRuleDefinition::addAttribute(attributeName, attributeValue);
@@ -297,7 +308,7 @@ bool LevelGenerationOptions::checkIntersects(int x0, int y0, int z0, int x1, int
m_bHaveMinY = true;
}
-
+
// 4J Stu - We DO NOT intersect if our upper bound is below the lower bound for all schematics
if( y1 < m_minY ) return false;
@@ -413,14 +424,14 @@ void LevelGenerationOptions::getBiomeOverride(int biomeId, BYTE &tile, BYTE &top
}
}
-bool LevelGenerationOptions::isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature)
+bool LevelGenerationOptions::isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature, int *orientation)
{
bool isFeature = false;
for(AUTO_VAR(it, m_features.begin()); it != m_features.end(); ++it)
{
StartFeature *sf = *it;
- if(sf->isFeatureChunk(chunkX, chunkZ, feature))
+ if(sf->isFeatureChunk(chunkX, chunkZ, feature, orientation))
{
isFeature = true;
break;
@@ -442,15 +453,175 @@ unordered_map<wstring, ConsoleSchematicFile *> *LevelGenerationOptions::getUnfin
= new unordered_map<wstring, ConsoleSchematicFile *>();
for (AUTO_VAR(it, usedFiles.begin()); it!=usedFiles.end(); it++)
out->insert( pair<wstring, ConsoleSchematicFile *>(*it, getSchematicFile(*it)) );
-
+
return out;
}
+void LevelGenerationOptions::loadBaseSaveData()
+{
+ int mountIndex = -1;
+ if(m_parentDLCPack != NULL) mountIndex = m_parentDLCPack->GetDLCMountIndex();
+
+ if(mountIndex > -1)
+ {
+#ifdef _DURANGO
+ if(StorageManager.MountInstalledDLC(ProfileManager.GetPrimaryPad(),mountIndex,&LevelGenerationOptions::packMounted,this,L"WPACK")!=ERROR_IO_PENDING)
+#else
+ if(StorageManager.MountInstalledDLC(ProfileManager.GetPrimaryPad(),mountIndex,&LevelGenerationOptions::packMounted,this,"WPACK")!=ERROR_IO_PENDING)
+#endif
+ {
+ // corrupt DLC
+ setLoadedData();
+ app.DebugPrintf("Failed to mount LGO DLC %d for pad %d\n",mountIndex,ProfileManager.GetPrimaryPad());
+ }
+ else
+ {
+ m_bLoadingData = true;
+ app.DebugPrintf("Attempted to mount DLC data for LGO %d\n", mountIndex);
+ }
+ }
+ else
+ {
+ setLoadedData();
+ app.SetAction(ProfileManager.GetPrimaryPad(), eAppAction_ReloadTexturePack);
+ }
+}
+
+int LevelGenerationOptions::packMounted(LPVOID pParam,int iPad,DWORD dwErr,DWORD dwLicenceMask)
+{
+ LevelGenerationOptions *lgo = (LevelGenerationOptions *)pParam;
+ lgo->m_bLoadingData = false;
+ if(dwErr!=ERROR_SUCCESS)
+ {
+ // corrupt DLC
+ app.DebugPrintf("Failed to mount LGO DLC for pad %d: %d\n",iPad,dwErr);
+ }
+ else
+ {
+ app.DebugPrintf("Mounted DLC for LGO, attempting to load data\n");
+ DWORD dwFilesProcessed = 0;
+ int gameRulesCount = lgo->m_parentDLCPack->getDLCItemsCount(DLCManager::e_DLCType_GameRulesHeader);
+ for(int i = 0; i < gameRulesCount; ++i)
+ {
+ DLCGameRulesHeader *dlcFile = (DLCGameRulesHeader *) lgo->m_parentDLCPack->getFile(DLCManager::e_DLCType_GameRulesHeader, i);
+
+ if (!dlcFile->getGrfPath().empty())
+ {
+ File grf( app.getFilePath(lgo->m_parentDLCPack->GetPackID(), dlcFile->getGrfPath(),true, L"WPACK:" ) );
+ if (grf.exists())
+ {
+#ifdef _UNICODE
+ wstring path = grf.getPath();
+ const WCHAR *pchFilename=path.c_str();
+ HANDLE fileHandle = CreateFile(
+ pchFilename, // file name
+ GENERIC_READ, // access mode
+ 0, // share mode // TODO 4J Stu - Will we need to share file? Probably not but...
+ NULL, // Unused
+ OPEN_EXISTING , // how to create // TODO 4J Stu - Assuming that the file already exists if we are opening to read from it
+ FILE_FLAG_SEQUENTIAL_SCAN, // file attributes
+ NULL // Unsupported
+ );
+#else
+ const char *pchFilename=wstringtofilename(grf.getPath());
+ HANDLE fileHandle = CreateFile(
+ pchFilename, // file name
+ GENERIC_READ, // access mode
+ 0, // share mode // TODO 4J Stu - Will we need to share file? Probably not but...
+ NULL, // Unused
+ OPEN_EXISTING , // how to create // TODO 4J Stu - Assuming that the file already exists if we are opening to read from it
+ FILE_FLAG_SEQUENTIAL_SCAN, // file attributes
+ NULL // Unsupported
+ );
+#endif
+
+ if( fileHandle != INVALID_HANDLE_VALUE )
+ {
+ DWORD dwFileSize = grf.length();
+ DWORD bytesRead;
+ PBYTE pbData = (PBYTE) new BYTE[dwFileSize];
+ BOOL bSuccess = ReadFile(fileHandle,pbData,dwFileSize,&bytesRead,NULL);
+ if(bSuccess==FALSE)
+ {
+ app.FatalLoadError();
+ }
+ CloseHandle(fileHandle);
+
+ // 4J-PB - is it possible that we can get here after a read fail and it's not an error?
+ dlcFile->setGrfData(pbData, dwFileSize, lgo->m_stringTable);
+
+ delete [] pbData;
+
+ app.m_gameRules.setLevelGenerationOptions( dlcFile->lgo );
+ }
+ }
+ }
+ }
+ if(lgo->requiresBaseSave() && !lgo->getBaseSavePath().empty() )
+ {
+ File save(app.getFilePath(lgo->m_parentDLCPack->GetPackID(), lgo->getBaseSavePath(),true, L"WPACK:" ));
+ if (save.exists())
+ {
+#ifdef _UNICODE
+ wstring path = save.getPath();
+ const WCHAR *pchFilename=path.c_str();
+ HANDLE fileHandle = CreateFile(
+ pchFilename, // file name
+ GENERIC_READ, // access mode
+ 0, // share mode // TODO 4J Stu - Will we need to share file? Probably not but...
+ NULL, // Unused
+ OPEN_EXISTING , // how to create // TODO 4J Stu - Assuming that the file already exists if we are opening to read from it
+ FILE_FLAG_SEQUENTIAL_SCAN, // file attributes
+ NULL // Unsupported
+ );
+#else
+ const char *pchFilename=wstringtofilename(save.getPath());
+ HANDLE fileHandle = CreateFile(
+ pchFilename, // file name
+ GENERIC_READ, // access mode
+ 0, // share mode // TODO 4J Stu - Will we need to share file? Probably not but...
+ NULL, // Unused
+ OPEN_EXISTING , // how to create // TODO 4J Stu - Assuming that the file already exists if we are opening to read from it
+ FILE_FLAG_SEQUENTIAL_SCAN, // file attributes
+ NULL // Unsupported
+ );
+#endif
+
+ if( fileHandle != INVALID_HANDLE_VALUE )
+ {
+ DWORD bytesRead,dwFileSize = GetFileSize(fileHandle,NULL);
+ PBYTE pbData = (PBYTE) new BYTE[dwFileSize];
+ BOOL bSuccess = ReadFile(fileHandle,pbData,dwFileSize,&bytesRead,NULL);
+ if(bSuccess==FALSE)
+ {
+ app.FatalLoadError();
+ }
+ CloseHandle(fileHandle);
+
+ // 4J-PB - is it possible that we can get here after a read fail and it's not an error?
+ lgo->setBaseSaveData(pbData, dwFileSize);
+ }
+ }
+
+ }
+#ifdef _DURANGO
+ DWORD result = StorageManager.UnmountInstalledDLC(L"WPACK");
+#else
+ DWORD result = StorageManager.UnmountInstalledDLC("WPACK");
+#endif
+
+ }
+
+ lgo->setLoadedData();
+
+ return 0;
+}
+
void LevelGenerationOptions::reset_start()
{
for ( AUTO_VAR( it, m_schematicRules.begin());
- it != m_schematicRules.end();
- it++ )
+ it != m_schematicRules.end();
+ it++ )
{
(*it)->reset();
}
@@ -478,9 +649,38 @@ bool LevelGenerationOptions::isFromDLC() { return getSrc() == eSrc_fromDLC; }
bool LevelGenerationOptions::requiresTexturePack() { return info()->requiresTexturePack(); }
UINT LevelGenerationOptions::getRequiredTexturePackId() { return info()->getRequiredTexturePackId(); }
-wstring LevelGenerationOptions::getDefaultSaveName() { return info()->getDefaultSaveName(); }
-LPCWSTR LevelGenerationOptions::getWorldName() { return info()->getWorldName(); }
-LPCWSTR LevelGenerationOptions::getDisplayName() { return info()->getDisplayName(); }
+
+wstring LevelGenerationOptions::getDefaultSaveName()
+{
+ switch (getSrc())
+ {
+ case eSrc_fromSave: return getString( info()->getDefaultSaveName() );
+ case eSrc_fromDLC: return getString( info()->getDefaultSaveName() );
+ case eSrc_tutorial: return app.GetString(IDS_TUTORIALSAVENAME);
+ }
+ return L"";
+}
+LPCWSTR LevelGenerationOptions::getWorldName()
+{
+ switch (getSrc())
+ {
+ case eSrc_fromSave: return getString( info()->getWorldName() );
+ case eSrc_fromDLC: return getString( info()->getWorldName() );
+ case eSrc_tutorial: return app.GetString(IDS_PLAY_TUTORIAL);
+ }
+ return L"";
+}
+LPCWSTR LevelGenerationOptions::getDisplayName()
+{
+ switch (getSrc())
+ {
+ case eSrc_fromSave: return getString( info()->getDisplayName() );
+ case eSrc_fromDLC: return getString( info()->getDisplayName() );
+ case eSrc_tutorial: return L"";
+ }
+ return L"";
+}
+
wstring LevelGenerationOptions::getGrfPath() { return info()->getGrfPath(); }
bool LevelGenerationOptions::requiresBaseSave() { return info()->requiresBaseSave(); }
wstring LevelGenerationOptions::getBaseSavePath() { return info()->getBaseSavePath(); }
@@ -506,6 +706,7 @@ bool LevelGenerationOptions::hasLoadedData() { return m_hasLoadedData; }
void LevelGenerationOptions::setLoadedData() { m_hasLoadedData = true; }
__int64 LevelGenerationOptions::getLevelSeed() { return m_seed; }
+int LevelGenerationOptions::getLevelHasBeenInCreative() { return m_bHasBeenInCreative; }
Pos *LevelGenerationOptions::getSpawnPos() { return m_spawnPos; }
bool LevelGenerationOptions::getuseFlatWorld() { return m_useFlatWorld; }
diff --git a/Minecraft.Client/Common/GameRules/LevelGenerationOptions.h b/Minecraft.Client/Common/GameRules/LevelGenerationOptions.h
index 0cc9da79..aa128ff8 100644
--- a/Minecraft.Client/Common/GameRules/LevelGenerationOptions.h
+++ b/Minecraft.Client/Common/GameRules/LevelGenerationOptions.h
@@ -149,6 +149,7 @@ private:
__int64 m_seed;
bool m_useFlatWorld;
Pos *m_spawnPos;
+ int m_bHasBeenInCreative;
vector<ApplySchematicRuleDefinition *> m_schematicRules;
vector<ConsoleGenerateStructure *> m_structureRules;
bool m_bHaveMinY;
@@ -162,8 +163,11 @@ private:
StringTable *m_stringTable;
+ DLCPack *m_parentDLCPack;
+ bool m_bLoadingData;
+
public:
- LevelGenerationOptions();
+ LevelGenerationOptions(DLCPack *parentPack = NULL);
~LevelGenerationOptions();
virtual ConsoleGameRules::EGameRuleType getActionType();
@@ -174,6 +178,7 @@ public:
virtual void addAttribute(const wstring &attributeName, const wstring &attributeValue);
__int64 getLevelSeed();
+ int getLevelHasBeenInCreative();
Pos *getSpawnPos();
bool getuseFlatWorld();
@@ -197,12 +202,15 @@ public:
LevelRuleset *getRequiredGameRules();
void getBiomeOverride(int biomeId, BYTE &tile, BYTE &topTile);
- bool isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature);
+ bool isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature, int *orientation = NULL);
void loadStringTable(StringTable *table);
LPCWSTR getString(const wstring &key);
unordered_map<wstring, ConsoleSchematicFile *> *getUnfinishedSchematicFiles();
+
+ void loadBaseSaveData();
+ static int packMounted(LPVOID pParam,int iPad,DWORD dwErr,DWORD dwLicenceMask);
// 4J-JEV:
// ApplySchematicRules contain limited state
diff --git a/Minecraft.Client/Common/GameRules/StartFeature.cpp b/Minecraft.Client/Common/GameRules/StartFeature.cpp
index 9d5f15c0..7f0c8b5c 100644
--- a/Minecraft.Client/Common/GameRules/StartFeature.cpp
+++ b/Minecraft.Client/Common/GameRules/StartFeature.cpp
@@ -6,12 +6,13 @@ StartFeature::StartFeature()
{
m_chunkX = 0;
m_chunkZ = 0;
+ m_orientation = 0;
m_feature = StructureFeature::eFeature_Temples;
}
void StartFeature::writeAttributes(DataOutputStream *dos, UINT numAttrs)
{
- GameRuleDefinition::writeAttributes(dos, numAttrs + 3);
+ GameRuleDefinition::writeAttributes(dos, numAttrs + 4);
ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_chunkX);
dos->writeUTF(_toString(m_chunkX));
@@ -19,6 +20,8 @@ void StartFeature::writeAttributes(DataOutputStream *dos, UINT numAttrs)
dos->writeUTF(_toString(m_chunkZ));
ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_feature);
dos->writeUTF(_toString((int)m_feature));
+ ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_orientation);
+ dos->writeUTF(_toString(m_orientation));
}
void StartFeature::addAttribute(const wstring &attributeName, const wstring &attributeValue)
@@ -35,6 +38,12 @@ void StartFeature::addAttribute(const wstring &attributeName, const wstring &att
m_chunkZ = value;
app.DebugPrintf("StartFeature: Adding parameter chunkZ=%d\n",m_chunkZ);
}
+ else if(attributeName.compare(L"orientation") == 0)
+ {
+ int value = _fromString<int>(attributeValue);
+ m_orientation = value;
+ app.DebugPrintf("StartFeature: Adding parameter orientation=%d\n",m_orientation);
+ }
else if(attributeName.compare(L"feature") == 0)
{
int value = _fromString<int>(attributeValue);
@@ -47,7 +56,8 @@ void StartFeature::addAttribute(const wstring &attributeName, const wstring &att
}
}
-bool StartFeature::isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature)
+bool StartFeature::isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature, int *orientation)
{
+ if(orientation != NULL) *orientation = m_orientation;
return chunkX == m_chunkX && chunkZ == m_chunkZ && feature == m_feature;
} \ No newline at end of file
diff --git a/Minecraft.Client/Common/GameRules/StartFeature.h b/Minecraft.Client/Common/GameRules/StartFeature.h
index d3f1280a..b198a2fa 100644
--- a/Minecraft.Client/Common/GameRules/StartFeature.h
+++ b/Minecraft.Client/Common/GameRules/StartFeature.h
@@ -7,7 +7,7 @@ using namespace std;
class StartFeature : public GameRuleDefinition
{
private:
- int m_chunkX, m_chunkZ;
+ int m_chunkX, m_chunkZ, m_orientation;
StructureFeature::EFeatureTypes m_feature;
public:
@@ -18,5 +18,5 @@ public:
virtual void writeAttributes(DataOutputStream *dos, UINT numAttrs);
virtual void addAttribute(const wstring &attributeName, const wstring &attributeValue);
- bool isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature);
+ bool isFeatureChunk(int chunkX, int chunkZ, StructureFeature::EFeatureTypes feature, int *orientation);
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceContainer.cpp b/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceContainer.cpp
index 8184f45b..d81a2b03 100644
--- a/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceContainer.cpp
+++ b/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceContainer.cpp
@@ -74,16 +74,16 @@ bool XboxStructureActionPlaceContainer::placeContainerInLevel(StructurePiece *st
{
// Remove the current tile entity
level->removeTileEntity( worldX, worldY, worldZ );
- level->setTile( worldX, worldY, worldZ, 0 );
+ level->setTileAndData( worldX, worldY, worldZ, 0, 0, Tile::UPDATE_ALL );
}
- level->setTile( worldX, worldY, worldZ, m_tile );
+ level->setTileAndData( worldX, worldY, worldZ, m_tile, 0, Tile::UPDATE_ALL );
shared_ptr<Container> container = dynamic_pointer_cast<Container>(level->getTileEntity( worldX, worldY, worldZ ));
app.DebugPrintf("XboxStructureActionPlaceContainer - placing a container at (%d,%d,%d)\n", worldX, worldY, worldZ);
if ( container != NULL )
{
- level->setData( worldX, worldY, worldZ, m_data);
+ level->setData( worldX, worldY, worldZ, m_data, Tile::UPDATE_CLIENTS);
// Add items
int slotId = 0;
for(AUTO_VAR(it, m_items.begin()); it != m_items.end() && (slotId < container->getContainerSize()); ++it, ++slotId )
diff --git a/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceSpawner.cpp b/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceSpawner.cpp
index 1eca3342..3f6204af 100644
--- a/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceSpawner.cpp
+++ b/Minecraft.Client/Common/GameRules/XboxStructureActionPlaceSpawner.cpp
@@ -50,10 +50,10 @@ bool XboxStructureActionPlaceSpawner::placeSpawnerInLevel(StructurePiece *struct
{
// Remove the current tile entity
level->removeTileEntity( worldX, worldY, worldZ );
- level->setTile( worldX, worldY, worldZ, 0 );
+ level->setTileAndData( worldX, worldY, worldZ, 0, 0, Tile::UPDATE_ALL );
}
- level->setTile( worldX, worldY, worldZ, m_tile );
+ level->setTileAndData( worldX, worldY, worldZ, m_tile, 0, Tile::UPDATE_ALL );
shared_ptr<MobSpawnerTileEntity> entity = dynamic_pointer_cast<MobSpawnerTileEntity>(level->getTileEntity( worldX, worldY, worldZ ));
#ifndef _CONTENT_PACKAGE
diff --git a/Minecraft.Client/Common/Leaderboards/LeaderboardInterface.cpp b/Minecraft.Client/Common/Leaderboards/LeaderboardInterface.cpp
new file mode 100644
index 00000000..07463517
--- /dev/null
+++ b/Minecraft.Client/Common/Leaderboards/LeaderboardInterface.cpp
@@ -0,0 +1,88 @@
+#include "stdafx.h"
+#include "LeaderboardInterface.h"
+
+LeaderboardInterface::LeaderboardInterface(LeaderboardManager *man)
+{
+ m_manager = man;
+ m_pending = false;
+
+ m_filter = (LeaderboardManager::EFilterMode) -1;
+ m_callback = NULL;
+ m_difficulty = 0;
+ m_type = LeaderboardManager::eStatsType_UNDEFINED;
+ m_startIndex = 0;
+ m_readCount = 0;
+
+ m_manager->OpenSession();
+}
+
+LeaderboardInterface::~LeaderboardInterface()
+{
+ m_manager->CancelOperation();
+ m_manager->CloseSession();
+}
+
+void LeaderboardInterface::ReadStats_Friends(LeaderboardReadListener *callback, int difficulty, LeaderboardManager::EStatsType type, PlayerUID myUID, unsigned int startIndex, unsigned int readCount)
+{
+ m_filter = LeaderboardManager::eFM_Friends;
+ m_pending = true;
+
+ m_callback = callback;
+ m_difficulty = difficulty;
+ m_type = type;
+ m_myUID = myUID;
+ m_startIndex = startIndex;
+ m_readCount = readCount;
+
+ tick();
+}
+
+void LeaderboardInterface::ReadStats_MyScore(LeaderboardReadListener *callback, int difficulty, LeaderboardManager::EStatsType type, PlayerUID myUID, unsigned int readCount)
+{
+ m_filter = LeaderboardManager::eFM_MyScore;
+ m_pending = true;
+
+ m_callback = callback;
+ m_difficulty = difficulty;
+ m_type = type;
+ m_myUID = myUID;
+ m_readCount = readCount;
+
+ tick();
+}
+
+void LeaderboardInterface::ReadStats_TopRank(LeaderboardReadListener *callback, int difficulty, LeaderboardManager::EStatsType type, unsigned int startIndex, unsigned int readCount)
+{
+ m_filter = LeaderboardManager::eFM_TopRank;
+ m_pending = true;
+
+ m_callback = callback;
+ m_difficulty = difficulty;
+ m_type = type;
+ m_startIndex = startIndex;
+ m_readCount = readCount;
+
+ tick();
+}
+
+void LeaderboardInterface::CancelOperation()
+{
+ m_manager->CancelOperation();
+ m_pending = false;
+}
+
+void LeaderboardInterface::tick()
+{
+ if (m_pending) m_pending = !callManager();
+}
+
+bool LeaderboardInterface::callManager()
+{
+ switch (m_filter)
+ {
+ case LeaderboardManager::eFM_Friends: return m_manager->ReadStats_Friends(m_callback, m_difficulty, m_type, m_myUID, m_startIndex, m_readCount);
+ case LeaderboardManager::eFM_MyScore: return m_manager->ReadStats_MyScore(m_callback, m_difficulty, m_type, m_myUID, m_readCount);
+ case LeaderboardManager::eFM_TopRank: return m_manager->ReadStats_TopRank(m_callback, m_difficulty, m_type, m_startIndex, m_readCount);
+ default: assert(false); return true;
+ }
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/Leaderboards/LeaderboardInterface.h b/Minecraft.Client/Common/Leaderboards/LeaderboardInterface.h
new file mode 100644
index 00000000..089c482b
--- /dev/null
+++ b/Minecraft.Client/Common/Leaderboards/LeaderboardInterface.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "LeaderboardManager.h"
+
+// 4J-JEV: Simple interface for handling ReadStat failures.
+class LeaderboardInterface
+{
+private:
+ LeaderboardManager *m_manager;
+ bool m_pending;
+
+ // Arguments.
+ LeaderboardManager::EFilterMode m_filter;
+ LeaderboardReadListener *m_callback;
+ int m_difficulty;
+ LeaderboardManager::EStatsType m_type;
+ PlayerUID m_myUID;
+ unsigned int m_startIndex;
+ unsigned int m_readCount;
+
+public:
+ LeaderboardInterface(LeaderboardManager *man);
+ ~LeaderboardInterface();
+
+ void ReadStats_Friends(LeaderboardReadListener *callback, int difficulty, LeaderboardManager::EStatsType type, PlayerUID myUID, unsigned int startIndex, unsigned int readCount);
+ void ReadStats_MyScore(LeaderboardReadListener *callback, int difficulty, LeaderboardManager::EStatsType type, PlayerUID myUID, unsigned int readCount);
+ void ReadStats_TopRank(LeaderboardReadListener *callback, int difficulty, LeaderboardManager::EStatsType type, unsigned int startIndex, unsigned int readCount);
+
+ void CancelOperation();
+
+ void tick();
+
+private:
+ bool callManager();
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.cpp b/Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.cpp
new file mode 100644
index 00000000..78d62568
--- /dev/null
+++ b/Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.cpp
@@ -0,0 +1,1131 @@
+#include "stdafx.h"
+
+#include <cstdlib>
+#include <np.h>
+//#include <sys/ppu_thread.h>
+
+#include "SonyLeaderboardManager.h"
+
+#include "base64.h"
+
+#include "Common\Consoles_App.h"
+#include "Common\Network\Sony\SQRNetworkManager.h"
+
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+
+
+#ifdef __ORBIS__
+#include "Orbis\OrbisExtras\ShutdownManager.h"
+#include "Orbis\Orbis_App.h"
+#elif defined __PSVITA__
+#include "PSVita\PSVitaExtras\ShutdownManager.h"
+#include "PSVita\PSVita_App.h"
+#elif defined __PS3__
+#include "PS3\PS3Extras\ShutdownManager.h"
+#include "PS3\PS3_App.h"
+#else
+#error "SonyLeaderboardManager is included for a non-sony platform."
+#endif
+
+SonyLeaderboardManager::SonyLeaderboardManager()
+{
+ m_eStatsState = eStatsState_Idle;
+
+ m_titleContext = -1;
+
+ m_myXUID = INVALID_XUID;
+
+ m_scores = NULL;
+
+ m_statsType = eStatsType_Kills;
+ m_difficulty = 0;
+
+ m_requestId = 0;
+
+ m_openSessions = 0;
+
+ InitializeCriticalSection(&m_csViewsLock);
+
+ m_running = false;
+ m_threadScoreboard = NULL;
+}
+
+SonyLeaderboardManager::~SonyLeaderboardManager()
+{
+ m_running = false;
+
+ // 4J-JEV: Wait for thread to stop and hope it doesn't take too long.
+ long long startShutdown = System::currentTimeMillis();
+ while (m_threadScoreboard->isRunning())
+ {
+ Sleep(1);
+ assert( (System::currentTimeMillis() - startShutdown) < 16 );
+ }
+
+ delete m_threadScoreboard;
+
+ DeleteCriticalSection(&m_csViewsLock);
+}
+
+int SonyLeaderboardManager::scoreboardThreadEntry(LPVOID lpParam)
+{
+ ShutdownManager::HasStarted(ShutdownManager::eLeaderboardThread);
+ SonyLeaderboardManager *self = reinterpret_cast<SonyLeaderboardManager *>(lpParam);
+
+ self->m_running = true;
+ app.DebugPrintf("[SonyLeaderboardManager] Thread started.\n");
+
+ bool needsWriting = false;
+ do
+ {
+ if (self->m_openSessions > 0 || needsWriting)
+ {
+ self->scoreboardThreadInternal();
+ }
+
+ EnterCriticalSection(&self->m_csViewsLock);
+ needsWriting = self->m_views.size() > 0;
+ LeaveCriticalSection(&self->m_csViewsLock);
+
+ // 4J Stu - We can't write while we aren't signed in to live
+ if (!ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()))
+ {
+ needsWriting = false;
+ }
+
+ if ( (!needsWriting) && (self->m_eStatsState != eStatsState_Getting) )
+ {
+ Sleep(50); // 4J-JEV: When we're not reading or writing.
+ }
+
+ } while ( (self->m_running || self->m_eStatsState == eStatsState_Getting || needsWriting)
+ && ShutdownManager::ShouldRun(ShutdownManager::eLeaderboardThread)
+ );
+
+ // 4J-JEV, moved this here so setScore can finish up.
+ self->destroyTitleContext(self->m_titleContext);
+
+ // TODO sceNpScoreTerm();
+ app.DebugPrintf("[SonyLeaderboardManager] Thread closed.\n");
+ ShutdownManager::HasFinished(ShutdownManager::eLeaderboardThread);
+ return 0;
+}
+
+void SonyLeaderboardManager::scoreboardThreadInternal()
+{
+ // 4J-JEV: Just initialise the context the once now.
+ if (m_titleContext == -1)
+ {
+ int primaryPad = ProfileManager.GetPrimaryPad();
+
+ if (!ProfileManager.IsSignedInLive(primaryPad)) return;
+
+ int ret = initialiseScoreUtility();
+ if (ret < 0)
+ {
+ if ( !scoreUtilityAlreadyInitialised(ret) )
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] initialiseScoreUtility() failed. ret = 0x%x\n", ret);
+ return;
+ }
+ else
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] initialiseScoreUtility() already initialised, (0x%x)\n", ret);
+ }
+ }
+
+ SceNpId npId;
+ ProfileManager.GetSceNpId(primaryPad,&npId);
+
+ ret = createTitleContext(npId);
+
+ if (ret < 0) return;
+ else m_titleContext = ret;
+ }
+ else assert( m_titleContext > 0 ); //Paranoia
+
+
+ switch (m_eStatsState)
+ {
+ case eStatsState_Getting:
+ // Player starts using async multiplayer feature
+ // 4J-PB - Fix for SCEA FQA #4 - TRC R4064 - Incorrect usage of AsyncMultiplay
+ // Note 1:
+ // The following NP call should be reserved for asynchronous multiplayer modes that require PS Plus to be accessed.
+ //
+ // Note 2:
+ // The message is not displayed with a user without PlayStation®Plus subscription and they are able to access the Leaderboards.
+
+ // NotifyAsyncPlusFeature();
+
+ switch(m_eFilterMode)
+ {
+ case eFM_MyScore:
+ case eFM_Friends:
+ getScoreByIds();
+ break;
+ case eFM_TopRank:
+ getScoreByRange();
+ break;
+ }
+ break;
+
+ case eStatsState_Canceled:
+ case eStatsState_Failed:
+ case eStatsState_Ready:
+ case eStatsState_Idle:
+
+ // 4J-JEV: Moved this here, I don't want reading and
+ // writing going on at the same time.
+ // --
+ // 4J-JEV: Writing no longer changes the manager state,
+ // we'll manage the write queue seperately.
+
+ EnterCriticalSection(&m_csViewsLock);
+ bool hasWork = !m_views.empty();
+ LeaveCriticalSection(&m_csViewsLock);
+
+ if (hasWork)
+ {
+ setScore();
+ }
+
+ break;
+ }
+}
+
+HRESULT SonyLeaderboardManager::fillByIdsQuery(const SceNpId &myNpId, SceNpId* &npIds, uint32_t &len)
+{
+ HRESULT ret;
+
+ // Get queried users.
+ switch(m_eFilterMode)
+ {
+ case eFM_Friends:
+ {
+ // 4J-JEV: Implementation for Orbis & Vita as they a very similar.
+#if (defined __ORBIS__) || (defined __PSVITA__)
+
+ sce::Toolkit::NP::Utilities::Future<sce::Toolkit::NP::FriendsList> s_friendList;
+ ret = getFriendsList(s_friendList);
+
+ if(ret != SCE_TOOLKIT_NP_SUCCESS)
+ {
+ // Error handling
+ if (m_eStatsState != eStatsState_Canceled) m_eStatsState = eStatsState_Failed;
+ app.DebugPrintf("[SonyLeaderboardManager] 'getFriendslist' fail, 0x%x.\n", ret);
+ return false;
+ }
+ else if (s_friendList.hasResult())
+ {
+ // 4J-JEV: Friends list doesn't include player, leave space for them.
+ len = s_friendList.get()->size() + 1;
+
+ npIds = new SceNpId[len];
+
+ int i = 0;
+
+ sce::Toolkit::NP::FriendsList::const_iterator itr;
+ for (itr = s_friendList.get()->begin(); itr != s_friendList.get()->end(); itr++)
+ {
+ npIds[i] = itr->npid;
+ i++;
+ }
+
+ npIds[len-1] = myNpId; // 4J-JEV: Append player to end of query.
+ }
+ else
+ {
+ // 4J-JEV: Something terrible must have happend,
+ // 'getFriendslist' was supposed to be a synchronous operation.
+ __debugbreak();
+
+ // 4J-JEV: We can at least fall-back to just the players score.
+ len = 1;
+ npIds = new SceNpId[1];
+
+ npIds[0] = myNpId;
+ }
+
+#elif (defined __PS3__)
+ // PS3
+
+ // 4J-JEV: Doesn't include the player (its just their friends).
+ ret = sceNpBasicGetFriendListEntryCount(&len);
+ len += 1;
+
+ npIds = new SceNpId[len];
+
+
+ for (uint32_t i = 0; i < len-1; i++)
+ {
+ ret = sceNpBasicGetFriendListEntry(i, npIds+i);
+ if (ret<0) return ret;
+
+ }
+ npIds[len-1] = myNpId; // 4J-JEV: Append player to end of query.
+
+#endif
+ }
+ break;
+ case eFM_MyScore:
+ {
+ len = 1;
+ npIds = new SceNpId[1];
+ npIds[0] = myNpId;
+ }
+ break;
+ }
+
+ return S_OK;
+}
+
+bool SonyLeaderboardManager::getScoreByIds()
+{
+ if (m_eStatsState == eStatsState_Canceled) return false;
+
+ // ----------------------------
+ SonyRtcTick last_sort_date;
+ SceNpScoreRankNumber mTotalRecord;
+
+ SceNpId *npIds = NULL;
+
+ int ret;
+ uint32_t num = 0;
+
+ SceNpScorePlayerRankData *ptr;
+ SceNpScoreComment *comments;
+ // ----------------------------
+
+ // Check for invalid LManager state.
+ assert( m_eFilterMode == eFM_Friends
+ || m_eFilterMode == eFM_MyScore);
+
+ SceNpId myNpId;
+ // 4J-PB - should it be user 0?
+ if(!ProfileManager.IsSignedInLive(0))
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] OpenSession() fail: User isn't signed in to PSN\n");
+ return false;
+ }
+ ProfileManager.GetSceNpId(0,&myNpId);
+
+ ret = fillByIdsQuery(myNpId, npIds, num);
+#ifdef __PS3__
+ if (ret < 0) goto error2;
+#endif
+
+ ptr = new SceNpScorePlayerRankData[num];
+ comments = new SceNpScoreComment[num];
+
+ ZeroMemory(ptr, sizeof(SceNpScorePlayerRankData) * num);
+ ZeroMemory(comments, sizeof(SceNpScoreComment) * num);
+
+ /* app.DebugPrintf("sceNpScoreGetRankingByNpId(\n\t transaction=%i,\n\t boardID=0,\n\t npId=%i,\n\t friendCount*sizeof(SceNpId)=%i*%i=%i,\
+ rankData=%i,\n\t friendCount*sizeof(SceNpScorePlayerRankData)=%i,\n\t NULL, 0, NULL, 0,\n\t friendCount=%i,\n...\n",
+ transaction, npId, friendCount, sizeof(SceNpId), friendCount*sizeof(SceNpId),
+ rankData, friendCount*sizeof(SceNpScorePlayerRankData), friendCount
+ ); */
+
+ int boardId = getBoardId(m_difficulty, m_statsType);
+
+ // 4J-JEV: Orbis can only do with 100 ids max, so we use batches.
+#ifdef __ORBIS__
+ for (int batch=0; batch<num; batch+=100)
+ {
+#endif
+ ret = createTransactionContext(m_titleContext);
+ if (m_eStatsState == eStatsState_Canceled)
+ {
+ // Cancel operation has been called, abort.
+ app.DebugPrintf("[SonyLeaderboardManager]\tgetScoreByIds() - m_eStatsState == eStatsState_Canceled.\n");
+
+ destroyTransactionContext(ret);
+
+ if (npIds != NULL) delete [] npIds;
+ if (ptr != NULL) delete [] ptr;
+ if (comments != NULL) delete [] comments;
+
+ return false;
+ }
+ else if (ret < 0)
+ {
+ // Error occurred creating a transacion, abort.
+ app.DebugPrintf("[SonyLeaderboardManager]\tgetScoreByIds() - createTransaction failed, ret=0x%X\n", ret);
+
+ m_eStatsState = eStatsState_Failed;
+
+ if (npIds != NULL) delete [] npIds;
+ if (ptr != NULL) delete [] ptr;
+ if (comments != NULL) delete [] comments;
+
+ return false;
+ }
+ else
+ {
+ // Transaction created successfully, continue.
+ m_requestId = ret;
+ }
+
+#ifdef __ORBIS__
+ int tmpNum = min( num - batch, (unsigned int) 100 );
+ app.DebugPrintf("[SonyLeaderboardManager]\t Requesting ids %i-%i of %i.\n", batch, batch+tmpNum, num);
+#else
+ int tmpNum = num;
+#endif
+ ret = sceNpScoreGetRankingByNpId(
+ m_requestId,
+ boardId, // BoardId
+
+#ifdef __ORBIS__
+ batch + npIds, sizeof(SceNpId) * tmpNum, //IN: Player IDs
+ batch + ptr, sizeof(SceNpScorePlayerRankData) * tmpNum, //OUT: Rank Data
+ batch + comments, sizeof(SceNpScoreComment) * tmpNum, //OUT: Comments
+#else
+ npIds, sizeof(SceNpId) * tmpNum, //IN: Player IDs
+ ptr, sizeof(SceNpScorePlayerRankData) * tmpNum, //OUT: Rank Data
+ comments, sizeof(SceNpScoreComment) * tmpNum, //OUT: Comments
+#endif
+
+ NULL, 0, // GameData. (unused)
+
+ tmpNum,
+
+ &last_sort_date,
+ &mTotalRecord,
+
+ NULL // Reserved, specify null.
+ );
+
+ if (ret == SCE_NP_COMMUNITY_ERROR_ABORTED)
+ {
+ ret = destroyTransactionContext(m_requestId);
+ app.DebugPrintf("[SonyLeaderboardManager] getScoreByIds(): 'sceNpScoreGetRankingByRange' aborted (0x%X).\n", ret);
+
+ delete [] ptr;
+ delete [] comments;
+ delete [] npIds;
+
+ return false;
+ }
+ else if (ret == SCE_NP_COMMUNITY_SERVER_ERROR_GAME_RANKING_NOT_FOUND)
+ {
+ // 4J-JEV: Keep going, other batches might have scores.
+ }
+ else if (ret<0) goto error3;
+
+ // Return.
+ destroyTransactionContext(m_requestId);
+ m_requestId = 0;
+
+#ifdef __ORBIS__
+ }
+#endif
+
+ m_readCount = num;
+
+ // Filter scorers and construct output structure.
+ if (m_scores != NULL) delete [] m_scores;
+ m_scores = new ReadScore[m_readCount];
+ convertToOutput(m_readCount, m_scores, ptr, comments);
+ m_maxRank = m_readCount;
+
+ app.DebugPrintf(
+ "[SonyLeaderboardManager] getScoreByIds(), Success!\n"
+ "\t Board %i\n"
+ "\t %i of %i results have an entry\n"
+ "1stScore=%i\n",
+ boardId,
+ m_readCount, num,
+ ptr->rankData.scoreValue
+ );
+
+ // Sort scores
+ std::sort(m_scores, m_scores + m_readCount, SortByRank);
+
+ delete [] ptr;
+ delete [] comments;
+ delete [] npIds;
+
+ m_eStatsState = eStatsState_Ready;
+ return true;
+
+ // Error.
+error3:
+ if (ret!=SCE_NP_COMMUNITY_ERROR_ABORTED) //0x8002a109
+ destroyTransactionContext(m_requestId);
+ m_requestId = 0;
+ delete [] ptr;
+ delete [] comments;
+error2:
+ if (npIds != NULL) delete [] npIds;
+error1:
+ if (m_eStatsState != eStatsState_Canceled) m_eStatsState = eStatsState_Failed;
+ app.DebugPrintf("[SonyLeaderboardManager] getScoreByIds() FAILED, ret=0x%X\n", ret);
+ return false;
+}
+
+bool SonyLeaderboardManager::getScoreByRange()
+{
+ SonyRtcTick last_sort_date;
+ SceNpScoreRankNumber mTotalRecord;
+
+ unsigned int num = m_readCount;
+ SceNpScoreRankData *ptr;
+ SceNpScoreComment *comments;
+
+ assert(m_eFilterMode == eFM_TopRank);
+
+ int ret = createTransactionContext(m_titleContext);
+ if (m_eStatsState == eStatsState_Canceled)
+ {
+ // Cancel operation has been called, abort.
+ app.DebugPrintf("[SonyLeaderboardManager]\tgetScoreByRange() - m_eStatsState == eStatsState_Canceled.\n");
+ destroyTransactionContext(ret);
+ return false;
+ }
+ else if (ret < 0)
+ {
+ // Error occurred creating a transaction, abort.
+ m_eStatsState = eStatsState_Failed;
+ app.DebugPrintf("[SonyLeaderboardManager]\tgetScoreByRange() - createTransaction failed, ret=0x%X\n", ret);
+ return false;
+ }
+ else
+ {
+ // Transaction created successfully, continue.
+ m_requestId = ret;
+ }
+
+ ptr = new SceNpScoreRankData[num];
+ comments = new SceNpScoreComment[num];
+
+ int boardId = getBoardId(m_difficulty, m_statsType);
+ ret = sceNpScoreGetRankingByRange(
+ m_requestId,
+ boardId, // BoardId
+
+ m_startIndex,
+
+ ptr, sizeof(SceNpScoreRankData) * num, //OUT: Rank Data
+
+ comments, sizeof(SceNpScoreComment) * num, //OUT: Comment Data
+
+ NULL, 0, // GameData.
+
+ num,
+
+ &last_sort_date,
+ &m_maxRank, // 'Total number of players registered in the target scoreboard.'
+
+ NULL // Reserved, specify null.
+ );
+
+ if (ret == SCE_NP_COMMUNITY_ERROR_ABORTED)
+ {
+ ret = destroyTransactionContext(m_requestId);
+ app.DebugPrintf("[SonyLeaderboardManager] getScoreByRange(): 'sceNpScoreGetRankingByRange' aborted (0x%X).\n", ret);
+
+ delete [] ptr;
+ delete [] comments;
+
+ return false;
+ }
+ else if (ret == SCE_NP_COMMUNITY_SERVER_ERROR_GAME_RANKING_NOT_FOUND)
+ {
+ ret = destroyTransactionContext(m_requestId);
+ app.DebugPrintf("[SonyLeaderboardManager] getScoreByRange(): Game ranking not found.");
+
+ delete [] ptr;
+ delete [] comments;
+
+ m_scores = NULL;
+ m_readCount = 0;
+
+ m_eStatsState = eStatsState_Ready;
+ return false;
+ }
+ else if (ret<0) goto error2;
+ else
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] getScoreByRange(), success, 1stScore=%i.\n", ptr->scoreValue);
+ }
+
+ // Return.
+ destroyTransactionContext(m_requestId);
+ m_requestId = 0;
+
+ //m_stats = ptr; //Maybe: addPadding(num,ptr);
+
+ if (m_scores != NULL) delete [] m_scores;
+ m_readCount = ret;
+ m_scores = new ReadScore[m_readCount];
+ for (int i=0; i<m_readCount; i++)
+ {
+ //memcpy(m_scores+i, ptr+i, sizeof(SceNpScoreRankData));
+ initReadScoreStruct(m_scores[i], ptr[i]);
+ //fromBase32(m_scores+i, comments+i);
+ fillReadScoreStruct(m_scores[i], comments[i]);
+ }
+
+ m_eStatsState = eStatsState_Ready;
+ return true;
+
+ // Error.
+error2:
+ if (ret!=SCE_NP_COMMUNITY_ERROR_ABORTED) //0x8002a109
+ destroyTransactionContext(m_requestId);
+ m_requestId = 0;
+
+ delete [] ptr;
+ delete [] comments;
+error1:
+ if (m_eStatsState != eStatsState_Canceled) m_eStatsState = eStatsState_Failed;
+ app.DebugPrintf("[SonyLeaderboardManager]\tgetScoreByRange() failed, ret=0x%X\n", ret);
+ return false;
+}
+
+bool SonyLeaderboardManager::setScore()
+{
+ int ret;
+ SceNpId npId;
+ int32_t writeTitleContext = 0;
+ SceNpScoreRankNumber tmp = 0;
+ SceNpScoreComment comment;
+
+ // Get next job.
+
+ EnterCriticalSection(&m_csViewsLock);
+ RegisterScore rscore = m_views.front();
+ m_views.pop();
+ LeaveCriticalSection(&m_csViewsLock);
+
+ if ( ProfileManager.IsGuest(rscore.m_iPad) )
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] setScore(): m_iPad[%i] is guest.\n", rscore.m_iPad);
+ return true;
+ }
+
+ ProfileManager.GetSceNpId(rscore.m_iPad, &npId);
+ writeTitleContext = createTitleContext(npId);
+ if (writeTitleContext < 0)
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] setScore(): sceNpScoreCreateTitleCtx FAILED, ret == %X.\n", ret);
+ return false;
+ }
+
+ ret = createTransactionContext(writeTitleContext);
+
+ // Start emptying queue if leaderboards has been closed.
+ if (ret == SCE_NP_COMMUNITY_ERROR_NOT_INITIALIZED)
+ {
+ EnterCriticalSection(&m_csViewsLock);
+ m_views.pop();
+ LeaveCriticalSection(&m_csViewsLock);
+ }
+
+ // Error handling.
+ if (ret<0)
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] setScore() FAILED, ret=0x%X\n", ret);
+ destroyTitleContext(writeTitleContext);
+ return false;
+ }
+ m_requestId = ret;
+
+ toBase32(&comment, (void *) &rscore.m_commentData);
+
+ int boardId = getBoardId(rscore.m_difficulty, rscore.m_commentData.m_statsType);
+ ret = sceNpScoreRecordScore(
+ m_requestId, // transId,
+ boardId, // boardId,
+ rscore.m_score, //IN: new score,
+
+ &comment, // Comments
+ NULL, // GameInfo
+
+ &tmp, //OUT: current rank,
+
+#ifndef __PS3__
+ NULL, //compareDate
+#endif
+
+ NULL // Reserved, specify null.
+ );
+
+ if (ret==SCE_NP_COMMUNITY_SERVER_ERROR_NOT_BEST_SCORE) //0x8002A415
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] setScore(), doesn't beat current score, %i.\n", tmp);
+ }
+ else if (ret==SCE_NP_COMMUNITY_ERROR_ABORTED)
+ {
+ goto error1;//0x8002a109
+ }
+ else if (ret<0)
+ {
+ goto error2;
+ }
+ else
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] setScore(), success. boardId=%i, score=%i\n", boardId, rscore.m_score);
+ }
+
+ // Return.
+ destroyTransactionContext(m_requestId);
+ m_requestId = 0;
+ //m_eStatsState = eStatsState_Idle;
+ return true;
+
+ // Error.
+error2:
+ destroyTransactionContext(m_requestId);
+ m_requestId = 0;
+
+error1:
+ app.DebugPrintf("[SonyLeaderboardManager] setScore() FAILED, ret=0x%X\n", ret);
+ destroyTitleContext(writeTitleContext);
+ return false;
+}
+
+void SonyLeaderboardManager::Tick()
+{
+ ReadView view;
+
+ switch( m_eStatsState )
+ {
+ case eStatsState_Ready:
+ {
+ assert(m_scores != NULL || m_readCount == 0);
+
+ view.m_numQueries = m_readCount;
+ view.m_queries = m_scores;
+
+ // 4J-JEV: Debugging.
+ //LeaderboardManager::printStats(view);
+
+ eStatsReturn ret = eStatsReturn_NoResults;
+ if (view.m_numQueries > 0)
+ ret = eStatsReturn_Success;
+
+ if (m_readListener != NULL)
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] OnStatsReadComplete(%i, %i, _), m_readCount=%i.\n", ret, m_maxRank, m_readCount);
+ m_readListener->OnStatsReadComplete(ret, m_maxRank, view);
+ }
+
+ m_eStatsState = eStatsState_Idle;
+
+ delete [] m_scores;
+ m_scores = NULL;
+ }
+ break;
+
+ case eStatsState_Failed:
+ {
+ view.m_numQueries = 0;
+ view.m_queries = NULL;
+
+ if ( m_readListener != NULL )
+ m_readListener->OnStatsReadComplete(eStatsReturn_NetworkError, 0, view);
+
+ m_eStatsState = eStatsState_Idle;
+ }
+ break;
+
+ case eStatsState_Canceled:
+ {
+ m_eStatsState = eStatsState_Idle;
+ }
+ break;
+
+ default: // Getting or Idle.
+ break;
+ }
+}
+
+bool SonyLeaderboardManager::OpenSession()
+{
+ if (m_openSessions == 0)
+ {
+ if (m_threadScoreboard == NULL)
+ {
+ m_threadScoreboard = new C4JThread(&scoreboardThreadEntry, this, "4JScoreboard");
+ m_threadScoreboard->SetProcessor(CPU_CORE_LEADERBOARDS);
+ m_threadScoreboard->SetPriority(THREAD_PRIORITY_BELOW_NORMAL);
+ m_threadScoreboard->Run();
+ }
+
+ app.DebugPrintf("[SonyLeaderboardManager] OpenSession(): Starting sceNpScore utility.\n");
+ }
+ else
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] OpenSession(): Another session opened, total=%i\n", m_openSessions+1);
+ }
+
+ m_openSessions++;
+ return true;
+}
+
+void SonyLeaderboardManager::CloseSession()
+{
+ m_openSessions--;
+
+ if (m_openSessions == 0) app.DebugPrintf("[SonyLeaderboardManager] CloseSession(): Quitting sceNpScore utility.\n");
+ else app.DebugPrintf("[SonyLeaderboardManager] CloseSession(): %i sessions still open.\n", m_openSessions);
+}
+
+void SonyLeaderboardManager::DeleteSession() {}
+
+bool SonyLeaderboardManager::WriteStats(unsigned int viewCount, ViewIn views)
+{
+ // Need to cancel read/write operation first.
+ //if (m_eStatsState != eStatsState_Idle) return false;
+
+ // Write relevant parameters.
+ //RegisterScore *regScore = reinterpret_cast<RegisterScore *>(views);
+
+ EnterCriticalSection(&m_csViewsLock);
+ for (int i=0; i<viewCount; i++)
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] WriteStats(), starting. difficulty=%i, statsType=%i, score=%i\n",
+ views[i].m_difficulty, views[i].m_commentData.m_statsType, views[i].m_score);
+
+ m_views.push(views[i]);
+ }
+ LeaveCriticalSection(&m_csViewsLock);
+
+ delete [] views; //*regScore;
+
+ //m_eStatsState = eStatsState_Writing;
+ return true;
+}
+
+// myUID ignored on PS3.
+bool SonyLeaderboardManager::ReadStats_Friends(LeaderboardReadListener *listener, int difficulty, EStatsType type, PlayerUID myUID, unsigned int startIndex, unsigned int readCount)
+{
+ // Need to cancel read/write operation first.
+ if (m_eStatsState != eStatsState_Idle) return false;
+ if (!LeaderboardManager::ReadStats_Friends(listener, difficulty, type, myUID, startIndex, readCount)) return false;
+
+ m_eStatsState = eStatsState_Getting;
+ return true;
+}
+
+// myUID ignored on PS3.
+bool SonyLeaderboardManager::ReadStats_MyScore(LeaderboardReadListener *listener, int difficulty, EStatsType type, PlayerUID myUID, unsigned int readCount)
+{
+ // Need to cancel read/write operation first.
+ if (m_eStatsState != eStatsState_Idle) return false;
+ if (!LeaderboardManager::ReadStats_MyScore(listener, difficulty, type, myUID, readCount)) return false;
+
+ m_eStatsState = eStatsState_Getting;
+ return true;
+}
+
+// myUID ignored on PS3.
+bool SonyLeaderboardManager::ReadStats_TopRank(LeaderboardReadListener *listener, int difficulty, EStatsType type, unsigned int startIndex, unsigned int readCount)
+{
+ // Need to cancel read/write operation first.
+ if (m_eStatsState != eStatsState_Idle) return false;
+ if (!LeaderboardManager::ReadStats_TopRank(listener, difficulty, type, startIndex, readCount)) return false;
+
+ m_eStatsState = eStatsState_Getting;
+ return true;
+}
+
+void SonyLeaderboardManager::FlushStats() {}
+
+void SonyLeaderboardManager::CancelOperation()
+{
+ m_readListener = NULL;
+ m_eStatsState = eStatsState_Canceled;
+
+ if (m_requestId != 0)
+ {
+ int ret = abortTransactionContext(m_requestId);
+ if (ret < 0) app.DebugPrintf("[SonyLeaderboardManager] CancelOperation(): Problem encountered aborting current operation, 0x%X.\n", ret);
+ else app.DebugPrintf("[SonyLeaderboardManager] CancelOperation(): Operation aborted successfully.\n");
+ }
+ else
+ {
+ app.DebugPrintf("[SonyLeaderboardManager] CancelOperation(): No current operation.\n");
+ }
+}
+
+bool SonyLeaderboardManager::isIdle()
+{
+ return m_eStatsState == eStatsState_Idle;
+}
+
+int SonyLeaderboardManager::getBoardId(int difficulty, EStatsType statsType)
+{
+ switch (statsType)
+ {
+ case eStatsType_Travelling:
+ if (0 <= difficulty && difficulty < 4) return 1 + difficulty; // [1,2,3,4]
+ else return -1;
+
+ case eStatsType_Mining:
+ if (0 <= difficulty && difficulty < 4) return 5 + difficulty; // [5,6,7,8]
+ else return -1;
+
+ case eStatsType_Farming:
+ if (0 <= difficulty && difficulty < 4) return 9 + difficulty; // [9,10,11,12]
+ else return -1;
+
+ case eStatsType_Kills:
+ if (1 <= difficulty && difficulty < 4) return 13 + difficulty - 1; // [13,14,15,16]
+ else return -1;
+
+ default: return -1;
+ }
+}
+
+// 4J-JEV: Filter out all friends who don't have scores.
+/*
+SceNpScoreRankData *SonyLeaderboardManager::filterJustScorers(unsigned int &num, SceNpScorePlayerRankData *friendsData)
+{
+int num2 = 0;
+for (int i=0; i<num; i++) if (friendsData[i].hasData) num2++;
+num = num2; num2 = 0;
+SceNpScoreRankData *out = new SceNpScoreRankData[num];
+for (int i=0; i<num; i++) if (friendsData[i].hasData) out[num2++] = friendsData[i].rankData;
+return out;
+} */
+
+// 4J-JEV: Unused, here if we want to switch LeaderboardManager::ViewOut to 'SceNpScorePlayerRankData'.
+SceNpScorePlayerRankData *SonyLeaderboardManager::addPadding(unsigned int num, SceNpScoreRankData *rankData)
+{
+ SceNpScorePlayerRankData *out = new SceNpScorePlayerRankData[num];
+ for (int i=0; i<num; i++)
+ {
+ out[i].hasData = true;
+ out[i].rankData = rankData[i];
+ }
+ delete [] rankData;
+ return out;
+}
+
+// 4J-JEV: Filter and create output object.
+void SonyLeaderboardManager::convertToOutput(unsigned int &num, ReadScore *out, SceNpScorePlayerRankData *rankData, SceNpScoreComment *comm)
+{
+ int j=0;
+ for (int i=0; i<num; i++)
+ {
+ if (rankData[i].hasData)
+ {
+ initReadScoreStruct( out[j], rankData[i].rankData );
+ fillReadScoreStruct( out[j], comm[i] );
+
+ j++;
+ }
+ }
+
+ num = j;
+}
+
+void SonyLeaderboardManager::toBinary(void *out, SceNpScoreComment *in)
+{
+ string decoded = base64_decode( string((char*)in) );
+ memcpy(out, decoded.c_str(), RECORD_SIZE);
+}
+
+void SonyLeaderboardManager::fromBinary(SceNpScoreComment **out, void *in)
+{
+ *out = (SceNpScoreComment *) new unsigned char[SCE_NP_SCORE_COMMENT_MAXLEN + 1];
+ string encoded = base64_encode((unsigned char const *) in, RECORD_SIZE);
+ memcpy(out, encoded.c_str(), SCE_NP_SCORE_COMMENT_MAXLEN);
+}
+
+void SonyLeaderboardManager::toBase32(SceNpScoreComment *out, void *in)
+{
+ ZeroMemory(out,sizeof(SceNpScoreComment));
+ PBYTE bytes = (PBYTE) in;
+ char *chars = getComment(out);
+
+ for (int i = 0; i < SCE_NP_SCORE_COMMENT_MAXLEN; i++)
+ {
+ int sByte = (i*5) / 8;
+ int eByte = (5+(i*5)) / 8;
+ int dIndex = (i*5) % 8;
+
+ unsigned char fivebits = 0;
+
+ fivebits = *(bytes+sByte) << dIndex;
+
+ if (eByte != sByte)
+ fivebits = fivebits | *(bytes+eByte) >> (8-dIndex);
+
+ fivebits = (fivebits>>3) & 0x1F;
+
+ if (fivebits < 10) // 0 - 9
+ chars[i] = '0' + fivebits;
+ else if (fivebits < 32) // A - V
+ chars[i] = 'A' + (fivebits-10);
+ else
+ assert(false);
+ }
+
+ toSymbols( getComment(out) );
+}
+
+void SonyLeaderboardManager::fromBase32(void *out, SceNpScoreComment *in)
+{
+ PBYTE bytes = (PBYTE) out;
+ ZeroMemory(bytes, RECORD_SIZE);
+
+ fromSymbols( getComment(in) );
+
+ char ch[2] = { 0, 0 };
+ for (int i = 0; i < SCE_NP_SCORE_COMMENT_MAXLEN; i++)
+ {
+ ch[0] = getComment(in)[i];
+ unsigned char fivebits = strtol(ch, NULL, 32) << 3;
+
+ int sByte = (i*5) / 8;
+ int eByte = (5+(i*5)) / 8;
+ int dIndex = (i*5) % 8;
+
+ *(bytes + sByte) = *(bytes+sByte) | (fivebits >> dIndex);
+
+ if (eByte != sByte)
+ *(bytes + eByte) = fivebits << (8-dIndex);
+ }
+}
+
+char symbBase32[32] = {
+ ' ', '!','\"', '#', '$', '%', '&','\'', '(', ')',
+ '*', '+', '`', '-', '.', '/', ':', ';', '<', '=',
+ '>', '?', '[','\\', ']', '^', '_', '{', '|', '}',
+ '~', '@'
+};
+
+char charBase32[32] = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+ 'U', 'V'
+};
+
+void SonyLeaderboardManager::toSymbols(char *str)
+{
+ for (int i = 0; i < 63; i++)
+ {
+ for (int j=0; j < 32; j++)
+ {
+ if (str[i]==charBase32[j])
+ str[i] =symbBase32[j];
+ }
+ }
+}
+
+void SonyLeaderboardManager::fromSymbols(char *str)
+{
+ for (int i = 0; i < 63; i++)
+ {
+ for (int j=0; j < 32; j++)
+ {
+ if (str[i]==symbBase32[j])
+ str[i] =charBase32[j];
+ }
+ }
+}
+
+bool SonyLeaderboardManager::test_string(string testing)
+{
+#ifndef _CONTENT_PACKAGE
+ static SceNpScoreComment comment;
+ ZeroMemory(&comment, sizeof(SceNpScoreComment));
+ memcpy(&comment, testing.c_str(), SCE_NP_SCORE_COMMENT_MAXLEN);
+
+ int ctx = createTransactionContext(m_titleContext);
+ if (ctx<0) return false;
+
+ int ret = sceNpScoreCensorComment(ctx, (const char *) &comment, NULL);
+
+ if (ret == SCE_NP_COMMUNITY_SERVER_ERROR_CENSORED)
+ {
+ app.DebugPrintf("\n[TEST_STRING]: REJECTED ");
+ }
+ else if (ret < 0)
+ {
+ destroyTransactionContext(ctx);
+ return false;
+ }
+ else
+ {
+ app.DebugPrintf("\n[TEST_STRING]: permitted ");
+ }
+
+ app.DebugPrintf("'%s'\n", getComment(&comment));
+ destroyTransactionContext(ctx);
+ return true;
+#else
+ return true;
+#endif
+}
+
+void SonyLeaderboardManager::initReadScoreStruct(ReadScore &out, SceNpScoreRankData &rankData)
+{
+ ZeroMemory(&out, sizeof(ReadScore));
+
+ // Init rank and onlineID
+ out.m_uid.setOnlineID( rankData.npId.handle, true );
+ out.m_rank = rankData.rank;
+
+ // Convert to wstring and copy name.
+ wstring wstrName = convStringToWstring( string(rankData.npId.handle.data) ).c_str();
+ //memcpy(&out.m_name, wstrName.c_str(), XUSER_NAME_SIZE);
+ out.m_name=wstrName;
+}
+
+void SonyLeaderboardManager::fillReadScoreStruct(ReadScore &out, SceNpScoreComment &comment)
+{
+ StatsData statsData;
+ fromBase32( (void *) &statsData, &comment );
+
+ switch (statsData.m_statsType)
+ {
+ case eStatsType_Farming:
+ out.m_statsSize = 6;
+ out.m_statsData[0] = statsData.m_farming.m_eggs;
+ out.m_statsData[1] = statsData.m_farming.m_wheat;
+ out.m_statsData[2] = statsData.m_farming.m_mushroom;
+ out.m_statsData[3] = statsData.m_farming.m_sugarcane;
+ out.m_statsData[4] = statsData.m_farming.m_milk;
+ out.m_statsData[5] = statsData.m_farming.m_pumpkin;
+ break;
+ case eStatsType_Mining:
+ out.m_statsSize = 7;
+ out.m_statsData[0] = statsData.m_mining.m_dirt;
+ out.m_statsData[1] = statsData.m_mining.m_cobblestone;
+ out.m_statsData[2] = statsData.m_mining.m_sand;
+ out.m_statsData[3] = statsData.m_mining.m_stone;
+ out.m_statsData[4] = statsData.m_mining.m_gravel;
+ out.m_statsData[5] = statsData.m_mining.m_clay;
+ out.m_statsData[6] = statsData.m_mining.m_obsidian;
+ break;
+ case eStatsType_Kills:
+ out.m_statsSize = 7;
+ out.m_statsData[0] = statsData.m_kills.m_zombie;
+ out.m_statsData[1] = statsData.m_kills.m_skeleton;
+ out.m_statsData[2] = statsData.m_kills.m_creeper;
+ out.m_statsData[3] = statsData.m_kills.m_spider;
+ out.m_statsData[4] = statsData.m_kills.m_spiderJockey;
+ out.m_statsData[5] = statsData.m_kills.m_zombiePigman;
+ out.m_statsData[6] = statsData.m_kills.m_slime;
+ break;
+ case eStatsType_Travelling:
+ out.m_statsSize = 4;
+ out.m_statsData[0] = statsData.m_travelling.m_walked;
+ out.m_statsData[1] = statsData.m_travelling.m_fallen;
+ out.m_statsData[2] = statsData.m_travelling.m_minecart;
+ out.m_statsData[3] = statsData.m_travelling.m_boat;
+ break;
+ }
+}
+
+bool SonyLeaderboardManager::SortByRank(const ReadScore &lhs, const ReadScore &rhs)
+{
+ return lhs.m_rank < rhs.m_rank;
+}
diff --git a/Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.h b/Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.h
new file mode 100644
index 00000000..3b2c26c5
--- /dev/null
+++ b/Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.h
@@ -0,0 +1,133 @@
+#pragma once
+
+#include "Common\Leaderboards\LeaderboardManager.h"
+
+#ifdef __PS3__
+typedef CellRtcTick SonyRtcTick;
+#else
+typedef SceRtcTick SonyRtcTick;
+#endif
+
+class SonyLeaderboardManager : public LeaderboardManager
+{
+protected:
+ enum EStatsState
+ {
+ eStatsState_Idle,
+ eStatsState_Getting,
+ eStatsState_Failed,
+ eStatsState_Ready,
+ eStatsState_Canceled,
+ eStatsState_Max
+ };
+
+public:
+ SonyLeaderboardManager();
+ virtual ~SonyLeaderboardManager();
+
+protected:
+ unsigned short m_openSessions;
+
+ C4JThread *m_threadScoreboard;
+ bool m_running;
+
+ int m_titleContext;
+ int32_t m_requestId;
+
+ //SceNpId m_myNpId;
+
+ static int scoreboardThreadEntry(LPVOID lpParam);
+ void scoreboardThreadInternal();
+
+ virtual bool getScoreByIds();
+ virtual bool getScoreByRange();
+
+ virtual bool setScore();
+
+ queue<RegisterScore> m_views;
+
+ CRITICAL_SECTION m_csViewsLock;
+
+ EStatsState m_eStatsState; //State of the stats read
+ // EFilterMode m_eFilterMode;
+
+ ReadScore *m_scores;
+ unsigned int m_maxRank;
+ //SceNpScoreRankData *m_stats;
+
+public:
+ 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();
+
+ //Is the leaderboard manager idle.
+ virtual bool isIdle();
+
+protected:
+ int getBoardId(int difficulty, EStatsType);
+
+ SceNpScorePlayerRankData *addPadding(unsigned int num, SceNpScoreRankData *rankData);
+
+ void convertToOutput(unsigned int &num, ReadScore *out, SceNpScorePlayerRankData *rankData, SceNpScoreComment *comm);
+
+ void toBinary(void *out, SceNpScoreComment *in);
+ void fromBinary(SceNpScoreComment **out, void *in);
+
+ void toBase32(SceNpScoreComment *out, void *in);
+ void fromBase32(void *out, SceNpScoreComment *in);
+
+ void toSymbols(char *);
+ void fromSymbols(char *);
+
+ bool test_string(string);
+
+ void initReadScoreStruct(ReadScore &out, SceNpScoreRankData &);
+ void fillReadScoreStruct(ReadScore &out, SceNpScoreComment &comment);
+
+ static bool SortByRank(const ReadScore &lhs, const ReadScore &rhs);
+
+
+protected:
+ // 4J-JEV: Interface differences:
+
+ // Sce NP score library function redirects.
+ virtual HRESULT initialiseScoreUtility() { return ERROR_SUCCESS; }
+ virtual bool scoreUtilityAlreadyInitialised(HRESULT hr) { return false; }
+
+ virtual HRESULT createTitleContext(const SceNpId &npId) = 0;
+ virtual HRESULT destroyTitleContext(int titleContext) = 0;
+
+ virtual HRESULT createTransactionContext(int titleContext) = 0;
+ virtual HRESULT abortTransactionContext(int transactionContext) = 0;
+ virtual HRESULT destroyTransactionContext(int transactionContext) = 0;
+
+ virtual HRESULT fillByIdsQuery(const SceNpId &myNpId, SceNpId* &npIds, uint32_t &len);
+
+#if (defined __ORBIS__) || (defined __PSVITA__)
+ virtual HRESULT getFriendsList(sce::Toolkit::NP::Utilities::Future<sce::Toolkit::NP::FriendsList> &friendsList) = 0;
+#endif
+
+ virtual char * getComment(SceNpScoreComment *comment) = 0;
+};
diff --git a/Minecraft.Client/Common/Leaderboards/base64.cpp b/Minecraft.Client/Common/Leaderboards/base64.cpp
new file mode 100644
index 00000000..19106cc4
--- /dev/null
+++ b/Minecraft.Client/Common/Leaderboards/base64.cpp
@@ -0,0 +1,131 @@
+/*
+ base64.cpp and base64.h
+
+ Copyright (C) 2004-2008 René Nyffenegger
+
+ This source code is provided 'as-is', without any express or implied
+ warranty. In no event will the author be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this source code must not be misrepresented; you must not
+ claim that you wrote the original source code. If you use this source code
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original source code.
+
+ 3. This notice may not be removed or altered from any source distribution.
+
+ René Nyffenegger rene.nyffenegger@adp-gmbh.ch
+
+*/
+
+#include "stdafx.h"
+
+#include "base64.h"
+#include <iostream>
+
+static const std::string base64_chars =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789+/";
+
+
+static inline bool is_base64(unsigned char c) {
+ return (isalnum(c) || (c == '+') || (c == '/'));
+}
+
+// 4J ADDED,
+std::string base64_encode(std::string str)
+{
+ return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() );
+}
+
+std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) {
+ std::string ret;
+ int i = 0;
+ int j = 0;
+ unsigned char char_array_3[3];
+ unsigned char char_array_4[4];
+
+ while (in_len--) {
+ char_array_3[i++] = *(bytes_to_encode++);
+ if (i == 3) {
+ char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
+ char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
+ char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
+ char_array_4[3] = char_array_3[2] & 0x3f;
+
+ for(int ii = 0; (ii <4) ; ii++)
+ ret += base64_chars[char_array_4[ii]];
+ i = 0;
+ }
+ }
+
+ if (i)
+ {
+ for(j = i; j < 3; j++)
+ char_array_3[j] = '\0';
+
+ char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
+ char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
+ char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
+ char_array_4[3] = char_array_3[2] & 0x3f;
+
+ for (j = 0; (j < i + 1); j++)
+ ret += base64_chars[char_array_4[j]];
+
+ while((i++ < 3))
+ ret += '=';
+
+ }
+
+ return ret;
+
+}
+
+std::string base64_decode(std::string const& encoded_string) {
+ int in_len = encoded_string.size();
+ int i = 0;
+ int j = 0;
+ int in_ = 0;
+ unsigned char char_array_4[4], char_array_3[3];
+ std::string ret;
+
+ while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) {
+ char_array_4[i++] = encoded_string[in_]; in_++;
+ if (i ==4) {
+ for (i = 0; i <4; i++)
+ char_array_4[i] = base64_chars.find(char_array_4[i]);
+
+ char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
+ char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
+ char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
+
+ for (i = 0; (i < 3); i++)
+ ret += char_array_3[i];
+ i = 0;
+ }
+ }
+
+ if (i) {
+ for (j = i; j <4; j++)
+ char_array_4[j] = 0;
+
+ for (j = 0; j <4; j++)
+ char_array_4[j] = base64_chars.find(char_array_4[j]);
+
+ char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
+ char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
+ char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
+
+ for (j = 0; (j < i - 1); j++) ret += char_array_3[j];
+ }
+
+ return ret;
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/Leaderboards/base64.h b/Minecraft.Client/Common/Leaderboards/base64.h
new file mode 100644
index 00000000..7f6a1e49
--- /dev/null
+++ b/Minecraft.Client/Common/Leaderboards/base64.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include <string>
+
+std::string base64_encode(std::string str);
+std::string base64_encode(unsigned char const* , unsigned int len);
+std::string base64_decode(std::string const& s); \ No newline at end of file
diff --git a/Minecraft.Client/Common/Media/BeaconMenu1080.swf b/Minecraft.Client/Common/Media/BeaconMenu1080.swf
new file mode 100644
index 00000000..f84c9101
--- /dev/null
+++ b/Minecraft.Client/Common/Media/BeaconMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/BeaconMenu480.swf b/Minecraft.Client/Common/Media/BeaconMenu480.swf
new file mode 100644
index 00000000..b04e2919
--- /dev/null
+++ b/Minecraft.Client/Common/Media/BeaconMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/BeaconMenu720.swf b/Minecraft.Client/Common/Media/BeaconMenu720.swf
new file mode 100644
index 00000000..c470b04e
--- /dev/null
+++ b/Minecraft.Client/Common/Media/BeaconMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/BeaconMenuSplit1080.swf b/Minecraft.Client/Common/Media/BeaconMenuSplit1080.swf
new file mode 100644
index 00000000..02647e98
--- /dev/null
+++ b/Minecraft.Client/Common/Media/BeaconMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/BeaconMenuSplit720.swf b/Minecraft.Client/Common/Media/BeaconMenuSplit720.swf
new file mode 100644
index 00000000..1a68b14f
--- /dev/null
+++ b/Minecraft.Client/Common/Media/BeaconMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/BeaconMenuVita.swf b/Minecraft.Client/Common/Media/BeaconMenuVita.swf
new file mode 100644
index 00000000..ab91a154
--- /dev/null
+++ b/Minecraft.Client/Common/Media/BeaconMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Controls1080.swf b/Minecraft.Client/Common/Media/Controls1080.swf
index 36051b8c..9ec38f92 100644
--- a/Minecraft.Client/Common/Media/Controls1080.swf
+++ b/Minecraft.Client/Common/Media/Controls1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Crafting2x2Menu1080.swf b/Minecraft.Client/Common/Media/Crafting2x2Menu1080.swf
index 65cb014a..e462de70 100644
--- a/Minecraft.Client/Common/Media/Crafting2x2Menu1080.swf
+++ b/Minecraft.Client/Common/Media/Crafting2x2Menu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Crafting2x2MenuVita.swf b/Minecraft.Client/Common/Media/Crafting2x2MenuVita.swf
index 041e7663..27a0b580 100644
--- a/Minecraft.Client/Common/Media/Crafting2x2MenuVita.swf
+++ b/Minecraft.Client/Common/Media/Crafting2x2MenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Crafting3x3MenuSplit1080.swf b/Minecraft.Client/Common/Media/Crafting3x3MenuSplit1080.swf
index cc42f3d1..155db47e 100644
--- a/Minecraft.Client/Common/Media/Crafting3x3MenuSplit1080.swf
+++ b/Minecraft.Client/Common/Media/Crafting3x3MenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/CreateWorldMenu1080.swf b/Minecraft.Client/Common/Media/CreateWorldMenu1080.swf
index 245bbf65..282c51f8 100644
--- a/Minecraft.Client/Common/Media/CreateWorldMenu1080.swf
+++ b/Minecraft.Client/Common/Media/CreateWorldMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/CreateWorldMenu480.swf b/Minecraft.Client/Common/Media/CreateWorldMenu480.swf
index 9426b616..2773341d 100644
--- a/Minecraft.Client/Common/Media/CreateWorldMenu480.swf
+++ b/Minecraft.Client/Common/Media/CreateWorldMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/CreateWorldMenu720.swf b/Minecraft.Client/Common/Media/CreateWorldMenu720.swf
index b7474a63..985ef7a1 100644
--- a/Minecraft.Client/Common/Media/CreateWorldMenu720.swf
+++ b/Minecraft.Client/Common/Media/CreateWorldMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/CreateWorldMenuVita.swf b/Minecraft.Client/Common/Media/CreateWorldMenuVita.swf
index 814efa9c..f7fe1071 100644
--- a/Minecraft.Client/Common/Media/CreateWorldMenuVita.swf
+++ b/Minecraft.Client/Common/Media/CreateWorldMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/CreativeMenuVita.swf b/Minecraft.Client/Common/Media/CreativeMenuVita.swf
index ecbbb3db..01797a06 100644
--- a/Minecraft.Client/Common/Media/CreativeMenuVita.swf
+++ b/Minecraft.Client/Common/Media/CreativeMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/FireworksMenu1080.swf b/Minecraft.Client/Common/Media/FireworksMenu1080.swf
new file mode 100644
index 00000000..20250d06
--- /dev/null
+++ b/Minecraft.Client/Common/Media/FireworksMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/FireworksMenu480.swf b/Minecraft.Client/Common/Media/FireworksMenu480.swf
new file mode 100644
index 00000000..81a8290b
--- /dev/null
+++ b/Minecraft.Client/Common/Media/FireworksMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/FireworksMenu720.swf b/Minecraft.Client/Common/Media/FireworksMenu720.swf
new file mode 100644
index 00000000..917736e1
--- /dev/null
+++ b/Minecraft.Client/Common/Media/FireworksMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/FireworksMenuSplit1080.swf b/Minecraft.Client/Common/Media/FireworksMenuSplit1080.swf
new file mode 100644
index 00000000..f8537492
--- /dev/null
+++ b/Minecraft.Client/Common/Media/FireworksMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/FireworksMenuSplit720.swf b/Minecraft.Client/Common/Media/FireworksMenuSplit720.swf
new file mode 100644
index 00000000..c3e56007
--- /dev/null
+++ b/Minecraft.Client/Common/Media/FireworksMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/FireworksMenuVita.swf b/Minecraft.Client/Common/Media/FireworksMenuVita.swf
new file mode 100644
index 00000000..e54cdd78
--- /dev/null
+++ b/Minecraft.Client/Common/Media/FireworksMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_1.png b/Minecraft.Client/Common/Media/Graphics/Beacon_1.png
new file mode 100644
index 00000000..7e272400
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_1.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_2.png b/Minecraft.Client/Common/Media/Graphics/Beacon_2.png
new file mode 100644
index 00000000..1668e204
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_2.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_3.png b/Minecraft.Client/Common/Media/Graphics/Beacon_3.png
new file mode 100644
index 00000000..818adb91
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_3.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_4.png b/Minecraft.Client/Common/Media/Graphics/Beacon_4.png
new file mode 100644
index 00000000..70d5a9e6
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_4.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Cross.png b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Cross.png
new file mode 100644
index 00000000..b8194456
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Cross.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Disabled.png b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Disabled.png
new file mode 100644
index 00000000..55f7727e
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Disabled.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Hover.png b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Hover.png
new file mode 100644
index 00000000..85e785c8
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Hover.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Normal.png b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Normal.png
new file mode 100644
index 00000000..29b0cd58
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Normal.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Pressed.png b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Pressed.png
new file mode 100644
index 00000000..9c94f518
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Pressed.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Tick.png b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Tick.png
new file mode 100644
index 00000000..47e0ad46
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Beacon_Button_Tick.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Absorb.png b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Absorb.png
new file mode 100644
index 00000000..e51ce707
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Absorb.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither.png b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither.png
new file mode 100644
index 00000000..004bc5c5
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither_Flash.png b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither_Flash.png
new file mode 100644
index 00000000..3a20d5f2
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Full_Wither_Flash.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Absorb.png b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Absorb.png
new file mode 100644
index 00000000..e9529e1a
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Absorb.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither.png b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither.png
new file mode 100644
index 00000000..0746bdd9
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither_Flash.png b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither_Flash.png
new file mode 100644
index 00000000..c14d3625
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/Health_Half_Wither_Flash.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full.png b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full.png
new file mode 100644
index 00000000..c4e90222
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full_Flash.png b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full_Flash.png
new file mode 100644
index 00000000..f64c5c55
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Full_Flash.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half.png b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half.png
new file mode 100644
index 00000000..e07dce1b
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half_Flash.png b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half_Flash.png
new file mode 100644
index 00000000..d5d5ad61
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/HorseHealth_Half_Flash.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_empty.png b/Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_empty.png
new file mode 100644
index 00000000..368e9848
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_empty.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_full.png b/Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_full.png
new file mode 100644
index 00000000..b7eaca73
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HUD/HorseJump_bar_full.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Horse_Armor_Slot.png b/Minecraft.Client/Common/Media/Graphics/Horse_Armor_Slot.png
new file mode 100644
index 00000000..5445c58b
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Horse_Armor_Slot.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/Horse_Saddle_Slot.png b/Minecraft.Client/Common/Media/Graphics/Horse_Saddle_Slot.png
new file mode 100644
index 00000000..7df8dbfc
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/Horse_Saddle_Slot.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon.png
new file mode 100644
index 00000000..3a22ce06
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon_Small.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon_Small.png
new file mode 100644
index 00000000..0d5f33b2
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Beacon_Small.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks.png
new file mode 100644
index 00000000..4d0e5bac
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks_Small.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks_Small.png
new file mode 100644
index 00000000..fb1e3a80
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Fireworks_Small.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper.png
new file mode 100644
index 00000000..23a09824
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper_Small.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper_Small.png
new file mode 100644
index 00000000..6454bcab
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Hopper_Small.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses.png
new file mode 100644
index 00000000..872584b8
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses_Small.png b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses_Small.png
new file mode 100644
index 00000000..93ba58c9
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/HowToPlay/HowToPlay_Horses_Small.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn.png b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn.png
new file mode 100644
index 00000000..519b87a2
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn_Small.png b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn_Small.png
new file mode 100644
index 00000000..90f65b5b
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/GameOptionsTabOn_Small.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff.png b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff.png
new file mode 100644
index 00000000..8c408680
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff_Small.png b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff_Small.png
new file mode 100644
index 00000000..336895b0
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/MoreOptionsTabOff_Small.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn.png b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn.png
new file mode 100644
index 00000000..04c41d25
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn_Small.png b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn_Small.png
new file mode 100644
index 00000000..d5752af8
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PanelsAndTabs/WorldOptionsTabOn_Small.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_HealthBoost.png b/Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_HealthBoost.png
new file mode 100644
index 00000000..dc57f82f
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_HealthBoost.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_Wither.png b/Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_Wither.png
new file mode 100644
index 00000000..8fa22b21
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/PotionEffect/Potion_Effect_Icon_Wither.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/TutorialExitScreenshot.png b/Minecraft.Client/Common/Media/Graphics/TutorialExitScreenshot.png
index b8475962..4052436a 100644
--- a/Minecraft.Client/Common/Media/Graphics/TutorialExitScreenshot.png
+++ b/Minecraft.Client/Common/Media/Graphics/TutorialExitScreenshot.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Graphics/X360ControllerIcons/ButtonRS_TT.png b/Minecraft.Client/Common/Media/Graphics/X360ControllerIcons/ButtonRS_TT.png
new file mode 100644
index 00000000..e6d47265
--- /dev/null
+++ b/Minecraft.Client/Common/Media/Graphics/X360ControllerIcons/ButtonRS_TT.png
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HTMLColours.col b/Minecraft.Client/Common/Media/HTMLColours.col
index 50999d5a..21db75ae 100644
--- a/Minecraft.Client/Common/Media/HTMLColours.col
+++ b/Minecraft.Client/Common/Media/HTMLColours.col
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HTMLColours.xml b/Minecraft.Client/Common/Media/HTMLColours.xml
index ea6ef00c..8f17132c 100644
--- a/Minecraft.Client/Common/Media/HTMLColours.xml
+++ b/Minecraft.Client/Common/Media/HTMLColours.xml
@@ -7,14 +7,14 @@
<!-- Used by: End Poem (first character) -->
<colour name="HTMLColor_3" value="109e9e" />
<colour name="HTMLColor_4" value="aa0000" />
- <colour name="HTMLColor_5" value="aa00aa" />
+ <colour name="HTMLColor_5" value="DE5BD9" />
<colour name="HTMLColor_6" value="ffaa00" />
<!-- Used by: Potion effects -->
<colour name="HTMLColor_7" value="aaaaaa" />
<!-- Used by: End Poem random text -->
<colour name="HTMLColor_8" value="555555" />
<!-- Used by: End Poem random text -->
- <colour name="HTMLColor_9" value="5555ff" />
+ <colour name="HTMLColor_9" value="7878FF" />
<!-- Used by: End Poem random text -->
<colour name="HTMLColor_a" value="55ff55" />
<!-- Used by: Rare items (golden apple, enchanted items, music discs) -->
diff --git a/Minecraft.Client/Common/Media/HUD1080.swf b/Minecraft.Client/Common/Media/HUD1080.swf
index c9a05166..261be0e6 100644
--- a/Minecraft.Client/Common/Media/HUD1080.swf
+++ b/Minecraft.Client/Common/Media/HUD1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HUD480.swf b/Minecraft.Client/Common/Media/HUD480.swf
index d8a65a41..25cc211c 100644
--- a/Minecraft.Client/Common/Media/HUD480.swf
+++ b/Minecraft.Client/Common/Media/HUD480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HUD720.swf b/Minecraft.Client/Common/Media/HUD720.swf
index 3527bb70..b044e31f 100644
--- a/Minecraft.Client/Common/Media/HUD720.swf
+++ b/Minecraft.Client/Common/Media/HUD720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HUDSplit1080.swf b/Minecraft.Client/Common/Media/HUDSplit1080.swf
index cff338b9..c22cfc85 100644
--- a/Minecraft.Client/Common/Media/HUDSplit1080.swf
+++ b/Minecraft.Client/Common/Media/HUDSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HUDSplit720.swf b/Minecraft.Client/Common/Media/HUDSplit720.swf
index 405cb99d..ba9937e1 100644
--- a/Minecraft.Client/Common/Media/HUDSplit720.swf
+++ b/Minecraft.Client/Common/Media/HUDSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HUDVita.swf b/Minecraft.Client/Common/Media/HUDVita.swf
index 3197a722..03b05f42 100644
--- a/Minecraft.Client/Common/Media/HUDVita.swf
+++ b/Minecraft.Client/Common/Media/HUDVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HopperMenu1080.swf b/Minecraft.Client/Common/Media/HopperMenu1080.swf
new file mode 100644
index 00000000..84394e94
--- /dev/null
+++ b/Minecraft.Client/Common/Media/HopperMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HopperMenu480.swf b/Minecraft.Client/Common/Media/HopperMenu480.swf
new file mode 100644
index 00000000..6a9efe29
--- /dev/null
+++ b/Minecraft.Client/Common/Media/HopperMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HopperMenu720.swf b/Minecraft.Client/Common/Media/HopperMenu720.swf
new file mode 100644
index 00000000..bbfc69b7
--- /dev/null
+++ b/Minecraft.Client/Common/Media/HopperMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HopperMenuSplit1080.swf b/Minecraft.Client/Common/Media/HopperMenuSplit1080.swf
new file mode 100644
index 00000000..98dd6cde
--- /dev/null
+++ b/Minecraft.Client/Common/Media/HopperMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HopperMenuSplit720.swf b/Minecraft.Client/Common/Media/HopperMenuSplit720.swf
new file mode 100644
index 00000000..030e18aa
--- /dev/null
+++ b/Minecraft.Client/Common/Media/HopperMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HopperMenuVita.swf b/Minecraft.Client/Common/Media/HopperMenuVita.swf
new file mode 100644
index 00000000..fcb93ba7
--- /dev/null
+++ b/Minecraft.Client/Common/Media/HopperMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HorseInventoryMenu1080.swf b/Minecraft.Client/Common/Media/HorseInventoryMenu1080.swf
index 2f383848..db0f4d36 100644
--- a/Minecraft.Client/Common/Media/HorseInventoryMenu1080.swf
+++ b/Minecraft.Client/Common/Media/HorseInventoryMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HorseInventoryMenu480.swf b/Minecraft.Client/Common/Media/HorseInventoryMenu480.swf
index 1c1d8177..599c3e38 100644
--- a/Minecraft.Client/Common/Media/HorseInventoryMenu480.swf
+++ b/Minecraft.Client/Common/Media/HorseInventoryMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HorseInventoryMenu720.swf b/Minecraft.Client/Common/Media/HorseInventoryMenu720.swf
index b07966bc..eee79a2f 100644
--- a/Minecraft.Client/Common/Media/HorseInventoryMenu720.swf
+++ b/Minecraft.Client/Common/Media/HorseInventoryMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HorseInventoryMenuSplit1080.swf b/Minecraft.Client/Common/Media/HorseInventoryMenuSplit1080.swf
index c90925e5..edfa8430 100644
--- a/Minecraft.Client/Common/Media/HorseInventoryMenuSplit1080.swf
+++ b/Minecraft.Client/Common/Media/HorseInventoryMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HorseInventoryMenuSplit720.swf b/Minecraft.Client/Common/Media/HorseInventoryMenuSplit720.swf
index d4814571..5883cba4 100644
--- a/Minecraft.Client/Common/Media/HorseInventoryMenuSplit720.swf
+++ b/Minecraft.Client/Common/Media/HorseInventoryMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HorseInventoryMenuVita.swf b/Minecraft.Client/Common/Media/HorseInventoryMenuVita.swf
new file mode 100644
index 00000000..606f515e
--- /dev/null
+++ b/Minecraft.Client/Common/Media/HorseInventoryMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlay1080.swf b/Minecraft.Client/Common/Media/HowToPlay1080.swf
index 8a74aae1..c1e91110 100644
--- a/Minecraft.Client/Common/Media/HowToPlay1080.swf
+++ b/Minecraft.Client/Common/Media/HowToPlay1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlay480.swf b/Minecraft.Client/Common/Media/HowToPlay480.swf
index 60449f75..e7cbe808 100644
--- a/Minecraft.Client/Common/Media/HowToPlay480.swf
+++ b/Minecraft.Client/Common/Media/HowToPlay480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlay720.swf b/Minecraft.Client/Common/Media/HowToPlay720.swf
index eb7652ac..3e12dbb0 100644
--- a/Minecraft.Client/Common/Media/HowToPlay720.swf
+++ b/Minecraft.Client/Common/Media/HowToPlay720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlayMenu1080.swf b/Minecraft.Client/Common/Media/HowToPlayMenu1080.swf
index 5dc90de1..6e128ffa 100644
--- a/Minecraft.Client/Common/Media/HowToPlayMenu1080.swf
+++ b/Minecraft.Client/Common/Media/HowToPlayMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlayMenu480.swf b/Minecraft.Client/Common/Media/HowToPlayMenu480.swf
index df33898a..5e25feaf 100644
--- a/Minecraft.Client/Common/Media/HowToPlayMenu480.swf
+++ b/Minecraft.Client/Common/Media/HowToPlayMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlayMenu720.swf b/Minecraft.Client/Common/Media/HowToPlayMenu720.swf
index 0f01ef70..ef85f005 100644
--- a/Minecraft.Client/Common/Media/HowToPlayMenu720.swf
+++ b/Minecraft.Client/Common/Media/HowToPlayMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlayMenuSplit1080.swf b/Minecraft.Client/Common/Media/HowToPlayMenuSplit1080.swf
index 2c1515ce..f44140b6 100644
--- a/Minecraft.Client/Common/Media/HowToPlayMenuSplit1080.swf
+++ b/Minecraft.Client/Common/Media/HowToPlayMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlayMenuSplit720.swf b/Minecraft.Client/Common/Media/HowToPlayMenuSplit720.swf
index c861543a..fe33c20e 100644
--- a/Minecraft.Client/Common/Media/HowToPlayMenuSplit720.swf
+++ b/Minecraft.Client/Common/Media/HowToPlayMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlayMenuVita.swf b/Minecraft.Client/Common/Media/HowToPlayMenuVita.swf
index b2db55a1..aa1ca7a7 100644
--- a/Minecraft.Client/Common/Media/HowToPlayMenuVita.swf
+++ b/Minecraft.Client/Common/Media/HowToPlayMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlaySplit1080.swf b/Minecraft.Client/Common/Media/HowToPlaySplit1080.swf
index db806225..3ba64d5a 100644
--- a/Minecraft.Client/Common/Media/HowToPlaySplit1080.swf
+++ b/Minecraft.Client/Common/Media/HowToPlaySplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlaySplit720.swf b/Minecraft.Client/Common/Media/HowToPlaySplit720.swf
index 1735af41..bc9542e3 100644
--- a/Minecraft.Client/Common/Media/HowToPlaySplit720.swf
+++ b/Minecraft.Client/Common/Media/HowToPlaySplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/HowToPlayVita.swf b/Minecraft.Client/Common/Media/HowToPlayVita.swf
index 7ead38e2..51f2397d 100644
--- a/Minecraft.Client/Common/Media/HowToPlayVita.swf
+++ b/Minecraft.Client/Common/Media/HowToPlayVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGameHostOptions1080.swf b/Minecraft.Client/Common/Media/InGameHostOptions1080.swf
index 9caefeab..207c86a7 100644
--- a/Minecraft.Client/Common/Media/InGameHostOptions1080.swf
+++ b/Minecraft.Client/Common/Media/InGameHostOptions1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGameHostOptions480.swf b/Minecraft.Client/Common/Media/InGameHostOptions480.swf
index 6177ad68..f0d0e0c6 100644
--- a/Minecraft.Client/Common/Media/InGameHostOptions480.swf
+++ b/Minecraft.Client/Common/Media/InGameHostOptions480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGameHostOptions720.swf b/Minecraft.Client/Common/Media/InGameHostOptions720.swf
index 448b39a3..f4e55bf4 100644
--- a/Minecraft.Client/Common/Media/InGameHostOptions720.swf
+++ b/Minecraft.Client/Common/Media/InGameHostOptions720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGameHostOptionsSplit1080.swf b/Minecraft.Client/Common/Media/InGameHostOptionsSplit1080.swf
index 281f75d9..a45e8a37 100644
--- a/Minecraft.Client/Common/Media/InGameHostOptionsSplit1080.swf
+++ b/Minecraft.Client/Common/Media/InGameHostOptionsSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGameHostOptionsSplit720.swf b/Minecraft.Client/Common/Media/InGameHostOptionsSplit720.swf
index 328a3115..7f76aaaf 100644
--- a/Minecraft.Client/Common/Media/InGameHostOptionsSplit720.swf
+++ b/Minecraft.Client/Common/Media/InGameHostOptionsSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGameHostOptionsVita.swf b/Minecraft.Client/Common/Media/InGameHostOptionsVita.swf
index c9f6c0d7..a7276f10 100644
--- a/Minecraft.Client/Common/Media/InGameHostOptionsVita.swf
+++ b/Minecraft.Client/Common/Media/InGameHostOptionsVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGamePlayerOptions1080.swf b/Minecraft.Client/Common/Media/InGamePlayerOptions1080.swf
index 12a15405..601cc467 100644
--- a/Minecraft.Client/Common/Media/InGamePlayerOptions1080.swf
+++ b/Minecraft.Client/Common/Media/InGamePlayerOptions1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGamePlayerOptions480.swf b/Minecraft.Client/Common/Media/InGamePlayerOptions480.swf
index 707d8fdb..9e0b0ad9 100644
--- a/Minecraft.Client/Common/Media/InGamePlayerOptions480.swf
+++ b/Minecraft.Client/Common/Media/InGamePlayerOptions480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGamePlayerOptions720.swf b/Minecraft.Client/Common/Media/InGamePlayerOptions720.swf
index 36c7ea04..bc9c4f6b 100644
--- a/Minecraft.Client/Common/Media/InGamePlayerOptions720.swf
+++ b/Minecraft.Client/Common/Media/InGamePlayerOptions720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit1080.swf b/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit1080.swf
index 65772a1b..c4187a09 100644
--- a/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit1080.swf
+++ b/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit720.swf b/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit720.swf
index 1c3b7820..ab0b3a7e 100644
--- a/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit720.swf
+++ b/Minecraft.Client/Common/Media/InGamePlayerOptionsSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InGamePlayerOptionsVita.swf b/Minecraft.Client/Common/Media/InGamePlayerOptionsVita.swf
index c8d8d370..13c0b653 100644
--- a/Minecraft.Client/Common/Media/InGamePlayerOptionsVita.swf
+++ b/Minecraft.Client/Common/Media/InGamePlayerOptionsVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Intro1080.swf b/Minecraft.Client/Common/Media/Intro1080.swf
index 92569e1a..c9f2d3ba 100644
--- a/Minecraft.Client/Common/Media/Intro1080.swf
+++ b/Minecraft.Client/Common/Media/Intro1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Intro480.swf b/Minecraft.Client/Common/Media/Intro480.swf
index 2b289ff8..425c01fe 100644
--- a/Minecraft.Client/Common/Media/Intro480.swf
+++ b/Minecraft.Client/Common/Media/Intro480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/Intro720.swf b/Minecraft.Client/Common/Media/Intro720.swf
index 42c086d4..0c2bb3eb 100644
--- a/Minecraft.Client/Common/Media/Intro720.swf
+++ b/Minecraft.Client/Common/Media/Intro720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/IntroVita.swf b/Minecraft.Client/Common/Media/IntroVita.swf
index 54a9b2d5..8229640d 100644
--- a/Minecraft.Client/Common/Media/IntroVita.swf
+++ b/Minecraft.Client/Common/Media/IntroVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InventoryMenu1080.swf b/Minecraft.Client/Common/Media/InventoryMenu1080.swf
index f7e84e8a..47434cc3 100644
--- a/Minecraft.Client/Common/Media/InventoryMenu1080.swf
+++ b/Minecraft.Client/Common/Media/InventoryMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InventoryMenu480.swf b/Minecraft.Client/Common/Media/InventoryMenu480.swf
index c5facdc4..5c129e1d 100644
--- a/Minecraft.Client/Common/Media/InventoryMenu480.swf
+++ b/Minecraft.Client/Common/Media/InventoryMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InventoryMenu720.swf b/Minecraft.Client/Common/Media/InventoryMenu720.swf
index e6f3cee0..3de2da83 100644
--- a/Minecraft.Client/Common/Media/InventoryMenu720.swf
+++ b/Minecraft.Client/Common/Media/InventoryMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InventoryMenuSplit1080.swf b/Minecraft.Client/Common/Media/InventoryMenuSplit1080.swf
index 4f6e78c5..efe2d484 100644
--- a/Minecraft.Client/Common/Media/InventoryMenuSplit1080.swf
+++ b/Minecraft.Client/Common/Media/InventoryMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InventoryMenuSplit720.swf b/Minecraft.Client/Common/Media/InventoryMenuSplit720.swf
index 1e7d00ed..a9d13a05 100644
--- a/Minecraft.Client/Common/Media/InventoryMenuSplit720.swf
+++ b/Minecraft.Client/Common/Media/InventoryMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/InventoryMenuVita.swf b/Minecraft.Client/Common/Media/InventoryMenuVita.swf
index e38bb07d..1eae726a 100644
--- a/Minecraft.Client/Common/Media/InventoryMenuVita.swf
+++ b/Minecraft.Client/Common/Media/InventoryMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LanguagesMenu1080.swf b/Minecraft.Client/Common/Media/LanguagesMenu1080.swf
new file mode 100644
index 00000000..9c0bef5a
--- /dev/null
+++ b/Minecraft.Client/Common/Media/LanguagesMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LanguagesMenu480.swf b/Minecraft.Client/Common/Media/LanguagesMenu480.swf
new file mode 100644
index 00000000..5cea7c87
--- /dev/null
+++ b/Minecraft.Client/Common/Media/LanguagesMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LanguagesMenu720.swf b/Minecraft.Client/Common/Media/LanguagesMenu720.swf
new file mode 100644
index 00000000..09022fd6
--- /dev/null
+++ b/Minecraft.Client/Common/Media/LanguagesMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LanguagesMenuSplit1080.swf b/Minecraft.Client/Common/Media/LanguagesMenuSplit1080.swf
new file mode 100644
index 00000000..24d7a0b6
--- /dev/null
+++ b/Minecraft.Client/Common/Media/LanguagesMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LanguagesMenuSplit720.swf b/Minecraft.Client/Common/Media/LanguagesMenuSplit720.swf
new file mode 100644
index 00000000..99b9076f
--- /dev/null
+++ b/Minecraft.Client/Common/Media/LanguagesMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LanguagesMenuVita.swf b/Minecraft.Client/Common/Media/LanguagesMenuVita.swf
new file mode 100644
index 00000000..cffdba59
--- /dev/null
+++ b/Minecraft.Client/Common/Media/LanguagesMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu1080.swf b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu1080.swf
index 3db865f8..07d81207 100644
--- a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu1080.swf
+++ b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu480.swf b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu480.swf
index ea1132c0..666f1127 100644
--- a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu480.swf
+++ b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu720.swf b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu720.swf
index 1cdf4d22..e77beb4e 100644
--- a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu720.swf
+++ b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenuVita.swf b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenuVita.swf
index 21fede27..5c1d44d9 100644
--- a/Minecraft.Client/Common/Media/LaunchMoreOptionsMenuVita.swf
+++ b/Minecraft.Client/Common/Media/LaunchMoreOptionsMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LoadMenu1080.swf b/Minecraft.Client/Common/Media/LoadMenu1080.swf
index e89f1875..d0d61ec7 100644
--- a/Minecraft.Client/Common/Media/LoadMenu1080.swf
+++ b/Minecraft.Client/Common/Media/LoadMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LoadMenu480.swf b/Minecraft.Client/Common/Media/LoadMenu480.swf
index ce7ac1ad..e105c9e7 100644
--- a/Minecraft.Client/Common/Media/LoadMenu480.swf
+++ b/Minecraft.Client/Common/Media/LoadMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LoadMenu720.swf b/Minecraft.Client/Common/Media/LoadMenu720.swf
index c3976f49..ef33463e 100644
--- a/Minecraft.Client/Common/Media/LoadMenu720.swf
+++ b/Minecraft.Client/Common/Media/LoadMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/LoadMenuVita.swf b/Minecraft.Client/Common/Media/LoadMenuVita.swf
index 8bbf94e7..a5be6f3f 100644
--- a/Minecraft.Client/Common/Media/LoadMenuVita.swf
+++ b/Minecraft.Client/Common/Media/LoadMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/MediaDurango.arc b/Minecraft.Client/Common/Media/MediaDurango.arc
index 53e9b222..50240c42 100644
--- a/Minecraft.Client/Common/Media/MediaDurango.arc
+++ b/Minecraft.Client/Common/Media/MediaDurango.arc
Binary files differ
diff --git a/Minecraft.Client/Common/Media/MediaOrbis.arc b/Minecraft.Client/Common/Media/MediaOrbis.arc
index fcb53c05..aea52dc1 100644
--- a/Minecraft.Client/Common/Media/MediaOrbis.arc
+++ b/Minecraft.Client/Common/Media/MediaOrbis.arc
Binary files differ
diff --git a/Minecraft.Client/Common/Media/MediaPS3.arc b/Minecraft.Client/Common/Media/MediaPS3.arc
index 7ab3a320..5eb550f8 100644
--- a/Minecraft.Client/Common/Media/MediaPS3.arc
+++ b/Minecraft.Client/Common/Media/MediaPS3.arc
Binary files differ
diff --git a/Minecraft.Client/Common/Media/MediaPSVita.arc b/Minecraft.Client/Common/Media/MediaPSVita.arc
index 01aa7466..8683db23 100644
--- a/Minecraft.Client/Common/Media/MediaPSVita.arc
+++ b/Minecraft.Client/Common/Media/MediaPSVita.arc
Binary files differ
diff --git a/Minecraft.Client/Common/Media/MediaWindows64.arc b/Minecraft.Client/Common/Media/MediaWindows64.arc
index 130661a2..9498b91d 100644
--- a/Minecraft.Client/Common/Media/MediaWindows64.arc
+++ b/Minecraft.Client/Common/Media/MediaWindows64.arc
Binary files differ
diff --git a/Minecraft.Client/Common/Media/PressStartToPlay1080.swf b/Minecraft.Client/Common/Media/PressStartToPlay1080.swf
index d15bedfc..87de331d 100644
--- a/Minecraft.Client/Common/Media/PressStartToPlay1080.swf
+++ b/Minecraft.Client/Common/Media/PressStartToPlay1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/PressStartToPlay720.swf b/Minecraft.Client/Common/Media/PressStartToPlay720.swf
index 30255042..2554a31d 100644
--- a/Minecraft.Client/Common/Media/PressStartToPlay720.swf
+++ b/Minecraft.Client/Common/Media/PressStartToPlay720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/QuadrantSignin1080.swf b/Minecraft.Client/Common/Media/QuadrantSignin1080.swf
index 760a0319..92e2f348 100644
--- a/Minecraft.Client/Common/Media/QuadrantSignin1080.swf
+++ b/Minecraft.Client/Common/Media/QuadrantSignin1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/QuadrantSignin720.swf b/Minecraft.Client/Common/Media/QuadrantSignin720.swf
index fd3542ff..d22c12a2 100644
--- a/Minecraft.Client/Common/Media/QuadrantSignin720.swf
+++ b/Minecraft.Client/Common/Media/QuadrantSignin720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SettingsOptionsMenu1080.swf b/Minecraft.Client/Common/Media/SettingsOptionsMenu1080.swf
index 9dc478c4..ede96935 100644
--- a/Minecraft.Client/Common/Media/SettingsOptionsMenu1080.swf
+++ b/Minecraft.Client/Common/Media/SettingsOptionsMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SettingsOptionsMenu480.swf b/Minecraft.Client/Common/Media/SettingsOptionsMenu480.swf
index 717e8ac9..d3d5b93e 100644
--- a/Minecraft.Client/Common/Media/SettingsOptionsMenu480.swf
+++ b/Minecraft.Client/Common/Media/SettingsOptionsMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SettingsOptionsMenu720.swf b/Minecraft.Client/Common/Media/SettingsOptionsMenu720.swf
index 05a1bc63..ce8434bf 100644
--- a/Minecraft.Client/Common/Media/SettingsOptionsMenu720.swf
+++ b/Minecraft.Client/Common/Media/SettingsOptionsMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit1080.swf b/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit1080.swf
index 5bef6ed3..b435a238 100644
--- a/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit1080.swf
+++ b/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit720.swf b/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit720.swf
index e6bf0a4e..d178d4cb 100644
--- a/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit720.swf
+++ b/Minecraft.Client/Common/Media/SettingsOptionsMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SettingsOptionsMenuVita.swf b/Minecraft.Client/Common/Media/SettingsOptionsMenuVita.swf
index a3ca1b24..562a0c22 100644
--- a/Minecraft.Client/Common/Media/SettingsOptionsMenuVita.swf
+++ b/Minecraft.Client/Common/Media/SettingsOptionsMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SkinSelectMenu1080.swf b/Minecraft.Client/Common/Media/SkinSelectMenu1080.swf
index 002d7639..5eaf67fb 100644
--- a/Minecraft.Client/Common/Media/SkinSelectMenu1080.swf
+++ b/Minecraft.Client/Common/Media/SkinSelectMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SkinSelectMenu720.swf b/Minecraft.Client/Common/Media/SkinSelectMenu720.swf
index ae8b3ed3..059ae199 100644
--- a/Minecraft.Client/Common/Media/SkinSelectMenu720.swf
+++ b/Minecraft.Client/Common/Media/SkinSelectMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SkinSelectMenuSplit1080.swf b/Minecraft.Client/Common/Media/SkinSelectMenuSplit1080.swf
index a6666acf..03c532fe 100644
--- a/Minecraft.Client/Common/Media/SkinSelectMenuSplit1080.swf
+++ b/Minecraft.Client/Common/Media/SkinSelectMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SkinSelectMenuSplit720.swf b/Minecraft.Client/Common/Media/SkinSelectMenuSplit720.swf
index b090beaa..a49f20e8 100644
--- a/Minecraft.Client/Common/Media/SkinSelectMenuSplit720.swf
+++ b/Minecraft.Client/Common/Media/SkinSelectMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/SkinSelectMenuVita.swf b/Minecraft.Client/Common/Media/SkinSelectMenuVita.swf
index 34950165..f46cda9b 100644
--- a/Minecraft.Client/Common/Media/SkinSelectMenuVita.swf
+++ b/Minecraft.Client/Common/Media/SkinSelectMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/ToolTips1080.swf b/Minecraft.Client/Common/Media/ToolTips1080.swf
index 6bb2e367..2251f80e 100644
--- a/Minecraft.Client/Common/Media/ToolTips1080.swf
+++ b/Minecraft.Client/Common/Media/ToolTips1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/ToolTips480.swf b/Minecraft.Client/Common/Media/ToolTips480.swf
index 735361e7..3ebebb9b 100644
--- a/Minecraft.Client/Common/Media/ToolTips480.swf
+++ b/Minecraft.Client/Common/Media/ToolTips480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/ToolTips720.swf b/Minecraft.Client/Common/Media/ToolTips720.swf
index f29f1649..7c5a5ba4 100644
--- a/Minecraft.Client/Common/Media/ToolTips720.swf
+++ b/Minecraft.Client/Common/Media/ToolTips720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/ToolTipsSplit1080.swf b/Minecraft.Client/Common/Media/ToolTipsSplit1080.swf
index 91d6327c..820fdda1 100644
--- a/Minecraft.Client/Common/Media/ToolTipsSplit1080.swf
+++ b/Minecraft.Client/Common/Media/ToolTipsSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/ToolTipsSplit720.swf b/Minecraft.Client/Common/Media/ToolTipsSplit720.swf
index 260092c5..7c5ae7ea 100644
--- a/Minecraft.Client/Common/Media/ToolTipsSplit720.swf
+++ b/Minecraft.Client/Common/Media/ToolTipsSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/ToolTipsVita.swf b/Minecraft.Client/Common/Media/ToolTipsVita.swf
index f8aa42fc..c2b9dfe8 100644
--- a/Minecraft.Client/Common/Media/ToolTipsVita.swf
+++ b/Minecraft.Client/Common/Media/ToolTipsVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TradingMenu1080.swf b/Minecraft.Client/Common/Media/TradingMenu1080.swf
index b4bd5ebd..75b6292e 100644
--- a/Minecraft.Client/Common/Media/TradingMenu1080.swf
+++ b/Minecraft.Client/Common/Media/TradingMenu1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TradingMenu480.swf b/Minecraft.Client/Common/Media/TradingMenu480.swf
index e6fa8b5f..035b4747 100644
--- a/Minecraft.Client/Common/Media/TradingMenu480.swf
+++ b/Minecraft.Client/Common/Media/TradingMenu480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TradingMenu720.swf b/Minecraft.Client/Common/Media/TradingMenu720.swf
index 1ce0cfb1..774e14b8 100644
--- a/Minecraft.Client/Common/Media/TradingMenu720.swf
+++ b/Minecraft.Client/Common/Media/TradingMenu720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TradingMenuSplit1080.swf b/Minecraft.Client/Common/Media/TradingMenuSplit1080.swf
index ac6c27ae..2545ebb0 100644
--- a/Minecraft.Client/Common/Media/TradingMenuSplit1080.swf
+++ b/Minecraft.Client/Common/Media/TradingMenuSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TradingMenuSplit720.swf b/Minecraft.Client/Common/Media/TradingMenuSplit720.swf
index 73ece9f8..5677b19b 100644
--- a/Minecraft.Client/Common/Media/TradingMenuSplit720.swf
+++ b/Minecraft.Client/Common/Media/TradingMenuSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TradingMenuVita.swf b/Minecraft.Client/Common/Media/TradingMenuVita.swf
index f36749fb..e93787ae 100644
--- a/Minecraft.Client/Common/Media/TradingMenuVita.swf
+++ b/Minecraft.Client/Common/Media/TradingMenuVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TutorialPopup1080.swf b/Minecraft.Client/Common/Media/TutorialPopup1080.swf
index 01619554..edd94f4f 100644
--- a/Minecraft.Client/Common/Media/TutorialPopup1080.swf
+++ b/Minecraft.Client/Common/Media/TutorialPopup1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TutorialPopup480.swf b/Minecraft.Client/Common/Media/TutorialPopup480.swf
index fbea78ea..321dd391 100644
--- a/Minecraft.Client/Common/Media/TutorialPopup480.swf
+++ b/Minecraft.Client/Common/Media/TutorialPopup480.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TutorialPopup720.swf b/Minecraft.Client/Common/Media/TutorialPopup720.swf
index 0d3dcb20..94b6958e 100644
--- a/Minecraft.Client/Common/Media/TutorialPopup720.swf
+++ b/Minecraft.Client/Common/Media/TutorialPopup720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TutorialPopupSplit1080.swf b/Minecraft.Client/Common/Media/TutorialPopupSplit1080.swf
index cdb09fc9..bb088d8c 100644
--- a/Minecraft.Client/Common/Media/TutorialPopupSplit1080.swf
+++ b/Minecraft.Client/Common/Media/TutorialPopupSplit1080.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TutorialPopupSplit720.swf b/Minecraft.Client/Common/Media/TutorialPopupSplit720.swf
index 2234e02c..3626e9c7 100644
--- a/Minecraft.Client/Common/Media/TutorialPopupSplit720.swf
+++ b/Minecraft.Client/Common/Media/TutorialPopupSplit720.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/TutorialPopupVita.swf b/Minecraft.Client/Common/Media/TutorialPopupVita.swf
index e671b2c5..e4866163 100644
--- a/Minecraft.Client/Common/Media/TutorialPopupVita.swf
+++ b/Minecraft.Client/Common/Media/TutorialPopupVita.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/de-DE/strings.resx b/Minecraft.Client/Common/Media/de-DE/strings.resx
index 219cb1b9..430711f8 100644
--- a/Minecraft.Client/Common/Media/de-DE/strings.resx
+++ b/Minecraft.Client/Common/Media/de-DE/strings.resx
@@ -150,7 +150,7 @@ Minecraft ist ein Spiel, bei dem du Blöcke platzierst, um alles zu bauen, was d
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.
+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..{*B*}{*B*}
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.</value>
</data>
@@ -228,13 +228,13 @@ Du wirst selbst mit Kombinationen von Zutaten experimentieren müssen, um alle v
</value>
</data>
<data name="IDS_HOW_TO_PLAY_ENCHANTMENT"><value>{*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*}
+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*}
+Zauberbücher werden beim Amboss benutzt, um Verzauberungen auf Gegenstände anzuwenden. Das gibt dir mehr Kontrolle darüber, welche Verzauberungen du auf deinen Gegenständen möchtest.{*B*}
</value>
</data>
<data name="IDS_HOW_TO_PLAY_FARMANIMALS"><value>{*T3*}SO WIRD GESPIELT: TIERHALTUNG{*ETW*}{*B*}{*B*}
@@ -301,6 +301,27 @@ Beim Laden oder Erstellen einer Welt kannst du mit der Schaltfläche "Weitere Op
{*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*}
+ {*T2*}Tageslichtzyklus{*ETW*}{*B*}
+ Bei Deaktivierung ändert sich die Tageszeit nicht.{*B*}{*B*}
+
+ {*T2*}Inventar behalten{*ETW*}{*B*}
+ Bei Aktivierung behalten Spieler ihr Inventar, wenn sie sterben.{*B*}{*B*}
+
+ {*T2*}NPC-Eintritt{*ETW*}{*B*}
+ Bei Deaktivierung erscheinen keine NPCs auf natürlichem Weg.{*B*}{*B*}
+
+ {*T2*}NPC-Griefing{*ETW*}{*B*}
+ Bei Deaktivierung können Monster und Tiere keine Blöcke verändern (z. B. werden bei Creeper-Explosionen keine Blöcke zerstört und Schafe entfernen kein Gras) oder Gegenstände aufheben.{*B*}{*B*}
+
+ {*T2*}NPC-Beute{*ETW*}{*B*}
+ Bei Deaktivierung lassen Monster und Tiere keine Beute fallen (z. B. lassen Creeper kein Schießpulver fallen).{*B*}{*B*}
+
+ {*T2*}Felderertrag{*ETW*}{*B*}
+ Bei Deaktivierung lassen Blöcke keine Gegenstände zurück, wenn sie zerstört werden (z. B. hinterlassen Steinblöcke keine Pflastersteine).{*B*}{*B*}
+
+ {*T2*}Natürliche Erholung{*ETW*}{*B*}
+ Bei Deaktivierung wird die Gesundheit von Spielern nicht auf natürlichem Weg wiederhergestellt.{*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*}
@@ -317,7 +338,7 @@ Beim Erstellen einer neuen Welt gibt es einige zusätzliche Optionen.{*B*}{*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*}
+ Während des Spielens hast du Zugriff auf eine Reihe von Optionen, indem du mit {*BACK_BUTTON*} 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*}
@@ -344,24 +365,26 @@ Um die Privilegien für einen Spieler zu bearbeiten, rufst du mit {*CONTROLLER_V
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*}
+ {*KICK_PLAYER_DESCRIPTION*}{*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*}
+
+ {*T2*}Kann teleportieren{*ETW*}{*B*}
Dies erlaubt dem Spieler, sich selbst oder andere Spieler zu anderen Spielern in der Welt zu bewegen.
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>Mit dieser Option wird ein Spieler, der nicht auf der {*PLATFORM_NAME*} Konsole des Hosts spielt, vom Spiel ausgeschlossen; andere Spieler auf der {*PLATFORM_NAME*} Konsole des ausgeschlossenen Spielers werden ebenfalls ausgeschlossen. Dieser Spieler kann dem Spiel erst wieder beitreten, wenn es neu gestartet wird.</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>Nächste Seite</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>Vorige Seite</value>
@@ -374,7 +397,7 @@ Wenn "Hostprivilegien" aktiviert ist, kann der Host-Spieler einige seiner eigene
</data>
<data name="IDS_HOW_TO_PLAY_MENU_CHESTS"><value>Truhen</value>
</data>
-<data name="IDS_HOW_TO_PLAY_MENU_CRAFTING"><value>Dinge herstellen</value>
+<data name="IDS_HOW_TO_PLAY_MENU_CRAFTING"><value>Crafting</value>
</data>
<data name="IDS_HOW_TO_PLAY_MENU_FURNACE"><value>Ofen</value>
</data>
@@ -425,63 +448,95 @@ sie können dir also leicht zu Hilfe kommen.
</data>
<data name="IDS_HOW_TO_PLAY_MENU_WHATSNEW"><value>Neuigkeiten</value>
</data>
-<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
-{*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*}
+<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>{*T3*}Veränderungen und Neuerungen{*ETW*}{*B*}{*B*}
+- Neue Gegenstände hinzugefügt: Ausgehärteter Lehm, gefärbter Lehm, Kohleblock, Heuballen, Aktivierungsschiene, Redstone-Block, Tageslichtsensor, Auswurfblock, Trichter, Lore mit Trichter, Lore mit TNT, Redstone-Vergleicher, beschwerte Druckplatte, Signalfeuer, eingeklemmte Truhe, Feuerwerksrakete, Feuerwerksstern, Netherstern, Leine, Pferderüstung, Namensschild, Pferde-Eintrittsei.{*B*}
+- Neue NPCs hinzugefügt: Dürre, Dörrskelette, Hexen, Fledermäuse, Pferde, Esel und Maultiere.{*B*}
+- Neue Geländeerstellungsfunktionen hinzugefügt: Hexenhütten.{*B*}
+- Signalfeuer-Oberfläche hinzugefügt.{*B*}
+- Pferde-Oberfläche hinzugefügt.{*B*}
+Trichter-Oberfläche hinzugefügt.{*B*}
+- Feuerwerk hinzugefügt: Die Feuerwerk-Oberfläche kann von der Werkbank aufgerufen werden, wenn du die Zutaten zum Craften eines Feuerwerkssterns oder einer Feuerwerksrakete hast.{*B*}
+- Abenteuermodus hinzugefügt: Du kannst Blöcke nur mit den richtigen Werkzeugen abbauen.{*B*}
+- Viele neue Sounds hinzugefügt.{*B*}
+NPCs, Gegenstände und Projektile können jetzt durch Portale gehen.{*B*}
+- Repeater können jetzt gesperrt werden, indem ihre Seiten von einem weiteren Repeater mit Strom versorgt werden.{*B*}
+- Zombies und Skelette können jetzt andere Waffen und Rüstungen haben.{*B*}
+- Neue Todesmeldungen.{*B*}
+- Benenne NPCs mit einem Namensschild und benenne Behälter um, um den Titel des geöffneten Menüs zu ändern.{*B*}
+- Knochenmehl lässt nicht mehr alles sofort zu voller Größe wachsen, sondern in zufälligen Stufen.{*B*}
+- Ein Redstone-Signal, das den Inhalt von Truhen, Brauständen, Dispensern und Jukeboxen beschreibt, kann aufgefangen werden, indem ein Redstone-Vergleicher direkt daran platziert wird.{*B*}
+- Dispenser können in jede Richtung zeigen.{*B*}
+- Goldene Äpfel verleihen Spielern kurzfristig zusätzliche Absorptions-Gesundheit.{*B*}
+- In einem Gebiet erscheinende Monster werden mit zunehmender Dauer des Aufenthalts immer schwieriger.{*B*}
</value>
</data>
<data name="IDS_TITLEUPDATE"><value>{*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*}
+{*T1*}Neue Gegenstände{*ETB*} – Ausgehärteter Lehm, gefärbter Lehm, Kohleblock, Heuballen, Aktivierungsschiene, Redstone-Block, Tageslichtsensor, Auswurfblock, Trichter, Lore mit Trichter, Lore mit TNT, Redstone-Vergleicher, beschwerte Druckplatte, Signalfeuer, eingeklemmte Truhe, Feuerwerksrakete, Feuerwerksstern, Netherstern, Leine, Pferderüstung, Namensschild, Pferde-Eintrittsei.{*B*}{*B*}
+{*T1*}Neue NPCs{*ETB*} – Dürre, Dörrskelette, Hexen, Fledermäuse, Pferde, Esel und Maultiere.{*B*}{*B*}
+{*T1*}Neue Features{*ETB*} – Zähme und reite ein Pferd, crafte Feuerkwerk für eine Show, benenne Tiere und Monster mit einem Namensschild, erschaffe fortgeschrittenere Redstone-Schaltkreise und neue Hostoptionen zur Kontrolle der Gastberechtigungen!{*B*}{*B*}
+{*T1*}Neue Tutorial-Welt{*ETB*} – Lerne den Umgang mit neuen und alten Features. Versuche, alle geheimen Schallplatten in der Welt zu finden!{*B*}{*B*}
</value>
</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>Pferde</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}SO WIRD GESPIELT: PFERDE{*ETW*}{*B*}{*B*}
+Pferde und Esel findet man hauptsächlich auf freiem Feld. Maultiere sind die Nachfahren von jeweils einem Esel und einem Pferd, sie sind aber selbst unfruchtbar.{*B*}
+Alle ausgewachsenen Pferde, Esel und Maultiere können geritten werden. Allerdings können nur Pferden Rüstungen angelegt werden und nur Maultiere sowie Esel können mit Satteltaschen für den Transport von Gegenständen ausgestattet werden.{*B*}{*B*}
+Pferde, Esel und Maultiere müssen vor dem Gebrauch gezähmt werden. Du zähmst ein Pferd, indem du versuchst, es zu reiten, und oben bleibst, wenn es versucht, dich abzuwerfen.{*B*}
+Wenn um das Pferd herum Liebesherzen erscheinen, ist es zahm und versucht nicht mehr, dich abzuwerfen. Um ein Pferd beim Reiten zu lenken, musst du ihm einen Sattel anlegen.{*B*}{*B*}
+Du kannst Sättel von Dorfbewohnern kaufen oder in versteckten Truhen in der Welt finden.{*B*}
+Du kannst zahmen Eseln und Maultieren Satteltaschen geben, indem du eine Truhe anbringst. Du kannst dann während des Reitens oder beim Schleichen auf die Taschen zugreifen.{*B*}{*B*}
+Pferde und Esel (nicht aber Maultiere) können wie andere Tiere mithilfe von goldenen Äpfeln oder goldenen Karotten gezüchtet werden.{*B*}
+Fohlen wachsen mit der Zeit zu Pferden heran und du kannst dies beschleunigen, indem du sie mit Weizen oder Heu fütterst.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>Signalfeuer</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}SO WIRD GESPIELT: SIGNALFEUER{*ETW*}{*B*}{*B*}
+Aktive Signalfeuer werfen einen hellen Lichtstrahl in den Himmel und gewähren Spielern in der Nähe Kräfte.{*B*}
+Sie werden aus Glas, Obsidian und Nethersternen gefertigt, die du erhältst, wenn du die Dürre besiegst.{*B*}{*B*}
+Signalfeuer müssen auf Pyramiden aus Eisen, Gold, Smaragd oder Diamant so platziert werden, dass sie tagsüber dem Sonnenlicht ausgesetzt sind.{*B*}
+Das Material der Unterlage hat keine Auswirkungen auf die Kraft des Signalfeuers.{*B*}{*B*}
+Im Signalfeuermenü kannst du eine Hauptkraft für dein Signalfeuer auswählen. Je mehr Stufen deine Pyramide hat, desto mehr Kräfte stehen dir zur Auswahl.{*B*}
+Bei einem Signalfeuer auf einer Pyramide mit mindestens vier Stufen hast du außerdem die Option, entweder die Regeneration als Zweitkraft oder eine stärkere Hauptkraft auszuwählen.{*B*}{*B*}
+Um die Kräfte deines Signalfeuers einzustellen, musst du einen Smaragd, Diamant, Gold- oder Eisenbarren im Bezahl-Slot opfern.{*B*}
+Danach strahlt das Signalfeuer für unbegrenzte Zeit die Kräfte aus.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>Feuerwerk</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}SO WIRD GESPIELT: FEUERWERK{*ETW*}{*B*}{*B*}
+Feuerwerk sind dekorative Gegenstände, die manuell oder von Dispensern gestartet werden können. Sie werden aus Papier, Schießpulver und wahlweise einigen Feuerwerkssternen gecraftet.{*B*}
+Farben, Verblassen, Form, Größe und Effekte (wie Spuren und Funkeln) von Feuerwerkssternen können beim Craften durch zusätzliche Zutaten angepasst werden.{*B*}{*B*}
+Feuerkwerk craftest du, indem du Schießpulver und Papier in das 3x3-Crafting-Raster legst, das über deinem Inventar angezeigt wird.{*B*}
+Du kannst wahlweise mehrere Feuerwerkssterne in das Raster legen, um sie dem Feuerwerk hinzuzufügen.{*B*}
+Mehr Schießpulver im Raster erhöht die Höhe, in der Feuerwerkssterne explodieren.{*B*}{*B*}
+Du kannst das fertige Feuerwerk dann aus dem Ausgabeplatz nehmen.{*B*}{*B*}
+Feuerwerkssterne werden hergestellt, indem du Schießpulver und Farbe in das Raster legst.{*B*}
+ – Die Explosion des Feuerwerkssterns nimmt die jeweilige Farbe an.{*B*}
+ – Die Form des Feuerwerkssterns ändert sich durch das Hinzufügen von Feuerkugeln, Goldklumpen, Federn oder NPC-Köpfen.{*B*}
+ – Spur oder Funkeln können mit Diamanten oder Glowstone-Staub hinzugefügt werden.{*B*}{*B*}
+Wenn ein Feuerwerksstern gecraftet wurde, kannst du das Verblassen mit Farbe ändern.
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>Trichter</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}SO WIRD GESPIELT: TRICHTER{*ETW*}{*B*}{*B*}
+Mit Trichtern kannst du Gegenstände in Behälter füllen oder sie daraus entnehmen sowie automatisch Gegenstände aufheben, die hineingeworfen werden.{*B*}
+Sie können mit Brauständen, Truhen, Dispensern, Auswurfblöcken, Loren mit Truhen, Loren mit Trichtern sowie anderen Trichtern verwendet werden.{*B*}{*B*}
+Trichter versuchen fortwährend, Gegenstände aus einem geeigneten Behälter aufzusaugen, der über ihnen platziert wird. Sie versuchen auch, gelagerte Gegenstände in einen Ausgabebehälter zu legen.{*B*}
+Wenn ein Trichter mit Redstone betrieben wird, wird er inaktiv und hört auf, Gegenstände aufzusaugen und einzufügen.{*B*}{*B*}
+Ein Trichter zeigt in die Ausgaberichtung für Gegenstände. Damit ein Trichter auf einen bestimmten Block zeigt, platzierst du ihn dagegen, während du schleichst.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>Auswurfblöcke</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}SO WIRD GESPIELT: AUSWURFBLÖCKE{*ETW*}{*B*}{*B*}
+Von Redstone mit Energie versorgte Auswurfblöcke lassen einen einzelnen, zufälligen Gegenstand fallen. Öffne den Auswurfblock mit {*CONTROLLER_ACTION_USE*} und fülle ihn dann mit Gegenständen aus deinem Inventar.{*B*}
+Wenn der Auswurfblock einer Truhe oder einem anderen Behälter zugewandt ist, wird der Gegenstand stattdessen darin abgelegt. Lange Ketten aus Auswurfblöcken können hergestellt werden, um Gegenstände über längere Entfernungen zu transportieren. Dafür müssen sie abwechselnd ein- und ausgeschaltet werden.
+ </value>
+</data>
<data name="IDS_DESC_SWORD"><value>Fügt mehr Schaden zu als eine leere Hand.</value>
</data>
<data name="IDS_DESC_SHOVEL"><value>Hiermit kannst du Erde, Gras, Sand, Kies und Schnee schneller als mit der Hand abbauen. Du brauchst eine Schaufel, um Schneebälle abzubauen.</value>
@@ -613,10 +668,36 @@ haben.</value>
</data>
<data name="IDS_DESC_MAP"><value>Erzeugt ein Abbild einer Gegend, bei deren Erforschung du sie in der Hand hattest. Nützlich, um den Weg zu finden.</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>Wird bei Benutzung zu einem Kartenteil der aktuellen Welt und füllt sich, wenn du die Gegend erkundest.</value>
+ </data>
<data name="IDS_DESC_BOW"><value>Erlaubt Fernangriffe mit Pfeilen.</value>
</data>
<data name="IDS_DESC_ARROW"><value>Wird als Munition für Bögen verwendet.</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>Von der Dürre fallen gelassen, wird zur Herstellung von Signalfeuern verwendet.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>Erzeugt bei Aktivierung bunte Explosionen. Die Farbe, der Effekt, die Form und das Verblassen hängen davon ab, welcher Feuerwerksstern zur Herstellung verwendet wird.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>Legt die Farbe, den Effekt und die Form eines Feuerwerks fest.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>Wird in Redstone-Schaltkreisen verwendet, um die Signalstärke aufrechtzuerhalten, zu vergleichen oder zu mindern, oder um bestimmte Blockzustände zu messen.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>Ein Lorentyp, der als beweglicher TNT-Block funktioniert.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>Ein Block, der auf Grundlage des Sonnenlichts (oder des Mangels an Sonnenlicht) ein Redstone-Signal ausgibt.</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>Ein besonderer Lorentyp, der ähnlich funktioniert wie ein Trichter. Er sammelt Gegenstände, die auf Schienen liegen, und aus Behältern darüber.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>Ein besonderer Rüstungstyp, der einem Pferd angelegt werden kann. Gewährt 5 Rüstungspunkte.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>Ein besonderer Rüstungstyp, der einem Pferd angelegt werden kann. Gewährt 7 Rüstungspunkte.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>Ein besonderer Rüstungstyp, der einem Pferd angelegt werden kann. Gewährt 11 Rüstungspunkte.</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>Hiermit kannst du NPCs am Spieler oder an Zaunpfosten festbinden.</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>Hiermit kannst du NPCs in der Welt Namen geben.</value>
+</data>
<data name="IDS_DESC_BREAD"><value>Regeneriert 2,5{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_CAKE"><value>Regeneriert 1,5{*ICON_SHANK_01*}. Kann 6-mal verwendet werden.</value>
@@ -668,7 +749,7 @@ Kann auch genutzt werden, um ein wenig Licht zu erzeugen.</value>
</data>
<data name="IDS_DESC_POWEREDRAIL"><value>Beschleunigt darüberfahrende Loren, wenn sie unter Strom steht. Wenn kein Strom anliegt, bewirkt sie, dass Loren auf ihr anhalten.</value>
</data>
-<data name="IDS_DESC_DETECTORRAIL"><value>Funktioniert wie eine Druckplatte – sendet ein Redstone-Signal, wenn sie aktiviert wird, kann aber nur durch Loren aktiviert werden.</value>
+<data name="IDS_DESC_DETECTORRAIL"><value>Funktioniert wie eine Druckplatte – sendet ein Redstone-Signal, wenn sie aktiviert wird, kann aber nur durch Loren aktiviert werden.</value>
</data>
<data name="IDS_DESC_MINECART"><value>Kann dich, ein Tier oder ein Monster auf Schienen transportieren.</value>
</data>
@@ -944,100 +1025,158 @@ statt nur 3.)</value>
</data>
<data name="IDS_DESC_SKULL"><value>NPC-Köpfe können als Dekoration platziert werden oder als Maske anstatt eines Helms getragen werden.</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>Hiermit werden Befehle ausgeführt.</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>Wirft einen Lichtstrahl in den Himmel und kann Spielern in der Nähe Statuseffekte gewähren.</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>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. Die eingeklemmte Truhe erstellt beim Öffnen außerdem eine Redstone-Ladung.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>Gewährt eine Redstone-Ladung. Die Ladung wird stärker, wenn mehr Gegenstände auf der Platte liegen.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>Gewährt eine Redstone-Ladung. Die Ladung wird stärker, wenn mehr Gegenstände auf der Platte liegen. Erfordert mehr Gewicht als die leichte Platte.</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>Dient als Redstone-Energiequelle. Kann in Redstone zurückverwandelt werden.</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>Kann Gegenstände fangen oder sie in Behälter legen bzw. aus ihnen entfernen.</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>Ein Schienentyp, der Loren mit Trichtern aktivieren oder deaktivieren und Loren mit TNT auslösen kann.</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>Kann Gegenstände lagern und ablegen oder in einen anderen Behälter schieben, wenn er einen Impuls von einem Redstone-Stromkreis erhält.</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>Bunte Blöcke aus gefärbtem, ausgehärtetem Lehm.</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>Kann an Pferde, Esel oder Maultiere verfüttert werden, um bis zu 10 Herzen zu heilen. Lässt Fohlen schneller wachsen.</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>Wird hergestellt, indem man Lehm in einem Ofen schmilzt.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>Wird aus Glas und einer Farbe hergestellt.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>Wird aus Buntglas hergestellt.</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>Eine kompakte Art, Kohle zu lagern. Kann als Brennstoff in Öfen verwendet werden.</value>
+ </data>
<data name="IDS_SQUID"><value>Tintenfisch</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>Wenn er getötet wird, lässt er einen Tintensack fallen.</value>
- </data>
+ </data>
<data name="IDS_COW"><value>Kuh</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>Wenn sie getötet wird, lässt sie Leder fallen. Kann außerdem mit einem Eimer gemolken werden.</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>Schaf</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>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.</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>Huhn</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>Wenn es getötet wird, lässt es Federn fallen. Legt in zufälligen Abständen Eier.</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>Schwein</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>Wenn es getötet wird, lässt es Schweinefleisch fallen. Kann mithilfe eines Sattels geritten werden.</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>Wolf</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>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.</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>Explodiert, wenn du ihm zu nahe kommst!</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>Skelett</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>Schießt mit Pfeilen auf dich. Wenn es getötet wird, lässt es Pfeile fallen.</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>Spinne</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>Greift dich an, wenn du ihr zu nahe kommst. Kann Wände hochklettern. Wenn sie getötet wird, lässt sie Faden fallen.</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>Zombie</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>Greift dich an, wenn du ihm zu nahe kommst.</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>Zombie-Schweinezüchter</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>Eigentlich friedlich, greift dich aber in Gruppen an, wenn du einen angreifst.</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>Schießt Feuerbälle auf dich, die beim Auftreffen explodieren.</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>Slime</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>Zerfällt in kleinere Slimes, wenn er Schaden erhält.</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>Greift dich an, wenn du ihn ansiehst. Kann außerdem Blöcke bewegen.</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Silberfisch</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>Lockt in der Nähe versteckte Silberfische an, wenn er angegriffen wird. Versteckt sich in Steinblöcken.</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>Höhlenspinne</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>Hat einen giftigen Biss.</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Pilzkuh</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>Kann mithilfe einer Schüssel zu Pilzsuppe verarbeitet werden. Lässt Pilze fallen und wird zu einer normalen Kuh, wenn man sie schert.</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>Schneegolem</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>Der Schneegolem entsteht, wenn Spieler Schneeblöcke und einen Kürbis kombinieren. Bewirft die Feinde seines Erbauers mit Schneebällen.</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>Enderdrache</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>Ein großer schwarzer Drache, den man im Ende findet.</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Lohe</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>Gegner, die man im Nether findet, vorwiegend in Netherfestungen. Lassen Lohenruten fallen, wenn sie getötet werden.</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>Magmawürfel</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>Findet man im Nether. Ähnlich wie Schleim zerfallen sie zu kleineren Versionen, wenn man sie tötet.</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>Dorfbewohner</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>Ozelot</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>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.</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>Eisengolem</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>Erscheinen in Dörfern, um sie zu beschützen, und können mittels Eisenblöcken und Kürbissen erstellt werden.</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>Fledermaus</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>Diese fliegenden Geschöpfe findet man in Höhlen oder anderen großen geschlossenen Räumen.</value>
+ </data>
+<data name="IDS_WITCH"><value>Hexe</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>Diese Feinde findet man in Sümpfen, und sie werfen mit Tränken nach dir, um dich anzugreifen. Wenn sie sterben, lassen sie Tränke fallen.</value>
+ </data>
+<data name="IDS_HORSE"><value>Pferd</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>Diese Tiere können gezähmt und dann geritten werden.</value>
+ </data>
+<data name="IDS_DONKEY"><value>Esel</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>Diese Tiere können gezähmt und dann geritten werden. Du kannst Truhen an ihnen anbringen.</value>
+ </data>
+<data name="IDS_MULE"><value>Maultier</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>Eine Kreuzung aus einem Pferd und einem Esel. Diese Tiere können gezähmt und dann geritten werden. Sie können Truhen tragen.</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>Zombiepferd</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>Skelettpferd</value>
+ </data>
+<data name="IDS_WITHER"><value>Dürre</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>Werden aus Dörrschädeln und Seelensand hergestellt. Feuern explodierende Schädel auf dich ab.</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1384,6 +1523,8 @@ statt nur 3.)</value>
</data>
<data name="IDS_ITEM_MAP"><value>Karte</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>Leere Karte</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>Schallplatte - "13"</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>Schallplatte - "cat"</value>
@@ -1486,6 +1627,28 @@ statt nur 3.)</value>
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Creeper-Kopf</value>
</data>
+<data name="IDS_NETHER_STAR"><value>Netherstern</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>Feuerwerksrakete</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>Feuerwerksstern</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>Redstone-Vergleicher</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>Lore mit TNT</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>Lore mit Trichter</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>Eisen-Pferderüstung</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>Gold-Pferderüstung</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>Diamant-Pferderüstung</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>Leine</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>Namensschild</value>
+ </data>
<data name="IDS_TILE_STONE"><value>Stein</value>
</data>
<data name="IDS_TILE_GRASS"><value>Grasblock</value>
@@ -1502,6 +1665,8 @@ statt nur 3.)</value>
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>Dschungelholzbretter</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>Holzbretter (jeder Typ)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>Setzling</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>Eichensetzling</value>
@@ -1838,6 +2003,190 @@ statt nur 3.)</value>
</data>
<data name="IDS_TILE_SKULL"><value>Schädel</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>Befehlsblock</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>Signalfeuer</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>Eingeklemmte Truhe</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>Beschwerte Druckplatte (leicht)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>Beschwerte Druckplatte (schwer)</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>Redstone-Vergleicher</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>Tageslichtsensor</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>Redstone-Block</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>Trichter</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>Aktivierungsschiene</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>Auswurfblock</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>Gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>Heuballen</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>Ausgehärteter Lehm</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>Kohleblock</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>Schwarz gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>Rot gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>Grün gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>Braun gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>Blau gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>Lila gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>Cyanfarbener gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>Hellgrau gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>Grau gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>Rosa gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>Hellgrün gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>Gelb gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>Hellblau gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>Magentafarben gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>Orange gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>Weiß gefärbter Lehm</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>Schwarzes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>Rotes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>Grünes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>Braunes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>Blaues Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>Lila Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>Cyanfarbenes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>Hellgraues Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>Graues Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>Rosa Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>Hellgrünes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>Gelbes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>Hellblaues Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>Magentafarbenes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>Oranges Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>Weißes Buntglas</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>Schwarze Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>Rote Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>Grüne Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>Braune Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>Blaue Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>Lila Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>Cyanfarbene Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>Hellgraue Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>Graue Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>Rosa Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>Hellgrüne Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>Gelbe Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>Hellblaue Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>Magentafarbene Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>Orange Buntglasscheibe</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>Weiße Buntglasscheibe</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>Kleiner Ball</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>Großer Ball</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>Sternförmig</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Creeper-förmig</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>Explosion</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>Unbekannte Form</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>Schwarz</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>Rot</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>Grün</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>Braun</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>Blau</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>Lila</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>Cyan</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>Hellgrau</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>Grau</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>Rosa</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>Hellgrün</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>Gelb</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>Hellblau</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>Magenta</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>Orange</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>Weiß</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>Andere</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>Verblassen</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>Funkeln</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>Spur</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>Flugdauer:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>Derzeitige Steuerung</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>Layout</value>
@@ -2015,8 +2364,7 @@ Nachts treiben sich Monster herum, du solltest dir einen Unterstand bauen, bevor
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
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.
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
Drück zum Fortfahren{*CONTROLLER_VK_A*}.{*B*}
Drück{*CONTROLLER_VK_B*}, wenn du bereits weißt, wie das Inventar verwendet wird.
@@ -2037,7 +2385,7 @@ Nachts treiben sich Monster herum, du solltest dir einen Unterstand bauen, bevor
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- Wenn du mehr Informationen über einen Gegenstand brauchst, beweg den Cursor über den Gegenstand und drück{*CONTROLLER_VK_RT*}.
+ Wenn du mehr Informationen über einen Gegenstand brauchst, beweg den Cursor über den Gegenstand und drück{*CONTROLLER_ACTION_MENU_PAGEDOWN*}.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2071,7 +2419,7 @@ Nachts treiben sich Monster herum, du solltest dir einen Unterstand bauen, bevor
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- Wenn du mehr Informationen über einen Gegenstand brauchst, beweg den Cursor über den Gegenstand und drück{*CONTROLLER_VK_RT*}.
+ Wenn du mehr Informationen über einen Gegenstand brauchst, beweg den Cursor über den Gegenstand und drück{*CONTROLLER_ACTION_MENU_PAGEDOWN*}.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2618,6 +2966,211 @@ Im Flugmodus halte{*CONTROLLER_ACTION_JUMP*} nach unten gedrückt, um dich nach
Drück{*CONTROLLER_VK_B*}, wenn du schon alles über die Hungerleiste und die Nahrungsaufnahme weißt.
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ Dies ist das Pferdeinventar.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}Drücke zum Fortfahren {*CONTROLLER_VK_A*}.
+ {*B*}Drücke {*CONTROLLER_VK_B*}, wenn du bereits weißt, wie das Pferdeinventar verwendet wird.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ Im Pferdeinventar kannst du Gegenstände an dein Pferd, deinen Esel oder dein Maultier übertragen oder es mit ihnen ausrüsten.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ Sattle dein Pferd, indem du einen Sattel im Sattel-Slot platzierst. Pferde können Rüstungen tragen, wenn du Pferderüstung im Rüstungs-Slot platzierst.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ Du kannst hier auch Gegenstände zwischen deinem eigenen Inventar und den Satteltaschen von Eseln und Maultieren austauschen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>Du hast ein Pferd gefunden.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>Du hast einen Esel gefunden.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>Du hast ein Maultier gefunden.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}Drücke {*CONTROLLER_VK_A*}, um mehr über Pferde, Esel und Maultiere zu erfahren.
+ {*B*}Drücke {*CONTROLLER_VK_B*}, wenn du bereits alles über Pferde, Esel und Maultiere weißt.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ Pferde und Esel findet man hauptsächlich auf freiem Feld. Maultiere sind die Nachfahren von jeweils einem Esel und einem Pferd, sie sind aber selbst unfruchtbar.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ Alle ausgewachsenen Pferde, Esel und Maultiere können geritten werden. Allerdings können nur Pferden Rüstungen angelegt werden und nur Maultiere sowie Esel können mit Satteltaschen für den Transport von Gegenständen ausgestattet werden.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ Pferde, Esel und Maultiere müssen vor dem Gebrauch gezähmt werden. Du zähmst ein Pferd, indem du versuchst, es zu reiten, und oben bleibst, wenn es versucht, dich abzuwerfen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ Wenn das Tier gezähmt ist, erscheinen Liebesherzen und es versucht nicht mehr, dich abzuwerfen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ Versuche jetzt, dieses Pferd zu reiten. Verwende {*CONTROLLER_ACTION_USE*} ohne Gegenstände oder Werkzeuge in der Hand, um aufzusteigen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ Um ein Pferd beim Reiten zu lenken, musst du ihm einen Sattel anlegen. Du kannst Sättel von Dorfbewohnern kaufen oder in versteckten Truhen in der Welt finden.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ Du kannst zahmen Eseln und Maultieren Satteltaschen geben, indem du eine Truhe anbringst. Du kannst dann während des Reitens oder beim Schleichen auf die Taschen zugreifen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ Pferde und Esel (nicht aber Maultiere) können wie andere Tiere mithilfe von goldenen Äpfeln oder goldenen Karotten gezüchtet werden. Fohlen wachsen mit der Zeit zu Pferden heran und du kannst dies beschleunigen, indem du sie mit Weizen oder Heu fütterst.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ Du kannst versuchen, die Pferde und Esel hier zu zähmen, und in den Truhen in der Nähe liegen Sättel, Pferderüstungen und andere nützliche Dinge.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ Dies ist das Signalfeuermenü. Hier kannst du auswählen, welche Kräfte dein Signalfeuer gewähren soll.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}Drücke zum Fortfahren {*CONTROLLER_VK_A*}.
+ {*B*}Drücke {*CONTROLLER_VK_B*}, wenn du bereits weißt, wie das Signalfeuermenü verwendet wird.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ Im Signalfeuermenü kannst du 1 Hauptkraft für dein Signalfeuer auswählen. Je mehr Stufen deine Pyramide hat, desto mehr Kräfte stehen dir zur Auswahl.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ Bei einem Signalfeuer auf einer Pyramide mit mindestens 4 Stufen hast du außerdem die Option, entweder die Regeneration als Zweitkraft oder eine stärkere Hauptkraft auszuwählen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ Um die Kräfte deines Signalfeuers einzustellen, musst du einen Smaragd, Diamant, Gold- oder Eisenbarren im Bezahl-Slot opfern. Danach strahlt das Signalfeuer für unbegrenzte Zeit die Kräfte aus.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>Auf der Spitze dieser Pyramide steht ein inaktives Signalfeuer.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}Drücke {*CONTROLLER_VK_A*}, um mehr über Signalfeuer zu erfahren.
+ {*B*}Drücke {*CONTROLLER_VK_B*}, wenn du bereits alles über Signalfeuer weißt.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ Aktive Signalfeuer werfen einen hellen Lichtstrahl in den Himmel und gewähren Spielern in der Nähe Kräfte. Sie werden aus Glas, Obsidian und Nethersternen gefertigt, die du erhältst, wenn du die Dürre besiegst.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ Signalfeuer müssen auf Pyramiden aus Eisen, Gold, Smaragd oder Diamant so platziert werden, dass sie tagsüber dem Sonnenlicht ausgesetzt sind. Das Material der Unterlage hat aber keine Auswirkungen auf die Kraft des Signalfeuers.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ Verwende das Signalfeuer, um die gewährte Kraft festzulegen. Du kannst mit den bereitgestellten Eisenbarren bezahlen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>Dieser Raum enthält Trichter.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}Drücke {*CONTROLLER_VK_A*}, um mehr über Trichter zu erfahren.
+ {*B*}Drücke {*CONTROLLER_VK_B*}, wenn du bereits alles über Trichter weißt.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ Mit Trichtern kannst du Gegenstände in Behälter füllen oder sie daraus entnehmen sowie automatisch Gegenstände aufheben, die hineingeworfen werden.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ Sie können mit Brauständen, Truhen, Dispensern, Auswurfblöcken, Loren mit Truhen, Loren mit Trichtern sowie anderen Trichtern verwendet werden.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ Trichter versuchen fortwährend, Gegenstände aus einem geeigneten Behälter aufzusaugen, der über ihnen platziert wird. Sie versuchen auch, gelagerte Gegenstände in einen Ausgabebehälter zu legen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ Wenn ein Trichter allerdings mit Redstone betrieben wird, wird er inaktiv und hört auf, Gegenstände aufzusaugen und einzufügen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ Ein Trichter zeigt in die Ausgaberichtung für Gegenstände. Damit ein Trichter auf einen bestimmten Block zeigt, platzierst du ihn dagegen, während du schleichst.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ Es gibt viele nützliche Anwendungsmöglichkeiten für Trichter. In diesem Raum kannst du sie dir ansehen und ausprobieren.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ Dies ist das Feuerwerkmenü. Hier kannst du Feuerwerk und Feuerwerkssterne craften.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}Drücke zum Fortfahren {*CONTROLLER_VK_A*}.
+ {*B*}Drücke {*CONTROLLER_VK_B*}, wenn du bereits weißt, wie das Signalfeuermenü verwendet wird.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ Leg Schießpulver und Papier in das 3x3-Crafting-Raster, das über deinem Inventar angezeigt wird, um Feuerwerk zu craften.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ Du kannst wahlweise mehrere Feuerwerkssterne in das Raster legen, um sie dem Feuerwerk hinzuzufügen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ Mehr Schießpulver im Raster erhöht die Höhe, in der Feuerwerkssterne explodieren.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ Du kannst das fertige Feuerwerk dann aus dem Ausgabeplatz nehmen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ Feuerwerkssterne werden hergestellt, indem du Schießpulver und Farbe in das Raster legst.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ Die Explosion des Feuerwerkssterns nimmt die jeweilige Farbe an.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ Die Form des Feuerwerkssterns ändert sich durch das Hinzufügen von Feuerkugeln, Goldklumpen, Federn oder NPC-Köpfen.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ Spur oder Funkeln können mit Diamanten oder Glowstone-Staub hinzugefügt werden.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ Wenn ein Feuerwerksstern gecraftet wurde, kannst du das Verblassen mit Farbe ändern.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ In diesen Truhen befinden sich verschiedene Gegenstände, die bei der Herstellung von FEUERWERK verwendet werden!
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}Drück{*CONTROLLER_VK_A*}, um mehr über Feuerwerk zu erfahren.
+ {*B*}Drück{*CONTROLLER_VK_B*}, wenn du bereits alles über Feuerwerk weißt.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ Feuerwerk sind dekorative Gegenstände, die manuell oder von Dispensern gestartet werden können. Sie werden aus Papier, Schießpulver und wahlweise einigen Feuerwerkssternen gecraftet.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ Farben, Verblassen, Form, Größe und Effekte (wie Spuren und Funkeln) von Feuerwerkssternen können beim Craften durch zusätzliche Zutaten angepasst werden.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ Probiere, Feuerwerk mit verschiedenen Zutaten aus den Truhen an der Werkbank herzustellen.
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>Auswählen</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>Verwenden</value>
@@ -2678,7 +3231,7 @@ Im Flugmodus halte{*CONTROLLER_ACTION_JUMP*} nach unten gedrückt, um dich nach
</data>
<data name="IDS_TOOLTIPS_CLEAR_QUICK_SELECT"><value>Schnellauswahl leeren</value>
</data>
-<data name="IDS_TOOLTIPS_WHAT_IS_THIS"><value>?</value>
+<data name="IDS_TOOLTIPS_WHAT_IS_THIS"><value>Was ist das?</value>
</data>
<data name="IDS_TOOLTIPS_SHARE"><value>Auf Facebook teilen</value>
</data>
@@ -2840,6 +3393,22 @@ Im Flugmodus halte{*CONTROLLER_ACTION_JUMP*} nach unten gedrückt, um dich nach
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Spielstand für Xbox One hochladen</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>Aufsteigen</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>Absteigen</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>Truhe befestigen</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>Starten</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>Festbinden</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>Losbinden</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>Befestigen</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>Name</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>OK</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>Abbrechen</value>
@@ -3150,6 +3719,20 @@ Möchtest du das vollständige Spiel freischalten?</value>
</data>
<data name="IDS_DISPENSER"><value>Dispenser</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>Pferd</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>Auswurfblock</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>Trichter</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>Signalfeuer</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>Hauptkraft</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>Zweitkraft</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>Lore</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>Es stehen derzeit keine entsprechenden Inhalte zum Herunterladen für diesen Titel zur Verfügung.</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s ist dem Spiel beigetreten.</value>
@@ -3309,10 +3892,14 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>Spielmodus: Kreativ</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>Spielmodus: Abenteuer</value>
+ </data>
<data name="IDS_SURVIVAL"><value>Überleben</value>
</data>
<data name="IDS_CREATIVE"><value>Kreativ</value>
</data>
+<data name="IDS_ADVENTURE"><value>Abenteuer</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>Im Überlebensmodus</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>Im Kreativmodus</value>
@@ -3333,6 +3920,8 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>Superflach</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>Gib einen Seed ein, um das gleiche Gelände erneut zu erstellen. Lass das Feld leer, um eine zufällige Welt zu erstellen.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>Wenn dies aktiviert ist, ist das Spiel online.</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>Wenn dies aktiviert ist, können nur eingeladene Spieler beitreten.</value>
@@ -3349,7 +3938,7 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_GAMEOPTION_HOST_PRIVILEGES"><value>Aktiviert, dass der Host das Fliegen nutzen, Erschöpfung deaktivieren und sich selbst im Spielmenü unsichtbar machen kann. Deaktiviert Erfolge und Bestenlisten-Aktualisierungen.</value>
</data>
-<data name="IDS_GAMEOPTION_RESET_NETHER"><value>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.</value>
+<data name="IDS_GAMEOPTION_RESET_NETHER"><value>Bei Aktivierung wird der Nether neu erstellt. Nützlich bei alten Spielständen, die keine Netherfestungen enthalten.</value>
</data>
<data name="IDS_GAMEOPTION_STRUCTURES"><value>Aktiviert, dass Strukturen wie Dörfer und Festungen in der Welt erstellt werden.</value>
</data>
@@ -3357,6 +3946,20 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>Aktiviert, dass eine Truhe mit nützlichen Gegenständen in der Nähe des Startpunkts des Spielers erstellt wird.</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>Bei Deaktivierung können Monster und Tiere keine Blöcke verändern (z. B. werden bei Creeper-Explosionen keine Blöcke zerstört und Schafe entfernen kein Gras) oder Gegenstände aufheben.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>Bei Aktivierung behalten Spieler ihr Inventar, wenn sie sterben.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>Bei Deaktivierung erscheinen keine NPCs auf natürlichem Weg.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>Bei Deaktivierung lassen Monster und Tiere keine Beute fallen (z. B. lassen Creeper kein Schießpulver fallen).</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>Bei Deaktivierung lassen Blöcke keine Gegenstände zurück, wenn sie zerstört werden (z. B. hinterlassen Steinblöcke keine Pflastersteine).</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>Bei Deaktivierung wird die Gesundheit von Spielern nicht auf natürlichem Weg wiederhergestellt.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>Bei Deaktivierung ändert sich die Tageszeit nicht.</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>Skinpakete</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>Themen</value>
@@ -3405,7 +4008,49 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} wurde von {*SOURCE*} erschlagen.</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} wurde durch {*SOURCE*} getötet.</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} wurde durch {*SOURCE*} mit Magie getötet.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} ist von einer Leiter gefallen.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} ist von Ranken heruntergefallen.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} ist aus dem Wasser gefallen.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} ist aus großer Höhe heruntergefallen.</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*PLAYER*} wurde von {*SOURCE*} zum Absturz verdammt.</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*PLAYER*} wurde von {*SOURCE*} zum Absturz verdammt.</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*PLAYER*} wurde von {*SOURCE*} mit {*ITEM*} zum Absturz verdammt.</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>{*PLAYER*} ist zu tief gefallen und wurde von {*SOURCE*} erledigt.</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>{*PLAYER*} ist zu tief gefallen und wurde von {*SOURCE*} mit {*ITEM*} erledigt.</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} ist im Kampf gegen {*SOURCE*} ins Feuer gegangen.</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} wurde im Kampf gegen {*SOURCE*} eingeäschert.</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} hat versucht, in Lava zu schwimmen, um {*SOURCE*} zu entkommen.</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} ist beim Versuch ertrunken, {*SOURCE*} zu entkommen.</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} ist beim Versuch, {*SOURCE*} zu entkommen, in einen Kaktus gelaufen.</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*PLAYER*} wurde von {*SOURCE*} in die Luft gejagt.</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} ist verdorrt.</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*PLAYER*} wurde durch {*SOURCE*} mit {*ITEM*} getötet.</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*PLAYER*} wurde von {*SOURCE*} mit {*ITEM*} erschossen.</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*PLAYER*} starb durch einen Feuerball von {*SOURCE*} mit {*ITEM*}.</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*PLAYER*} wurde von {*SOURCE*} mit {*ITEM*} erschlagen.</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} wurde durch {*SOURCE*} mit {*ITEM*} getötet.</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>Grundgesteinnebel</value>
</data>
@@ -3570,9 +4215,9 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_DONT_RESET_NETHER"><value>Nether nicht zurücksetzen</value>
</data>
-<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Pilzkuh kann momentan nicht geschoren werden. Die Höchstanzahl von Schweinen, Schafen, Kühen und Katzen wurde erreicht.</value>
+<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Pilzkuh kann momentan nicht geschoren werden. Die Höchstanzahl von Schweinen, Schafen, Kühen, Katzen und Pferden wurde erreicht.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>Eintrittsei kann momentan nicht verwendet werden. Die Höchstanzahl von Schweinen, Schafen, Kühen und Katzen wurde erreicht.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Schweinen, Schafen, Kühen, Katzen und Pferden wurde erreicht.</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED"><value>Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Pilzkühen wurde erreicht.</value>
</data>
@@ -3582,6 +4227,8 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Tintenfischen in einer Welt wurde erreicht.</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Fledermäusen in einer Welt wurde erreicht.</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Feinden in einer Welt wurde erreicht.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Dorfbewohnern in einer Welt wurde erreicht.</value>
@@ -3590,12 +4237,14 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>Im friedlichen Modus kannst du keine Feinde erscheinen lassen.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Schweine, Schafe, Kühe und Katzen wurde erreicht.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Schweine, Schafe, Kühen, Katzen und Pferden wurde erreicht.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Wölfe wurde erreicht.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Hühner wurde erreicht.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Pferde wurde erreicht.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Pilzkühe wurde erreicht.</value>
</data>
<data name="IDS_MAX_BOATS"><value>Die Höchstanzahl von Booten in einer Welt wurde erreicht.</value>
@@ -3623,27 +4272,43 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
<data name="IDS_CREDITS"><value>Mitwirkende</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>Inhalte neu installieren</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>Debug-Einstellungen</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>Feuer breitet sich aus</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>TNT explodiert</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>Spieler gegen Spieler</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>Spielern vertrauen</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>Hostprivilegien</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>Strukturen erzeugen</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>Superflache Welt</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>Bonustruhe</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>Weltoptionen</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>Spieloptionen</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>NPC-Griefing</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>Inventar behalten</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>NPC-Eintritt</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>NPC-Beute</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>Felderertrag</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>Natürliche Erholung</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>Tageslichtzyklus</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>Kann bauen und abbauen</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>Kann Türen und Schalter verwenden</value>
@@ -3830,6 +4495,14 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_POTION_POISON"><value>Gift</value>
</data>
+<data name="IDS_POTION_WITHER"><value>Dürre</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>Gesundheitsbonus</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>Absorption</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>Sättigung</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>der Geschwindigkeit</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>der Langsamkeit</value>
@@ -3868,6 +4541,14 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>des Gifts</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>des Verfalls</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>des Gesundheitsbonus</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>der Absorption</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>der Sättigung</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3964,6 +4645,22 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_POTION_DESC_POISON"><value>Verringert mit der Zeit die Gesundheit von betroffenen Spielern, Tieren und Monstern.</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>Bei Anwendung:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>Pferdesprungstärke</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>Zombie-Verstärkungen</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>Max. Gesundheit</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>NPC-Folgereichweite</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>Rückstoßwiderstand</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>Geschwindigkeit</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>Angriffsschaden</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>Schärfe</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>Bann</value>
@@ -4054,7 +4751,7 @@ Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?</value>
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>Regeneriert 3{*ICON_SHANK_01*}. Entsteht, wenn man eine Kartoffel im Ofen brät.</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>Regeneriert 1{*ICON_SHANK_01*}, doch du kannst dich damit vergiften. Kann in einem Ofen gebraten oder auf Ackerland gepflanzt werden.</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>Regeneriert 1{*ICON_SHANK_01*}, doch du kannst dich damit vergiften.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>Regeneriert 3{*ICON_SHANK_01*}. Wird aus einer Karotte und Goldnuggets hergestellt.</value>
</data>
@@ -4452,7 +5149,7 @@ Alle Endertruhen in einer Welt sind verknüpft, sodass Gegenstände, die in eine
</data>
<data name="IDS_PLATFORM_NAME"><value>Xbox 360</value>
</data>
-<data name="IDS_BACK_BUTTON"><value>Back</value>
+<data name="IDS_BACK_BUTTON"><value>BACK</value>
</data>
<data name="IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS"><value>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.</value>
</data>
diff --git a/Minecraft.Client/Common/Media/es-ES/4J_strings.resx b/Minecraft.Client/Common/Media/es-ES/4J_strings.resx
index ea428db6..4882271b 100644
--- a/Minecraft.Client/Common/Media/es-ES/4J_strings.resx
+++ b/Minecraft.Client/Common/Media/es-ES/4J_strings.resx
@@ -73,11 +73,11 @@
</data>
<data name="IDS_PRO_NOTONLINE_TITLE"><value>Perfil de jugador no en línea</value>
</data>
-<data name="IDS_PRO_NOTONLINE_TEXT"><value>Este juego ofrece características que requieren un perfil de jugador habilitado para Xbox Live, pero en estos momentos estás desconectado.</value>
+<data name="IDS_PRO_NOTONLINE_TEXT"><value>Este juego ofrece características que requieren un perfil de jugador habilitado para Xbox LIVE, pero en estos momentos estás desconectado.</value>
</data>
-<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>Esta característica requiere un perfil de jugador con sesión iniciada en Xbox Live.</value>
+<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>Esta característica requiere un perfil de jugador con sesión iniciada en Xbox LIVE.</value>
</data>
-<data name="IDS_PRO_NOTONLINE_ACCEPT"><value>Conectarse a Xbox Live</value>
+<data name="IDS_PRO_NOTONLINE_ACCEPT"><value>Conectarse a Xbox LIVE</value>
</data>
<data name="IDS_PRO_NOTONLINE_DECLINE"><value>Seguir jugando sin conexión</value>
</data>
@@ -100,7 +100,7 @@
<data name="IDS_PRO_UNLOCKGAME_TITLE"><value>Desbloquear juego completo</value>
</data>
<data name="IDS_PRO_UNLOCKGAME_TEXT"><value>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.
+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?</value>
</data>
<data name="IDS_PRO_PROFILEPROBLEM_TEXT"><value>Volverás al menú principal porque se ha producido un error al leer tu perfil.</value>
diff --git a/Minecraft.Client/Common/Media/es-ES/strings.resx b/Minecraft.Client/Common/Media/es-ES/strings.resx
index 6fbeff35..1e07927c 100644
--- a/Minecraft.Client/Common/Media/es-ES/strings.resx
+++ b/Minecraft.Client/Common/Media/es-ES/strings.resx
@@ -11,7 +11,7 @@
</data>
<data name="IDS_TIPS_GAMETIP_3"><value>Si estableces la dificultad del juego en Pacífico, tu salud se regenerará automáticamente. ¡Además, no saldrán monstruos por la noche!</value>
</data>
-<data name="IDS_TIPS_GAMETIP_4"><value>Dale un hueso a un lobo para domesticarlo. Puedes hacer que se siente o que te siga.</value>
+<data name="IDS_TIPS_GAMETIP_4"><value>Dale un hueso a un lobo para domarlo. Puedes hacer que se siente o que te siga.</value>
</data>
<data name="IDS_TIPS_GAMETIP_5"><value>Para soltar objetos desde el menú de inventario, mueve el cursor fuera del menú y pulsa{*CONTROLLER_VK_A*}.</value>
</data>
@@ -87,7 +87,7 @@
</data>
<data name="IDS_TIPS_GAMETIP_41"><value>Si colocas dos cofres juntos crearás un cofre grande.</value>
</data>
-<data name="IDS_TIPS_GAMETIP_42"><value>Los lobos domesticados indican su salud con la posición de su cola. Dales de comer para curarlos.</value>
+<data name="IDS_TIPS_GAMETIP_42"><value>Los lobos domados indican su salud con la posición de su cola. Dales de comer para curarlos.</value>
</data>
<data name="IDS_TIPS_GAMETIP_43"><value>Cocina un cactus en un horno para obtener tinte verde.</value>
</data>
@@ -216,7 +216,7 @@ 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*}Lágrima de Ghast{*ETW*}{*B*}
* {*T2*}Polvo de llama{*ETW*}{*B*}
* {*T2*}Crema de magma{*ETW*}{*B*}
* {*T2*}Melón resplandeciente{*ETW*}{*B*}
@@ -229,7 +229,7 @@ Tendrás que experimentar y combinar ingredientes para averiguar cuántas pocion
</data>
<data name="IDS_HOW_TO_PLAY_ENCHANTMENT"><value>{*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*}
+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*}
@@ -286,19 +286,40 @@ En modo de vuelo, puedes mantener pulsado{*CONTROLLER_ACTION_JUMP*} para subir y
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*}
+ Si está habilitado, 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*}
+ Si está deshabilitado, 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*}
+ Si está habilitado, 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*}
+ Si está habilitado, la dinamita explota cuando se denota. 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*}
+ Si está habilitado, el host puede activar su habilidad para volar, deshabilitar la extenuación y hacerse invisible desde el menú de juego. {*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+ {*T2*}Ciclo de luz diurna{*ETW*}{*B*}
+ Al desactivarse, la hora del día no cambiará.{*B*}{*B*}
+
+ {*T2*}Mantener inventario{*ETW*}{*B*}
+ Al activarse, los jugadores mantendrán el inventario al morir.{*B*}{*B*}
+
+ {*T2*}Generación de enemigos{*ETW*}{*B*}
+ Al desactivarse, los enemigos no se generarán de forma natural.{*B*}{*B*}
+
+ {*T2*}Vandalismo de enemigos{*ETW*}{*B*}
+ Cuando se desactiva, impide que monstruos y animales cambien bloques (por ejemplo, las explosiones de Creepers no destruirán bloques y las ovejas no quitarán el césped) o recojan objetos.{*B*}{*B*}
+
+ {*T2*}Botín de enemigos{*ETW*}{*B*}
+ Al desactivarse, los monstruos y animales no soltarán botín (por ejemplo, los Creepers no soltarán pólvora).{*B*}{*B*}
+
+ {*T2*}Soltar casillas{*ETW*}{*B*}
+ Al desactivarse, los bloques no soltarán objetos cuando se destruyan (por ejemplo, los bloques de piedra no soltarán guijarros).{*B*}{*B*}
+
+ {*T2*}Regeneración natural{*ETW*}{*B*}
+ Al desactivarse, los jugadores no regenerarán salud de forma natural.{*B*}{*B*}
{*T1*}Opciones de generación del mundo{*ETW*}{*B*}
Cuando se crea un mundo existen opciones adicionales.{*B*}{*B*}
@@ -313,10 +334,10 @@ Cuando se crea un mundo existen opciones adicionales.{*B*}{*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*}
+ Si está habilitado, el mundo inferior se regenerará. 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*}
+ Dentro del juego se pueden acceder a varias opciones pulsando {*BACK_BUTTON*} 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*}
@@ -325,42 +346,44 @@ Cuando se crea un mundo existen opciones adicionales.{*B*}{*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*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivado. Cuando esta opción está habilitada, el jugador puede interaccionar con el mundo de forma normal. Cuando está deshabilitado 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*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivado. 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*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivado. 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*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivado. 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*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivado. 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*}
+ {*KICK_PLAYER_DESCRIPTION*}{*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*}
+
+ {*T2*}Desactiva la 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*}
+
+ {*T2*}Puede teletransportarse{*ETW*}{*B*}
Permite al jugador desplazarse o desplazar a otros hasta la posición de otros jugadores en el mundo.
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>En el caso de jugadores que no estén en la misma {*PLATFORM_NAME*} que el host, si se selecciona esta opción se expulsará al jugador de la partida y a cualquier otro jugador en la misma {*PLATFORM_NAME*}. El jugador no podrá volver a unirse al juego hasta que se reinicie.</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>Página siguiente</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>Página anterior</value>
@@ -424,62 +447,94 @@ para que puedan unirse a ti con facilidad.
</data>
<data name="IDS_HOW_TO_PLAY_MENU_WHATSNEW"><value>Novedades</value>
</data>
-<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
-{*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*}
+<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>{*T3*}Cambios e incorporaciones{*ETW*}{*B*}{*B*}
+- Nuevos objetos añadidos: arcilla endurecida, arcilla tintada, bloque de hulla, fardo de heno, raíl activador, bloque de piedra rojiza, sensor de luz diurna, soltador, embudo, vagoneta con embudo, vagoneta con dinamita, comparador de piedra rojiza, plato de presión por peso, faro, cofre trampa, cohete de fuegos artificiales, estrella de fuegos artificiales, estrella del mundo inferior, rienda, armadura para caballo, etiqueta de nombre y huevo generador de caballos.{*B*}
+- Nuevos enemigos añadidos: Wither, esqueletos atrofiados, brujas, murciélagos, caballos, burros y mulas.{*B*}
+- Nuevas funciones de generación de terrenos: chozas de bruja.{*B*}
+- Nueva interfaz de faro.{*B*}
+- Nueva interfaz de caballo.{*B*}
+- Nueva interfaz de embudo.{*B*}
+- Nueva interfaz de fuegos artificiales: podrás acceder a ella desde la mesa de creación cuando tengas los ingredientes necesarios para fabricar una estrella de fuegos artificiales o un cohete de fuegos artificiales.{*B*}
+- Nuevo modo Aventura: en él solo podrás romper bloques con las herramientas correctas.{*B*}
+- Nuevos efectos de sonido.{*B*}
+- Los enemigos, los objetos y los proyectiles podrán pasar ahora a través de portales.{*B*}
+- Ahora los repetidores se pueden bloquear proporcionándoles energía con otros repetidores.{*B*}
+- Los zombis y esqueletos pueden generarse con diferentes armas y armaduras.{*B*}
+- Nuevos mensajes de muerte.{*B*}
+- Ponles nombre a tus enemigos con una etiqueta y cámbiales el nombre a los contenedores para que aparezca en el título del menú.{*B*}
+- Ahora la carne de hueso no hará crecer todo a su máximo tamaño, sino que lo hará por fases.{*B*}
+- La señal de piedra rojiza que describe el contenido de los cofres, puestos de destilado, dispensadores y tocadiscos se puede detectar con un comparador de piedra rojiza.{*B*}
+- Los dispensadores se pueden orientar en cualquier dirección.{*B*}
+- Comerse una manzana dorada le da al jugador salud de "absorción" extra durante un corto periodo de tiempo.{*B*}
+- Cuanto más tiempo permanezcas en una zona, más fuertes serán los monstruos que se generen en dicha zona.{*B*}
</value>
</data>
<data name="IDS_TITLEUPDATE"><value>{*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*}
-</value>
+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*}: arcilla endurecida, arcilla tintada, bloque de hulla, fardo de heno, raíl activador, bloque de piedra rojiza, sensor de luz diurna, soltador, embudo, vagoneta con embudo, vagoneta con dinamita, comparador de piedra rojiza, plato de presión por peso, faro, cofre trampa, cohete de fuegos artificiales, estrella de fuegos artificiales, estrella del mundo inferior, rienda, armadura para caballo, etiqueta de nombre y huevo generador de caballos.{*B*}{*B*}
+{*T1*}Nuevos enemigos{*ETB*}: Wither, esqueletos atrofiados, brujas, murciélagos, caballos, burros y mulas.{*B*}{*B*}
+{*T1*}Nuevas funciones{*ETB*}: doma caballos y móntalos, fabrica fuegos artificiales y lánzalos, ponle nombre a los animales y a los monstruos con etiquetas, crea circuitos de piedra rojiza más avanzados y, además, descubre las nuevas opciones de host que te ayudarán a controlar lo que tus invitados pueden hacer en tu mundo.{*B*}{*B*}
+{*T1*}Nuevos mundo tutorial{*ETB*} – ¡Aprende a utilizar las antiguas y las nuevas funciones con el mundo tutorial! ¡A ver si puedes encontrar todos los discos secretos ocultos en el mundo!{*B*}{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>Caballos</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}CÓMO SE JUEGA: CABALLOS{*ETW*}{*B*}{*B*}
+Los caballos y los burros se suelen encontrar en las llanuras abiertas. Las mulas son las crías de un burro y un caballo, pero no son fértiles.{*B*}
+Todos los caballos, burros y mulas adultos se pueden montar. Sin embargo, solo los caballos pueden llevar armadura, y solo las mulas y los burros pueden equiparse con alforjas para llevar objetos.{*B*}{*B*}
+Los caballos, burros y mulas deben domarse antes de poder usarse. Un caballo se doma intentando montarlo y logrando mantenerse sobre él mientras trata de tirarte.{*B*}
+Cuando estén domados, aparecerán corazones de amor a su alrededor y ya no intentarán tirarte. Para dirigir un caballo, debes equiparlo con una silla de montar.{*B*}{*B*}
+Puedes comprar sillas de montar a los aldeanos o encontrarlas en cofres ocultos por el mundo.{*B*}
+Puedes poner alforjas a los burros y mulas domados; solo tienes que colocarles un cofre. Puedes acceder a estas alforjas mientras montas o acechas.{*B*}{*B*}
+Los caballos y los burros (pero no las mulas) pueden cruzarse como los demás animales utilizando manzanas doradas o zanahorias doradas.{*B*}
+Los potros se convertirán en caballos adultos con el tiempo, aunque alimentarlos con trigo o heno acelerará el proceso.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>Faros</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}CÓMO SE JUEGA: FAROS{*ETW*}{*B*}{*B*}
+Los faros activos proyectan un rayo de luz brillante hacia el cielo y otorgan poderes a los jugadores cercanos.{*B*}
+Se crean con cristal, obsidiana y estrellas del mundo inferior, que se pueden obtener derrotando al Wither.{*B*}{*B*}
+Los faros deben situarse de modo que queden al sol durante el día. Los faros deben colocarse en pirámides de hierro, oro, esmeralda o diamante.{*B*}
+El material sobre el que se sitúe el faro no tiene ningún efecto sobre el poder del mismo.{*B*}{*B*}
+En el menú de faro puedes elegir un poder principal para este. Podrás elegir entre más poderes cuantas más plantas tenga la pirámide.{*B*}
+Un faro sobre una pirámide de al menos cuatro plantas también ofrece la posibilidad de o bien tener el poder secundario Regeneración, o bien tener un poder principal más fuerte.{*B*}{*B*}
+Para establecer los poderes del faro, debes sacrificar un lingote de esmeralda, diamante, oro o hierro en el espacio de pago.{*B*}
+Una vez establecidos, los poderes emanarán del faro indefinidamente.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>Fuegos artificiales</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}CÓMO SE JUEGA: FUEGOS ARTIFICIALES{*ETW*}{*B*}{*B*}
+Los fuegos artificiales son objetos decorativos que se pueden lanzar manualmente o con dispensadores. Se pueden crear usando papel, pólvora y, opcionalmente, una cantidad específica de estrellas de fuegos artificiales.{*B*}
+Se pueden personalizar el color, el desvanecimiento, la forma, el tamaño y los efectos (como estelas y brillos) de las estrellas de fuegos artificiales si se les incluye ingredientes adicionales durante la creación.{*B*}{*B*}
+Para crear un fuego artificial, coloca pólvora y papel en el recuadro de creación de 3x3 que se ve en tu inventario.{*B*}
+También puedes colocar varias estrellas de fuegos artificiales en el recuadro de creación para agregarlas a los fuegos artificiales.{*B*}
+Cuanta más pólvora utilices durante la creación, más ascenderá la estrella de fuegos artificiales antes de explotar.{*B*}{*B*}
+Luego recoge el fuego artificial que has creado del espacio de producción.{*B*}{*B*}
+Las estrellas de fuegos artificiales se pueden crear con pólvora y tinte.{*B*}
+ - El tinte determinará el color de la estrella al explotar.{*B*}
+ - La forma de la estrella se puede determinar añadiéndole descargas de fuego, pepitas de oro, plumas o cabeza de enemigos.{*B*}
+ - Se puede añadir una estela o un brillo usando diamantes o polvo de piedra brillante.{*B*}{*B*}
+Cuando hayas creado un fuego artificial, puedes determinar el color de desvanecimiento de la estrella con tinte.
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>Embudos</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}CÓMO SE JUEGA: EMBUDOS{*ETW*}{*B*}{*B*}
+Los embudos se utilizan para insertar o quitar objetos de contenedores y para recoger de forma automática los objetos que se hayan lanzado en su interior.{*B*}
+Pueden afectar a puestos de destilado, cofres, dispensadores, soltadores, vagonetas con cofres, vagonetas con embudos y otros embudos.{*B*}{*B*}
+Los embudos intentarán absorber sin cesar objetos de un contenedor apto que se coloque sobre ellos. También tratarán de insertar objetos almacenados en un contenedor de salida.{*B*}
+Si un embudo funciona con piedra rojiza, se volverá inactivo y dejará tanto de absorber como de insertar objetos.{*B*}{*B*}
+Un embudo apunta en la dirección en la que intenta soltar objetos. Para que un embudo apunte a cierto bloque, colócalo contra dicho bloque mientras acechas.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>Soltadores</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}CÓMO SE JUEGA: SOLTADORES{*ETW*}{*B*}{*B*}
+Cuando se encuentren junto a una piedra rojiza, los soltadores dejarán caer un objeto aleatorio. Usa {*CONTROLLER_ACTION_USE*} para abrir el soltador y cargarlo con objetos de tu inventario.{*B*}
+Si el soltador se encuentra frente a un cofre o a otro tipo de contenedor, el objeto caerá en dicho cofre o contenedor. Se pueden construir largas cadenas de soltadores para transportar objetos a grandes distancias. Para que esto funcione, se los tiene que activar y desactivar alternativamente.
+ </value>
</data>
<data name="IDS_DESC_SWORD"><value>Causa más daño que a mano.</value>
</data>
@@ -606,10 +661,36 @@ Los colores de la cama siempre son los mismos, independientemente del color de l
</data>
<data name="IDS_DESC_MAP"><value>Cuando se porta, crea una imagen del área explorada. Se puede usar para buscar rutas.</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>Al usarse, se convierte en un mapa de la parte del mundo en la que te encuentras y se llena conforme lo exploras.</value>
+ </data>
<data name="IDS_DESC_BOW"><value>Permite ataques a distancia con flechas.</value>
</data>
<data name="IDS_DESC_ARROW"><value>Se usa como munición para arcos.</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>La suelta el Wither y se utiliza para crear faros.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>Cuando se activan, crean coloridas explosiones. El color, efecto, forma y desaparición vienen determinados por la estrella de fuegos artificiales que se utilice al crear unos fuegos artificiales.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>Se utiliza para determinar el color, efecto y forma de unos fuegos artificiales.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>Se utiliza en los circuitos de piedra rojiza para mantener, comparar o sustraer fuerza de señal, o para medir el estado de ciertos bloques.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>Es un tipo de vagoneta que funciona como un bloque de dinamita móvil.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>Es un bloque que emite una señal de piedra rojiza en función de la luz solar (o la falta de la misma).</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>Es un tipo especial de vagoneta que funciona de forma similar a un embudo. Recogerá objetos que estén sueltos en las vías y de los contenedores de encima.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>Un tipo especial de armadura con la que se puede equipar un caballo. Proporciona 5 de armadura.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>Un tipo especial de armadura con la que se puede equipar un caballo. Proporciona 7 de armadura.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>Un tipo especial de armadura con la que se puede equipar un caballo. Proporciona 11 de armadura.</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>Se utiliza para atar enemigos al jugador o a postes de valla.</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>Se utiliza para nombrar enemigos del mundo.</value>
+</data>
<data name="IDS_DESC_BREAD"><value>Restablece 2,5{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_CAKE"><value>Restablece 1{*ICON_SHANK_01*}. Se puede usar 6 veces.</value>
@@ -626,7 +707,7 @@ Los colores de la cama siempre son los mismos, independientemente del color de l
</data>
<data name="IDS_DESC_BEEF_RAW"><value>Restablece 1.5{*ICON_SHANK_01*}, o se puede cocinar en el horno.</value>
</data>
-<data name="IDS_DESC_BEEF_COOKED"><value>Restablece {*ICON_SHANK_01*}. Se crea cocinando ternera cruda en el horno.</value>
+<data name="IDS_DESC_BEEF_COOKED"><value>Restablece 4{*ICON_SHANK_01*}. Se crea cocinando ternera cruda en el horno.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW"><value>Restablece 1.5{*ICON_SHANK_01*}, o se puede cocinar en el horno.</value>
</data>
@@ -667,7 +748,7 @@ de nivel bajo.
</data>
<data name="IDS_DESC_POWEREDRAIL"><value>Cuando se activa, acelera las vagonetas que pasan por encima. Si no está activado, las vagonetas se detendrán.</value>
</data>
-<data name="IDS_DESC_DETECTORRAIL"><value>Funciona como un plato de presión, envía una señal de piedra rojiza cuando se activa, pero solo una vagoneta puede hacerlo.</value>
+<data name="IDS_DESC_DETECTORRAIL"><value>Funciona como un plato de presión, ya que envía una señal de piedra rojiza cuando se activa, pero solo una vagoneta puede hacer que se active.</value>
</data>
<data name="IDS_DESC_MINECART"><value>Se usa para transportarte a ti, a un animal o a un monstruo por raíles.</value>
</data>
@@ -731,7 +812,7 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_DESC_PAPER"><value>Se usa para crear libros y mapas.</value>
</data>
-<data name="IDS_DESC_BOOK"><value>Se usa para crear una estantería o para hechizar libros.</value>
+<data name="IDS_DESC_BOOK"><value>Se usa para crear estanterías o libros hechizados.</value>
</data>
<data name="IDS_DESC_BOOKSHELF"><value>Permite crear hechizos más potentes cuando se coloca alrededor de una mesa de hechizos.</value>
</data>
@@ -881,7 +962,7 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_DESC_BLAZE_ROD"><value>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.</value>
</data>
-<data name="IDS_DESC_GHAST_TEAR"><value>Se usa para destilar pociones. Lo sueltan los espectros cuando mueren.</value>
+<data name="IDS_DESC_GHAST_TEAR"><value>Se usa para destilar pociones. Lo sueltan los Ghast cuando mueren.</value>
</data>
<data name="IDS_DESC_GOLD_NUGGET"><value>Lo sueltan los porqueros zombis cuando mueren. Los porqueros zombis se encuentran en el mundo inferior. Se usa como ingrediente para destilar pociones.</value>
</data>
@@ -911,7 +992,7 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_DESC_WATERLILY"><value>Flota en el agua y se puede caminar sobre él.</value>
</data>
-<data name="IDS_DESC_NETHERBRICK"><value>Se usa para construir fortalezas del mundo inferior. Inmume a las bolas de fuego del espectro.</value>
+<data name="IDS_DESC_NETHERBRICK"><value>Se usa para construir fortalezas del mundo inferior. Inmume a las bolas de fuego del Ghast.</value>
</data>
<data name="IDS_DESC_NETHERFENCE"><value>Se usa en las fortalezas del mundo inferior.</value>
</data>
@@ -947,100 +1028,158 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_DESC_SKULL"><value>Las cabezas de enemigos pueden colocarse como decoración o llevarse como una máscara en el espacio de casco.</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>Se utiliza para ejecutar comandos.</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>Proyecta un rayo de luz hacia el cielo y puede causar efectos de estado en los jugadores cercanos.</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>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. El cofre trampa también crea una descarga de piedra rojiza cuando se abre.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>Proporciona una descarga de piedra rojiza. La descarga será más fuerte si hay más objetos en el plato.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>Proporciona una descarga de piedra rojiza. La descarga será más fuerte si hay más objetos en el plato. Requiere más peso que el plato ligero.</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>Se usa como fuente de energía de piedra rojiza. Se puede volver a transformar en piedra rojiza.</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>Se utiliza para coger objetos o transferir objetos dentro o fuera de contenedores.</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>Un tipo de raíl que puede activar o desactivar vagonetas con embudos y activar vagonetas con dinamita.</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>Se usa para sujetar y soltar objetos, o para empujarlos dentro de otro contenedor cuando recibe una descarga de piedra rojiza.</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>Bloques coloridos que se crean tiñendo arcilla endurecida.</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>Se le puede dar de comer a los caballos, burros o mulas para curar hasta 10 corazones. Acelera el crecimiento de los potros.</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>Se crea al fundir arcilla en un horno.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>Se crea a partir de cristal y un tinte.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>Se crea a partir de vidrio tintado.</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>Una manera de almacenar hulla de forma compacta. Se puede usar como combustible en un horno.</value>
+ </data>
<data name="IDS_SQUID"><value>Calamar</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>Suelta bolsas de tinta cuando muere.</value>
- </data>
+ </data>
<data name="IDS_COW"><value>Vaca</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>Suelta cuero cuando muere. Se puede ordeñar con un cubo.</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>Oveja</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>Suelta lana cuando se esquila (si aún no ha sido esquilada). Se puede teñir para que su lana sea de diferente color.</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>Gallina</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>Suelta plumas cuando muere y pone huevos al azar.</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>Cerdo</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>Suelta chuletas de cerdo cuando muere. Se puede montar con una silla.</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>Lobo</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>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.</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>¡Explota si te acercas demasiado!</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>Esqueleto</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>Te dispara flechas. Suelta flechas cuando muere.</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>Araña</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>Te ataca cuando está cerca. Puede escalar muros. Suelta cuerda cuando muere.</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>Zombi</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>Te ataca cuando está cerca.</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>Porquero zombi</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>En principio es manso, pero si atacas a uno atacará en grupo.</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>Te dispara bolas de fuego que explotan al hacer contacto.</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>Limo</value>
- </data>
-<data name="IDS_DESC_SLIME"><value>Escupe limos más pequeños cuando recibe daños.</value>
- </data>
+ </data>
+<data name="IDS_DESC_SLIME"><value>Se divide en Limos más pequeños cuando recibe daños.</value>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>Te ataca si lo miras. También puede mover bloques de sitio.</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Pez plateado</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>Atrae a los peces plateados ocultos cercanos al atacarlo. Se oculta en bloques de piedra.</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>Araña de las cuevas</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>Tiene una picadura venenosa.</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Champiñaca</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>Crea estofado de champiñón si se usa en un cuenco. Suelta champiñones y se convierte en una vaca normal cuando se esquila.</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>Gólem de nieve</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>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.</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>Dragón de Ender</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>Un dragón negro y grande que se encuentra en El Fin.</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Llama</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>Son enemigos que se encuentran en el mundo inferior, principalmente dentro de las fortalezas del mundo inferior. Sueltan barras de llama cuando mueren.</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>Cubo de magma</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>Se encuentran en el mundo inferior. Son parecidos a los limos y se fragmentan en versiones más pequeñas cuando mueren.</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>Aldeano</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>Ocelote</value>
- </data>
-<data name="IDS_DESC_OZELOT"><value>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á.</value>
- </data>
+ </data>
+<data name="IDS_DESC_OZELOT"><value>Se encuentran en junglas. Pueden domarse dándoles de comer pescado crudo. Tienes que dejar se te acerque el ocelote, aunque ten cuidado: cualquier movimiento repentino le espantará.</value>
+ </data>
<data name="IDS_IRONGOLEM"><value>Gólem de hierro</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>Aparecen en aldeas para protegerlas y pueden crearse usando bloques de hierro y calabazas.</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>Murciélago</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>Estas criaturas voladoras se encuentran en cuevas y otros grandes espacios cerrados.</value>
+ </data>
+<data name="IDS_WITCH"><value>Bruja</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>Estos enemigos pueden encontrarse en pantanos y atacan lanzando pociones. Si las matas, sueltan pociones.</value>
+ </data>
+<data name="IDS_HORSE"><value>Caballo</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>Estos animales se pueden domar y montar.</value>
+ </data>
+<data name="IDS_DONKEY"><value>Burro</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>Estos animales se pueden domar y montar. Es posible colocarles un cofre.</value>
+ </data>
+<data name="IDS_MULE"><value>Mula</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>Nace del cruce de un caballo y un burro. Estos animales se pueden domar y, después, montar y usar para transportar cofres.</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>Caballo zombi</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>Caballo esqueleto</value>
+ </data>
+<data name="IDS_WITHER"><value>Wither</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>Se crea a partir de calaveras atrofiadas y arena de almas. Dispara calaveras explosivas.</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1203,7 +1342,7 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_ITEM_HELMET_CHAIN"><value>Casco de malla</value>
</data>
-<data name="IDS_ITEM_CHESTPLATE_CHAIN"><value>Peto de malla</value>
+<data name="IDS_ITEM_CHESTPLATE_CHAIN"><value>Coraza de malla</value>
</data>
<data name="IDS_ITEM_LEGGINGS_CHAIN"><value>Mallas de malla</value>
</data>
@@ -1319,7 +1458,7 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_ITEM_BOOK"><value>Libro</value>
</data>
-<data name="IDS_ITEM_SLIMEBALL"><value>Repugnante</value>
+<data name="IDS_ITEM_SLIMEBALL"><value>Bola de limo</value>
</data>
<data name="IDS_ITEM_MINECART_CHEST"><value>Vagoneta con cofre</value>
</data>
@@ -1387,6 +1526,8 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_ITEM_MAP"><value>Mapa</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>Mapa vacío</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>Disco: "13"</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>Disco: "gato"</value>
@@ -1433,7 +1574,7 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_ITEM_BLAZE_ROD"><value>Barra de llama</value>
</data>
-<data name="IDS_ITEM_GHAST_TEAR"><value>Lágrima de espectro</value>
+<data name="IDS_ITEM_GHAST_TEAR"><value>Lágrima de Ghast</value>
</data>
<data name="IDS_ITEM_GOLD_NUGGET"><value>Pepita de oro</value>
</data>
@@ -1489,6 +1630,28 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Cabeza de Creeper</value>
</data>
+<data name="IDS_NETHER_STAR"><value>Estrella del mundo inferior</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>Cohete de fuegos artificiales</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>Estrella de fuegos artificiales</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>Comparador de piedra rojiza</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>Vagoneta con dinamita</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>Vagoneta con embudo</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>Armadura para caballo de hierro</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>Armadura para caballo de oro</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>Armadura para caballo de diamante</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>Rienda</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>Etiqueta de nombre</value>
+ </data>
<data name="IDS_TILE_STONE"><value>Piedra</value>
</data>
<data name="IDS_TILE_GRASS"><value>Bloque de hierba</value>
@@ -1505,6 +1668,8 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>Tablones de la jungla</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>Tablones (de cualquier tipo)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>Arbolillo</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>Arbolillo de roble</value>
@@ -1765,7 +1930,7 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_TILE_STONE_BRICK_SMOOTH_MOSSY"><value>Ladrillos de piedra musgosa</value>
</data>
-<data name="IDS_TILE_STONE_BRICK_SMOOTH_CRACKED"><value>Ladrillos de piedra requebrajada</value>
+<data name="IDS_TILE_STONE_BRICK_SMOOTH_CRACKED"><value>Ladrillos de piedra resquebrajada</value>
</data>
<data name="IDS_TILE_STONE_BRICK_SMOOTH_CHISELED"><value>Ladrillos de piedra cincelados</value>
</data>
@@ -1841,6 +2006,190 @@ de tinta en vez de 3).</value>
</data>
<data name="IDS_TILE_SKULL"><value>Calavera</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>Bloque de comando</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>Faro</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>Cofre trampa</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>Plato de presión por peso (ligero)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>Plato de presión por peso (pesado)</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>Comparador de piedra rojiza</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>Sensor de luz diurna</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>Bloque de piedra rojiza</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>Embudo</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>Raíl activador</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>Soltador</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>Arcilla tintada</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>Fardo de heno</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>Arcilla endurecida</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>Bloque de hulla</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>Arcilla tintada negra</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>Arcilla tintada roja</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>Arcilla tintada verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>Arcilla tintada marrón</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>Arcilla tintada azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>Arcilla tintada púrpura</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>Arcilla tintada cian</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>Arcilla tintada gris claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>Arcilla tintada gris</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>Arcilla tintada rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>Arcilla tintada lima</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>Arcilla tintada amarilla</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>Arcilla tintada azul claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>Arcilla tintada magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>Arcilla tintada naranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>Arcilla tintada blanca</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>Vidrio tintado</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>Vidrio tintado negro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>Vidrio tintado rojo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>Vidrio tintado verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>Vidrio tintado marrón</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>Vidrio tintado azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>Vidrio tintado púrpura</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>Vidrio tintado cian</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>Vidrio tintado gris claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>Vidrio tintado gris</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>Vidrio tintado rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>Vidrio tintado lima</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>Vidrio tintado amarillo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>Vidrio tintado azul claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>Vidrio tintado magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>Vidrio tintado naranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>Vidrio tintado blanco</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>Panel de vidrio tintado</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>Panel de vidrio tintado negro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>Panel de vidrio tintado rojo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>Panel de vidrio tintado verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>Panel de vidrio tintado marrón</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>Panel de vidrio tintado azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>Panel de vidrio tintado púrpura</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>Panel de vidrio tintado cian</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>Panel de vidrio tintado gris claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>Panel de vidrio tintado gris</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>Panel de vidrio tintado rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>Panel de vidrio tintado lima</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>Panel de vidrio tintado amarillo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>Panel de vidrio tintado azul claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>Panel de vidrio tintado magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>Panel de vidrio tintado naranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>Panel de vidrio tintado blanco</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>Bola pequeña</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>Bola grande</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>Forma de estrella</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Forma de Creeper</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>Explosión</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>Forma desconocida</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>Negros</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>Rojos</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>Verdes</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>Marrones</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>Azules</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>Púrpuras</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>Cian</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>Gris claro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>Grises</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>Rosas</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>Lima</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>Amarillos</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>Azul claro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>Magenta</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>Naranjas</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>Blancos</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>Personalizados</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>Desaparición en</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>Destello</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>Rastro</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>Duración del vuelo:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>Controles actuales</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>Diseño</value>
@@ -2018,8 +2367,7 @@ Pulsa{*CONTROLLER_VK_A*} para continuar el tutorial.{*B*}
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
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.
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
Pulsa{*CONTROLLER_VK_A*} para continuar.{*B*}
Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo usar el inventario.
@@ -2040,7 +2388,7 @@ Pulsa{*CONTROLLER_VK_A*} para continuar el tutorial.{*B*}
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- Si quieres obtener más información sobre un objeto, mueve el foco sobre él y pulsa{*CONTROLLER_VK_RT*} .
+ Si quieres obtener más información sobre un objeto, mueve el foco sobre él y pulsa{*CONTROLLER_ACTION_MENU_PAGEDOWN*} .
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2074,7 +2422,7 @@ Pulsa{*CONTROLLER_VK_A*} para continuar el tutorial.{*B*}
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- Si quieres obtener más información sobre un objeto, mueve el foco sobre él y pulsa{*CONTROLLER_VK_RT*} .
+ Si quieres obtener más información sobre un objeto, mueve el foco sobre él y pulsa{*CONTROLLER_ACTION_MENU_PAGEDOWN*} .
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2540,7 +2888,7 @@ En el modo de vuelo, mantén pulsado{*CONTROLLER_ACTION_JUMP*} para moverte haci
<data name="IDS_TUTORIAL_TASK_BREEDING_FOLLOW"><value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREEDING_WOLF_TAMING"><value>
- 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.
+ Los lobos salvajes se pueden domar dándoles huesos. Una vez domados, 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.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREEDING_COMPLETE"><value>Has completado el tutorial de reproducción de animales.</value>
@@ -2620,6 +2968,211 @@ En el modo de vuelo, mantén pulsado{*CONTROLLER_ACTION_JUMP*} para moverte haci
Pulsa{*CONTROLLER_VK_B*} si ya tienes información sobre la barra de comida y cómo comer.
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ Esta es la interfaz del inventario equino.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}Pulsa{*CONTROLLER_VK_A*} para continuar.
+ {*B*}Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo usar el inventario equino.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ El inventario equino te permite transferir o equipar con objetos tu caballo, burro o mula.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ Ensilla tu caballo colocando una silla de montar en el espacio correspondiente. Puedes poner armaduras a los caballos; solo tienes que colocar la armadura para caballo en el espacio correspondiente.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ También puedes transferir objetos entre tu propio inventario y las alforjas que llevan los burros y mulas desde este menú.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>Has encontrado un caballo.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>Has encontrado un burro.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>Has encontrado una mula.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre los caballos, los burros y las mulas.
+ {*B*}Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo funcionan los caballos, los burros y las mulas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ Los caballos y los burros se suelen encontrar en las llanuras abiertas. Las mulas se pueden criar a partir de un burro y un caballo, pero no son fértiles.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ Todos los caballos, burros y mulas adultos se pueden montar. Sin embargo, solo los caballos pueden llevar armadura, y solo las mulas y los burros pueden equiparse con alforjas para llevar objetos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ Los caballos, burros y mulas deben domarse antes de poder usarse. Un caballo se doma intentando montarlo y logrando mantenerse sobre él mientras trata de tirarte.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ Cuando estén domados, aparecerán corazones de amor a su alrededor y ya no intentarán tirarte.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ Ahora intenta montar este caballo. Usa {*CONTROLLER_ACTION_USE*} sin objetos ni herramientas en las manos para montarlo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ Para dirigir un caballo, debe estar equipado antes con una silla de montar que se puede comprar a los aldeanos o encontrar en cofres ocultos por el mundo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ Puedes poner alforjas a los burros y mulas domados; solo tienes que colocarles un cofre. Puedes acceder a estas alforjas mientras montas o acechas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ Los caballos y los burros (pero no las mulas) pueden cruzarse como los demás animales utilizando manzanas doradas o zanahorias doradas. Los potros se convertirán en caballos adultos con el tiempo, aunque alimentarlos con trigo o heno acelerará el proceso.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ Aquí puedes intentar domar los caballos y burros, y hay sillas de montar, armaduras de caballo y otros objetos útiles para caballos en los cofres de la zona.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ Esta es la interfaz de faro, que puedes utilizar para elegir los poderes que otorgará tu faro.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}Pulsa{*CONTROLLER_VK_A*} para continuar.
+ {*B*}Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo usar la interfaz de faro.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ En el menú de faro puedes elegir un poder principal para este. Podrás elegir entre más poderes cuantas más plantas tenga la pirámide.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ Un faro sobre una pirámide de al menos cuatro plantas también ofrece la posibilidad de o bien tener el poder secundario Regeneración, o bien tener un poder principal más fuerte.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ Para establecer los poderes del faro, debes sacrificar un lingote de esmeralda, diamante, oro o hierro en el espacio de pago. Una vez establecidos, los poderes emanarán del faro indefinidamente.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>En lo alto de esta pirámide hay un faro inactivo.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre los faros.
+ {*B*}Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo funcionan los faros.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ Los faros activos proyectan un rayo de luz brillante hacia el cielo y otorgan poderes a los jugadores cercanos. Se crean con cristal, obsidiana y estrellas del mundo inferior, que se pueden obtener derrotando al Wither.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ Los faros deben situarse de modo que queden al sol durante el día. Los faros deben colocarse en pirámides de hierro, oro, esmeralda o diamante. Sin embargo, el material sobre el que se sitúe el faro no tiene ningún efecto sobre el poder del mismo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ Intenta utilizar el faro para establecer los poderes que otorga; puedes pagar con los lingotes de hierro que se te han proporcionado.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>Esta sala contiene embudos</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre los embudos.
+ {*B*}Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo funcionan los embudos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ Los embudos se utilizan para insertar o quitar objetos de contenedores y para recoger de forma automática los objetos que se hayan lanzado en su interior.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ Pueden afectar a puestos de destilado, cofres, dispensadores, soltadores, vagonetas con cofres, vagonetas con embudos y otros embudos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ Los embudos intentarán absorber sin cesar objetos de un contenedor apto que se coloque sobre ellos. También tratarán de insertar objetos almacenados en un contenedor de salida.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ Sin embargo, si un embudo funciona con piedra rojiza, se volverá inactivo y dejará tanto de absorber como de insertar objetos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ Un embudo apunta en la dirección en la que intenta soltar objetos. Para que un embudo apunte a cierto bloque, colócalo contra dicho bloque mientras acechas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ Hay varias configuraciones útiles de embudo que ver y probar en esta sala.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ Esta es la interfaz de fuegos artificiales, que puedes utilizar para fabricar fuegos artificiales y estrellas de fuegos artificiales.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}Pulsa{*CONTROLLER_VK_A*} para continuar.
+ {*B*}Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo usar la interfaz de fuegos artificiales.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ Para crear un fuego artificial, coloca pólvora y papel en el recuadro de creación de 3x3 que se ve en tu inventario.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ También puedes colocar varias estrellas de fuegos artificiales en el recuadro de creación para agregarlas a los fuegos artificiales.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ Cuanta más pólvora utilices durante la creación, más ascenderá la estrella de fuegos artificiales antes de explotar.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ Luego recoge el fuego artificial que has creado del espacio de producción si quieres usarlo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ Las estrellas de fuegos artificiales se pueden crear con pólvora y tinte.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ El tinte determinará el color de la estrella al explotar.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ La forma de la estrella se puede determinar añadiéndole descargas de fuego, pepitas de oro, plumas o cabeza de enemigos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ Se puede añadir una estela o un brillo usando diamantes o polvo de piedra brillante.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ Cuando hayas creado un fuego artificial, puedes determinar el color de desvanecimiento de la estrella con tinte.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ ¡Dentro del cofre hay varios objetos que puedes usar para crear FUEGOS ARTIFICIALES!
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre los fuegos artificiales.
+ {*B*}Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo funcionan los fuegos artificiales.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ Los fuegos artificiales son objetos decorativos que se pueden lanzar manualmente o con dispensadores. Se pueden crear usando papel, pólvora y, opcionalmente, una cantidad específica de estrellas de fuegos artificiales.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ Se pueden personalizar el color, el desvanecimiento, la forma, el tamaño y los efectos (como estelas y brillos) de las estrellas de fuegos artificiales si se les incluye ingredientes adicionales durante la creación.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ Prueba a crear fuegos artificiales en la mesa de creación usando los ingredientes que desees de los cofres.
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>Seleccionar</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>Usar</value>
@@ -2708,7 +3261,7 @@ En el modo de vuelo, mantén pulsado{*CONTROLLER_ACTION_JUMP*} para moverte haci
</data>
<data name="IDS_TOOLTIPS_FEED"><value>Alimentar</value>
</data>
-<data name="IDS_TOOLTIPS_TAME"><value>Domesticar</value>
+<data name="IDS_TOOLTIPS_TAME"><value>Domar</value>
</data>
<data name="IDS_TOOLTIPS_HEAL"><value>Curar</value>
</data>
@@ -2816,7 +3369,7 @@ En el modo de vuelo, mantén pulsado{*CONTROLLER_ACTION_JUMP*} para moverte haci
</data>
<data name="IDS_TOOLTIPS_EQUIP"><value>Equipar</value>
</data>
-<data name="IDS_TOOLTIPS_DRAW_BOW"><value>Retirar</value>
+<data name="IDS_TOOLTIPS_DRAW_BOW"><value>Tensar</value>
</data>
<data name="IDS_TOOLTIPS_RELEASE_BOW"><value>Soltar</value>
</data>
@@ -2840,8 +3393,24 @@ En el modo de vuelo, mantén pulsado{*CONTROLLER_ACTION_JUMP*} para moverte haci
</data>
<data name="IDS_TOOLTIPS_CLEARSLOTS"><value>Eliminar todos los espacios</value>
</data>
-<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Subir partida guardada para Xbox One</value>
+<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Cargar partida guardada para Xbox One</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>Montar</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>Desmontar</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>Colocar cofre</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>Lanzar</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>Atar</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>Soltar</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>Colocar</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>Nombre</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>Aceptar</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>Cancelar</value>
@@ -3152,6 +3721,20 @@ Ve a la Interfaz para seleccionar este tema.</value>
</data>
<data name="IDS_DISPENSER"><value>Dispensador</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>Caballo</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>Soltador</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>Embudo</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>Faro</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>Poder principal</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>Poder secundario</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>Vagoneta</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>No existen ofertas de descarga de contenido de este tipo disponibles para este título en este momento.</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s se ha unido al juego.</value>
@@ -3311,10 +3894,14 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>Modo juego: Creativo</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>Modo juego: Aventura</value>
+ </data>
<data name="IDS_SURVIVAL"><value>Supervivencia</value>
</data>
<data name="IDS_CREATIVE"><value>Creativo</value>
</data>
+<data name="IDS_ADVENTURE"><value>Aventura</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>En modo Supervivencia</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>En modo Creativo</value>
@@ -3335,6 +3922,8 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>Superplano</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>Introduce una semilla para volver a generar el mismo terreno. Déjalo vacío para un mundo aleatorio.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>Si está habilitado, el juego será un juego en línea.</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>Si está habilitado, solo los jugadores invitados pueden unirse.</value>
@@ -3359,6 +3948,20 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>Si está habilitado, se creará un cofre con objetos útiles cerca del punto de generación del jugador.</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>Cuando se desactiva, impide que monstruos y animales cambien bloques (por ejemplo, las explosiones de Creepers no destruirán bloques y las ovejas no quitarán el césped) o recojan objetos.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>Al activarse, los jugadores mantendrán el inventario al morir.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>Al desactivarse, los enemigos no se generarán de forma natural.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>Al desactivarse, los monstruos y animales no soltarán botín (por ejemplo, los Creepers no soltarán pólvora).</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>Al desactivarse, los bloques no soltarán objetos cuando se destruyan (por ejemplo, los bloques de piedra no soltarán guijarros).</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>Al desactivarse, los jugadores no regenerarán salud de forma natural.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>Al desactivarse, la hora del día no cambiará.</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>Packs de aspecto</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>Temas</value>
@@ -3407,7 +4010,49 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_DEATH_THROWN"><value>{*SOURCE*} apaleó a {*PLAYER*}</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} ha muerto a manos de {*SOURCE*}</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*SOURCE*} mató a {*PLAYER*} con magia.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} se cayó de una escalera.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} se cayó de unas hiedras.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} se cayó del agua.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} se cayó de un lugar alto.</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*SOURCE*} condenó a caer a {*PLAYER*}.</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*SOURCE*} condenó a caer a {*PLAYER*}.</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*SOURCE*} condenó a caer a {*PLAYER*} con {*ITEM*}.</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value> {*PLAYER*} cayó demasiado lejos y murió a manos de {*SOURCE*}.</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value> {*PLAYER*} cayó demasiado lejos y murió a manos de {*SOURCE*}, que utilizó {*ITEM*}.</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} tropezó con fuego mientras luchaba contra {*SOURCE*}.</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} acabó cual tostada chamuscada mientras luchaba contra {*SOURCE*}.</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} intentó nadar en la lava para escapar de {*SOURCE*}.</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} se ahogó mientras intentaba escapar de {*SOURCE*}.</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} tropezó con un cactus mientras intentaba escapar de {*SOURCE*}.</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*SOURCE*} hizo volar por los aires a {*PLAYER*}.</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} sufrió los efectos del Wither.</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*SOURCE*} asesinó a {*PLAYER*} con {*ITEM*}.</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*SOURCE*} disparó a {*PLAYER*} con {*ITEM*}.</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*SOURCE*} quemó con bolas de fuego a {*PLAYER*} con {*ITEM*}.</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*SOURCE*} apaleó a {*PLAYER*} con {*ITEM*}.</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} ha muerto a manos de {*SOURCE*}, que utilizó {*ITEM*}.</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>Niebla de lecho de roca</value>
</data>
@@ -3574,7 +4219,7 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>No se puede trasquilar esta champiñaca en este momento. Límite de cerdos, ovejas, vacas y gatos alcanzado.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>El huevo generador no está disponible en estos momentos. Se ha alcanzado la cantidad máxima de cerdos, ovejas, vacas y gatos.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>No se pueden usar huevos generadores en este momento. Límite de cerdos, ovejas, vacas y gatos alcanzado.</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED"><value>No se pueden usar huevos generadores ahora. Límite de champiñacas en un mundo alcanzado.</value>
</data>
@@ -3584,6 +4229,8 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de calamares en un mundo.</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de murciélagos en un mundo.</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de enemigos en un mundo.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de aldeanos en un mundo.</value>
@@ -3592,12 +4239,14 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>No puedes generar enemigos en el modo pacífico.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Este animal no puede entrar en el modo Amor. Se ha alcanzado la cantidad máxima de cerdos, ovejas, vacas y gatos reproductores.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Este animal no puede estar en modo Amor. Límite de cría de cerdos, ovejas, vacas, gatos y caballos alcanzado.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>Este animal no puede estar en modo Amor. Se ha alcanzado el límite de cría de lobos.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>Este animal no puede estar en modo Amor. Se ha alcanzado el límite de cría de gallinas.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>Este animal no puede estar en modo Amor. Se ha alcanzado el límite de cría de caballos.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>Este animal no puede estar en modo Amor. Se ha alcanzado el límite de cría de champiñacas.</value>
</data>
<data name="IDS_MAX_BOATS"><value>Se ha alcanzado la cantidad máxima de barcos en un mundo.</value>
@@ -3610,7 +4259,7 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_YOU_DIED"><value>¡Has muerto!</value>
</data>
-<data name="IDS_RESPAWN"><value>Regenerarse</value>
+<data name="IDS_RESPAWN"><value>Regenerar</value>
</data>
<data name="IDS_DOWNLOADABLE_CONTENT_OFFERS"><value>Descarga de contenido</value>
</data>
@@ -3625,40 +4274,56 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
<data name="IDS_CREDITS"><value>Créditos</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>Volver a instalar contenido</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>Configuración de depuración</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>El fuego se propaga</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>La dinamita explota</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>Jugador contra jugador</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>Confiar en jugadores</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>Privilegios de host</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>Genera estructuras</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>Mundo superplano</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>Cofre de bonificación</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>Opciones del mundo</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>Opciones de juego</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>Vandalismo de enemigos</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>Mantener inventario</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>Generación de enemigos</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>Botín de enemigos</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>Soltar casillas</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>Regeneración natural</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>Ciclo de luz diurna</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>Puede construir y extraer</value>
</data>
-<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>Puedes usar puertas e interruptores.</value>
+<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>Puede usar puertas e interruptores</value>
</data>
-<data name="IDS_CAN_OPEN_CONTAINERS"><value>Puedes abrir contenedores.</value>
+<data name="IDS_CAN_OPEN_CONTAINERS"><value>Puede abrir contenedores</value>
</data>
-<data name="IDS_CAN_ATTACK_PLAYERS"><value>Puede atacar a los jugadores</value>
+<data name="IDS_CAN_ATTACK_PLAYERS"><value>Puede atacar a jugadores</value>
</data>
-<data name="IDS_CAN_ATTACK_ANIMALS"><value>Puedes atacar a animales.</value>
+<data name="IDS_CAN_ATTACK_ANIMALS"><value>Puede atacar a animales</value>
</data>
<data name="IDS_MODERATOR"><value>Moderador</value>
</data>
-<data name="IDS_KICK_PLAYER"><value>Expulsar</value>
+<data name="IDS_KICK_PLAYER"><value>Expulsar jugador</value>
</data>
<data name="IDS_CAN_FLY"><value>Puede volar</value>
</data>
@@ -3832,6 +4497,14 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_POTION_POISON"><value>Veneno</value>
</data>
+<data name="IDS_POTION_WITHER"><value>Wither</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>Mejora de salud</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>Absorción</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>Saturación</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>de rapidez</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>de lentitud</value>
@@ -3870,6 +4543,14 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>de veneno</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>de decadencia</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>de mejora de salud</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>de absorción</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>de saturación</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3966,6 +4647,22 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_POTION_DESC_POISON"><value>Disminuye la salud de los jugadores, animales y monstruos afectados con el tiempo.</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>Cuando se aplica:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>Fuerza de salto de caballo</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>Refuerzos zombis</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>Salud máxima</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>Alcance de seguimiento de enemigos</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>Resistencia a derribo</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>Velocidad</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>Daño de ataque</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>Afilado</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>Aporrear</value>
@@ -4056,7 +4753,7 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>Restablece 3{*ICON_SHANK_01*}. Se crea cocinando una patata en el horno.</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>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.</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>Restablece 1{*ICON_SHANK_01*}. Si comes esto puede que te envenene.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>Restablece 3{*ICON_SHANK_01*}. Se produce a partir de una zanahoria y pepitas de oro. Restablece 3.</value>
</data>
@@ -4066,7 +4763,7 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_DESC_ENCHANTED_BOOK"><value>Se usa junto con un yunque para hechizar armas, herramientas o armaduras.</value>
</data>
-<data name="IDS_DESC_NETHER_QUARTZ"><value>Se crea fundiendo menas de cuarzo del mundo inferior. Se le puede dar forma de bloque de cuarzo.</value>
+<data name="IDS_DESC_NETHER_QUARTZ"><value>Se crea fundiendo minerales de cuarzo del mundo inferior. Se le puede dar forma de bloque de cuarzo.</value>
</data>
<data name="IDS_DESC_CARPET"><value>Se fabrica con lana. Se usa como decoración.</value>
</data>
@@ -4092,7 +4789,7 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_ITEM_NETHER_QUARTZ"><value>Cuarzo del mundo inferior</value>
</data>
-<data name="IDS_TILE_EMERALDORE"><value>Mena de esmeralda</value>
+<data name="IDS_TILE_EMERALDORE"><value>Mineral de esmeralda</value>
</data>
<data name="IDS_TILE_ENDERCHEST"><value>Cofre de Ender</value>
</data>
@@ -4120,7 +4817,7 @@ No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.</value>
</data>
<data name="IDS_TILE_ANVIL_VERYDAMAGED"><value>Yunque muy dañado</value>
</data>
-<data name="IDS_TILE_NETHER_QUARTZ"><value>Mena de cuarzo del mundo inferior</value>
+<data name="IDS_TILE_NETHER_QUARTZ"><value>Mineral de cuarzo del mundo inferior</value>
</data>
<data name="IDS_TILE_QUARTZ_BLOCK"><value>Bloque de cuarzo</value>
</data>
@@ -4435,7 +5132,7 @@ Todos los cofres de Ender de un mundo están vinculados, y los objetos que conti
</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREEDING_WOLF_COLLAR"><value>
- Una vez domesticados, los lobos siempre llevarán un collar. Tíñelo para cambiarlo de color.
+ Una vez domados, los lobos siempre llevarán un collar. Tíñelo para cambiarlo de color.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_FARMING_CARROTS_AND_POTATOES"><value>Planta zanahorias o patatas y coséchalas cuando empiecen a brotar del suelo.</value>
@@ -4458,7 +5155,7 @@ Todos los cofres de Ender de un mundo están vinculados, y los objetos que conti
</data>
<data name="IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS"><value>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.</value>
</data>
-<data name="IDS_SAVE_TRANSFER_TITLE"><value>Subir partida guardada para Xbox One</value>
+<data name="IDS_SAVE_TRANSFER_TITLE"><value>Cargar partida guardada para Xbox One</value>
</data>
<data name="IDS_UPLOAD_SAVE"><value>Subir datos guardados</value>
</data>
diff --git a/Minecraft.Client/Common/Media/font/CHS/MSYH.ttf b/Minecraft.Client/Common/Media/font/CHS/MSYH.ttf
new file mode 100644
index 00000000..96d1db19
--- /dev/null
+++ b/Minecraft.Client/Common/Media/font/CHS/MSYH.ttf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/fr-FR/strings.resx b/Minecraft.Client/Common/Media/fr-FR/strings.resx
index 788799ff..541bbb7d 100644
--- a/Minecraft.Client/Common/Media/fr-FR/strings.resx
+++ b/Minecraft.Client/Common/Media/fr-FR/strings.resx
@@ -230,11 +230,11 @@ Vous devrez essayer diverses combinaisons d'ingrédients pour découvrir toutes
</data>
<data name="IDS_HOW_TO_PLAY_ENCHANTMENT"><value>{*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*}
+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*}
+Tous les ingrédients nécessaires à une table d'enchantement peuvent se trouver dans les villages, ou bien en minant et cultivant.{*B*}{*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*}
</value>
</data>
@@ -274,14 +274,14 @@ Pour ce faire, affichez le menu Pause puis appuyez sur{*CONTROLLER_VK_RB*} pour
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.</value>
</data>
<data name="IDS_HOW_TO_PLAY_CREATIVE"><value>{*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*}
+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.
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*}
+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.
+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,
{*CONTROLLER_ACTION_DPAD_LEFT*} pour virer à gauche et {*CONTROLLER_ACTION_DPAD_RIGHT*} pour virer à droite.</value>
</data>
-<data name="IDS_HOW_TO_PLAY_HOSTOPTIONS"><value>{*T3*}COMMENT JOUER : OPTIONS DU JOUEUR ET DE L'HÔTE{*ETW*}{*B*}{*B*}
+<data name="IDS_HOW_TO_PLAY_HOSTOPTIONS"><value>{*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*}
@@ -299,7 +299,28 @@ Lorsque vous chargez ou créez un monde, appuyez sur le bouton Plus d'options po
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*}
+ 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*}
+
+ {*T2*}Cycle jour/nuit{*ETW*}{*B*}
+ Si vous désactivez cette option, le moment de la journée ne change pas.{*B*}{*B*}
+
+ {*T2*}Conservation d'inventaire{*ETW*}{*B*}
+ Si vous activez cette option, les joueurs conservent leur inventaire après leur mort.{*B*}{*B*}
+
+ {*T2*}Apparition des monstres{*ETW*}{*B*}
+ Si vous désactivez cette option, les monstres n'apparaissent pas automatiquement.{*B*}{*B*}
+
+ {*T2*}Ingérence des monstres{*ETW*}{*B*}
+ Si vous désactivez cette option, les monstres et animaux ne peuvent ni modifier des blocs (par exemple, les explosions des Creepers ne détruisent pas les blocs et les moutons ne retirent pas d'herbe), ni ramasser des objets.{*B*}{*B*}
+
+ {*T2*}Butin des monstres{*ETW*}{*B*}
+ Si vous désactivez cette option, les monstres et animaux ne laissent pas d'objets (par exemple, les Creepers ne laissent pas de poudre à canon).{*B*}{*B*}
+
+ {*T2*}Butin des blocs{*ETW*}{*B*}
+ Si vous désactivez cette option, les blocs ne laissent pas d'objets après être détruits (par exemple, les blocs de pierre ne laissent pas de pierre taillée).{*B*}{*B*}
+
+ {*T2*}Régénération auto{*ETW*}{*B*}
+ Si vous désactivez cette option, les joueurs ne regagnent pas leur santé automatiquement.{*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*}
@@ -314,10 +335,10 @@ Lorsque vous créez un monde, vous disposez d'options supplémentaires.{*B*}{*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*}
+ Activé, le Nether se régénérera. Utile si vous avez une ancienne sauvegarde 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*}
+ Appuyez sur {*BACK_BUTTON*} 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*}
@@ -337,38 +358,40 @@ Pour modifier les privilèges d'un joueur, sélectionnez son nom et appuyez sur{
{*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*}
+ {*T2*}Peut attaquer les 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*}
+ {*KICK_PLAYER_DESCRIPTION*}{*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*}
+
+ {*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.
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>Pour les joueurs qui ne sont pas sur la même console {*PLATFORM_NAME*} que le joueur hôte, la sélection de cette option éjectera le joueur de la partie, ainsi que tous les autres joueurs connectés sur sa console {*PLATFORM_NAME*}. Ce joueur ne pourra rejoindre la partie qu'après son redémarrage.</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>Page suivante</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>Page précédente</value>
</data>
<data name="IDS_HOW_TO_PLAY_MENU_BASICS"><value>Principes</value>
</data>
-<data name="IDS_HOW_TO_PLAY_MENU_HUD"><value>Interface principale</value>
+<data name="IDS_HOW_TO_PLAY_MENU_HUD"><value>Interface</value>
</data>
<data name="IDS_HOW_TO_PLAY_MENU_INVENTORY"><value>Inventaire</value>
</data>
@@ -411,7 +434,7 @@ L'Ender est une autre dimension du jeu, atteinte par un portail de l'Ender actif
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.
+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*}
@@ -425,63 +448,95 @@ et ils pourront facilement vous rejoindre.
</data>
<data name="IDS_HOW_TO_PLAY_MENU_WHATSNEW"><value>Nouveautés</value>
</data>
-<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
-{*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*}
+<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>{*T3*}Modifications et ajouts{*ETW*}{*B*}{*B*}
+- Ajout de nouveaux objets : argile durcie, argile colorée, bloc de charbon, botte de foin, rail activateur, bloc de redstone, capteur de lumière, dropper, entonnoir, chariot de mine avec entonnoir, chariot de mine avec TNT, comparateur de redstone, plaque de détection lestée, balise, coffre piégé, fusée d'artifice, étoile à feux d'artifice, étoile du Nether, laisse, caparaçon, étiquette, œuf d'apparition de cheval{*B*}
+- Ajout de nouveaux monstres et animaux : Wither, Withers squelettes, sorcières, chauves-souris, chevaux, ânes et mules{*B*}
+- Ajout de nouvelles fonctions de génération de terrain : cabanes de sorcières.{*B*}
+- Ajout d'une interface pour les balises.{*B*}
+- Ajout d'une interface pour les chevaux.{*B*}
+- Ajout d'une interface pour les entonnoirs.{*B*}
+- Ajout de feux d'artifice : l'interface des feux d'artifice est accessible depuis l'atelier, quand vous disposez des ingrédients nécessaires à la fabrication d'une étoile à feux d'artifice ou d'une fusée d'artifice.{*B*}
+- Ajout d'un "mode Aventure" : il vous faut les bons outils pour briser les blocs.{*B*}
+- Ajout de nouveaux sons en pagaille.{*B*}
+- Les monstres, animaux, objets et projectiles peuvent désormais traverser les portails.{*B*}
+- Il est maintenant possible de verrouiller les répéteurs en alimentant leurs flancs avec un autre répéteur.{*B*}
+- Les zombies et squelettes peuvent maintenant apparaître avec différentes armes et armures.{*B*}
+- Nouveaux messages de mort.{*B*}
+- Nommez les monstres et animaux à l'aide d'une étiquette et renommez les conteneurs pour modifier leur titre quand le menu est ouvert.{*B*}
+- La poudre d'os ne fait plus tout grandir immédiatement à sa taille maximale, mais par étapes aléatoires.{*B*}
+- Vous pouvez détecter un signal de redstone décrivant le contenu des coffres, alambics, distributeurs et juke-box en plaçant un comparateur directement devant l'objet en question.{*B*}
+- Les distributeurs peuvent être orientés dans toutes les directions.{*B*}
+- Si vous mangez une pomme dorée, vous bénéficiez temporairement d'un bonus d'absorption de santé.{*B*}
+- Plus vous restez dans une zone, plus les montres qui y apparaissent sont dangereux.{*B*}
</value>
</data>
<data name="IDS_TITLEUPDATE"><value>{*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*}
+Vous et vos amis pouvez découvrir de nombreuses nouvelles fonctionnalités. Jetez un œil à l'aperçu qui suit et amusez-vous bien !{*B*}{*B*}
+{*T1*}Nouveaux objets{*ETB*} : argile durcie, argile colorée, bloc de charbon, botte de foin, rail activateur, bloc de redstone, capteur de lumière, dropper, entonnoir, chariot de mine avec entonnoir, chariot de mine avec TNT, comparateur de redstone, plaque de détection lestée, balise, coffre piégé, fusée d'artifice, étoile à feux d'artifice, étoile du Nether, laisse, caparaçon, étiquette, œuf d'apparition de cheval{*B*}{*B*}
+{*T1*}Nouveaux monstres et animaux{*ETB*} : Wither, Withers squelettes, sorcières, chauves-souris, chevaux, ânes et mules{*B*}{*B*}
+{*T1*}Nouvelles fonctions{*ETB*} : domptez et montez un cheval, fabriquez des feux d'artifice et assurez le spectacle, nommez les animaux et monstres à l'aide d'une étiquette, créez des circuits de redstone plus complexes et accédez en tant qu'hôte à de nouvelles options pour mieux contrôler les actions de vos visiteurs !{*B*}{*B*}
+{*T1*}Nouveau monde didacticiel{*ETB*} : découvrez comment utiliser les fonctions existantes et nouvelles dans le monde didacticiel. Arriverez-vous à trouver tous les disques vinyles qui s'y cachent ?{*B*}{*B*}
</value>
</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>Chevaux</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}COMMENT JOUER : CHEVAUX{*ETW*}{*B*}{*B*}
+C'est surtout dans les plaines que l'on trouve des chevaux et des ânes. En croisant ces deux espèces, on obtient une mule, mais celle-ci ne peut pas avoir de descendance.{*B*}
+Vous pouvez monter tous les chevaux, ânes et mules adultes. En revanche, seuls les chevaux peuvent porter une armure (appelée caparaçon), alors que les ânes et les mules peuvent être équipés de sacoches pour transporter des objets.{*B*}{*B*}
+Avant de pouvoir utiliser un cheval, un âne ou une mule, il faut le dompter. Un cheval se dompte en essayant de monter dessus et de vous y maintenir pendant qu'il tente de vous désarçonner.{*B*}
+Quand des cœurs apparaissent autour du cheval, c'est que vous l'avez dompté : il n'essaiera plus de vous désarçonner. Pour diriger un cheval, vous devez l'équiper d'une selle.{*B*}{*B*}
+Vous pouvez trouver des selles auprès des villageois ou dans les coffres cachés dans l'environnement.{*B*}
+Un âne ou une mule dompté peut être équipé d'une sacoche en lui associant un coffre. Vous pourrez ensuite accéder à cette sacoche en vous faufilant devant l'animal ou en le chevauchant.{*B*}{*B*}
+Les chevaux et les ânes (mais pas les mules) s'élèvent comme les autres animaux, à l'aide de pommes dorées ou de carottes dorées.{*B*}
+Les poulains deviennent adultes au fil du temps, mais vous pouvez accélérer le processus en leur donnant du blé ou du foin à manger.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>Balises</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}COMMENT JOUER : BALISES{*ETW*}{*B*}{*B*}
+Les balises actives projettent un intense rayon de lumière dans le ciel et octroient des pouvoirs aux joueurs avoisinants.{*B*}
+Vous pouvez les fabriquer à l'aide de verre, d'obsidienne et d'étoiles du Nether, qui s'obtiennent en terrassant le Wither.{*B*}{*B*}
+Une balise doit être placée au sommet d'une pyramide de fer, d'or, d'émeraude ou de diamant, et doit pouvoir recevoir la lumière du soleil le jour.{*B*}
+Le matériau sur lequel la balise est placée n'a aucun effet sur son pouvoir.{*B*}{*B*}
+Ouvrez le menu de la balise pour sélectionner son pouvoir principal. Plus votre pyramide a d'étages, plus il y a de pouvoirs disponibles.{*B*}
+Une balise sur une pyramide d'au moins quatre étages dispose en outre d'un pouvoir secondaire (Régénération), ou d'un pouvoir principal plus puissant.{*B*}{*B*}
+Pour définir les pouvoirs de votre balise, vous devez sacrifier un lingot d'émeraude, de diamant, d'or ou de fer dans l'emplacement de paiement.{*B*}
+Cela fait, la balise restera active indéfiniment.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>Feux d'artifice</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}COMMENT JOUER : FEUX D'ARTIFICE{*ETW*}{*B*}{*B*}
+Les feux d'artifice sont des objets décoratifs pouvant être lancés à la main ou depuis un distributeur. Ils se fabriquent à l'aide de papier, de poudre à canon et (facultatif) de plusieurs étoiles à feux d'artifice.{*B*}
+En ajoutant des ingrédients supplémentaires lors de la fabrication, vous pouvez personnaliser les étoiles à feux d'artifice : couleurs, disparition, forme, taille et effets (traînée, scintillement, etc.).{*B*}{*B*}
+Pour fabriquer un feu d'artifice, placez de la poudre à canon et du papier dans la grille d'artisanat 3x3 qui s'affiche au-dessus de votre inventaire.{*B*}
+Vous pouvez aussi placer plusieurs étoiles à feux d'artifice dans la grille d'artisanat pour les ajouter au feu d'artifice.{*B*}
+Plus il y a de cases contenant de la poudre à canon dans la grille d'artisanat, plus les étoiles à feux d'artifice explosent haut.{*B*}{*B*}
+Vous pouvez ensuite récupérer le feu d'artifice terminé dans la case de résultat.{*B*}{*B*}
+Vous pouvez fabriquer une étoile à feux d'artifice en plaçant de la poudre à canon et un colorant dans la grille d'artisanat.{*B*}
+ - Ce colorant définit la couleur que prend l'étoile à feux d'artifice en explosant.{*B*}
+ - Pour définir la forme de l'étoile à feux d'artifice, ajoutez une boule de feu, une pépite d'or, une plume ou un crâne de monstre.{*B*}
+ - Pour ajouter une traînée ou un scintillement, utilisez des diamants ou de la poudre glowstone.{*B*}{*B*}
+Après avoir fabriqué une étoile à feux d'artifice, vous pouvez définir sa couleur de disparition en lui ajoutant un colorant.
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>Entonnoirs</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}COMMENT JOUER : ENTONNOIRS{*ETW*}{*B*}{*B*}
+Les entonnoirs servent à insérer ou retirer des objets d'un conteneur et à ramasser automatiquement les objets qu'on y jette.{*B*}
+Ils peuvent interagir avec les alambics, les coffres, les distributeurs, les droppers, les chariots de mine avec coffre, les chariots de mine avec entonnoir, et d'autres entonnoirs.{*B*}{*B*}
+Un entonnoir cherche en permanence à aspirer les objets d'un conteneur compatible placé au-dessus. Il tente également d'insérer les objets stockés dans un conteneur de destination.{*B*}
+Si un entonnoir est alimenté par un bloc de redstone, il devient inactif et arrête à la fois d'aspirer et d'insérer.{*B*}{*B*}
+Un entonnoir est orienté dans la direction vers laquelle il essaie d'insérer des objets. Pour l'orienter vers un bloc précis, placez-le contre ce bloc tout en vous faufilant.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>Droppers</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}COMMENT JOUER : DROPPERS{*ETW*}{*B*}{*B*}
+Quand un dropper est alimenté par la redstone, il dépose au sol un unique objet aléatoire qu'il contient. Utilisez {*CONTROLLER_ACTION_USE*} pour ouvrir le dropper, après quoi vous pouvez y insérer des objets de votre inventaire.{*B*}
+Si le dropper fait face à un coffre ou tout autre conteneur, l'objet sera transféré dedans. Il est possible de construire de longues chaînes de droppers pour transporter des objets en les allumant et éteignant à tour de rôle.
+ </value>
+</data>
<data name="IDS_DESC_SWORD"><value>Inflige plus de dégâts qu'à mains nues.</value>
</data>
<data name="IDS_DESC_SHOVEL"><value>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.</value>
@@ -609,13 +664,39 @@ La couleur des lits est toujours la même.</value>
</data>
<data name="IDS_DESC_MAP"><value>Tenue en main, la carte crée l'image d'une zone explorée. Peut servir à la détermination d'un trajet.</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>Si vous utilisez cet objet, il devient une carte de la zone géographique dans laquelle vous vous trouvez et se remplit au fur et à mesure de votre exploration.</value>
+ </data>
<data name="IDS_DESC_BOW"><value>Permet d'attaquer à distance à l'aide de flèches.</value>
</data>
<data name="IDS_DESC_ARROW"><value>Sert de munitions pour les arcs.</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>Produite par le Wither, sert à fabriquer des balises.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>Crée des explosions colorées après activation. La couleur, l'effet, la forme et la disparition dépendent de l'étoile à feux d'artifice utilisée pour créer le feu d'artifice.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>Détermine la couleur, l'effet et la forme d'un feu d'artifice.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>À utiliser dans un circuit de redstone pour entretenir, comparer ou réduire la force du signal, ou encore mesurer l'état de blocs précis.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>Type de chariot de mine qui se comporte comme un bloc de TNT mobile.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>Bloc qui émet un signal de redstone selon l'ensoleillement (ou le manque d'ensoleillement).</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>Type de chariot de mine spécial qui se comporte comme un entonnoir. Il connecte les objets sur le rail et les conteneurs au-dessus.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>Type d'armure spécial pour chevaux. Confère une armure de 5.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>Type d'armure spécial pour chevaux. Confère une armure de 7.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>Type d'armure spécial pour chevaux. Confère une armure de 11.</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>Sert à tenir les monstres en laisse ou à les attacher à un piquet de barrière.</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>Sert à nommer les monstres dans le monde.</value>
+</data>
<data name="IDS_DESC_BREAD"><value>Restitue 2,5{*ICON_SHANK_01*}.</value>
</data>
-<data name="IDS_DESC_CAKE"><value>Restitue 1{*ICON_SHANK_01*}.. Peut s'utiliser jusqu'à 6 fois.</value>
+<data name="IDS_DESC_CAKE"><value>Restitue 1{*ICON_SHANK_01*}. Peut s'utiliser jusqu'à 6 fois.</value>
</data>
<data name="IDS_DESC_COOKIE"><value>Restitue 1{*ICON_SHANK_01*}.</value>
</data>
@@ -938,100 +1019,158 @@ Remarque : vous pouvez aussi combiner colorant gris et poudre d'os pour en produ
</data>
<data name="IDS_DESC_SKULL"><value>Les crânes peuvent servir de décoration ou être portés comme masques dans l'emplacement pour le casque.</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>Sert à exécuter un ordre.</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>Projette un rayon de lumière dans le ciel et peut octroyer des altérations aux joueurs avoisinants.</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>Permet d'entreposer des blocs et objets. Placez deux coffres côte à côte pour former un grand coffre à la capacité doublée. Le coffre piégé crée en outre une charge de redstone à l'ouverture.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>Fournit une charge de redstone. Plus il y a d'objets sur la plaque, plus la charge est puissante.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>Fournit une charge de redstone. Plus il y a d'objets sur la plaque, plus la charge est puissante. Nécessite plus de poids que la plaque légère.</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>Source d'alimentation de redstone. Peut être retransformé en redstone.</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>Sert à intercepter des objets ou à en transférer depuis un conteneur vers un autre.</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>Type de rail permettant d'activer ou de désactiver les chariots de mine avec entonnoir, ou encore de déclencher les chariots de mine avec du TNT.</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>Sert à entreposer et distribuer des objets, ou à les pousser vers un autre conteneur, lorsqu'on lui applique une charge de redstone.</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>Des blocs colorés en argile durcie puis teinte.</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>Nourriture pour chevaux, ânes et mules qui restitue jusqu'à 10 cœurs. Accélère la croissance des poulains.</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>Obtenue en fondant de l'argile dans un four.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>Mélange de verre et d'un colorant.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>Panneau de verre coloré.</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>Un moyen peu encombrant d'entreposer du charbon. Peut servir de combustible dans un four.</value>
+ </data>
<data name="IDS_SQUID"><value>Pieuvre</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>Produit une poche d'encre une fois tuée.</value>
- </data>
+ </data>
<data name="IDS_COW"><value>Vache</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>Produit du cuir une fois tuée. Utilisez un seau pour la traire.</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>Mouton</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>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.</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>Poulet</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>Produit des plumes une fois tué ; pond aussi des œufs, à l'occasion.</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>Cochon</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>Produit de la viande de porc une fois tué. Utilisez une selle pour le chevaucher.</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>Loup</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>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.</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>Explose si vous l'approchez de trop près !</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>Squelette</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>Vous décoche des flèches. Produit des flèches une fois tué.</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>Araignée</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>Attaque dès que vous approchez. Peut escalader les murs. Produit du fil une fois tuée.</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>Zombie</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>Attaque dès que vous approchez.</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>Cochon zombie</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>Inoffensifs de nature, ils vous attaqueront en groupe si vous vous en prenez à l'un d'entre eux.</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>Décoche des boules de feu qui explosent à l'impact.</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>Slime</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>Se divise en plusieurs slimes plus petits dès qu'il est touché.</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>Vous attaquera si vous le regardez. Peut aussi déplacer des blocs.</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Poisson d'argent</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>Attire les poissons d'argent tapis à proximité si vous l'attaquez. Se cache dans les blocs de pierre.</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>Araignée bleue</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>Sa morsure est empoisonnée.</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Champimeuh</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>Combiné à un bol, sert à la préparation de ragoûts de champignons. Produit des champignons et devient une vache normale une fois tondue.</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>Golem de neige</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>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.</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>Dragon de l'Ender</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>Un colossal dragon noir qu'on rencontre dans l'Ender.</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Blaze</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>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.</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>Cube de magma</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>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.</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>Villageois</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>Ocelot</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>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.</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>Golem de fer</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>Apparaît dans les villages pour les protéger et peut être créé à partir de blocs de fer et de citrouilles.</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>Chauve-souris</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>Ces créatures volantes habitent les cavernes et autres grands espaces fermés.</value>
+ </data>
+<data name="IDS_WITCH"><value>Sorcière</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>Ces ennemis des marécages vous attaquent en lançant des potions, et en abandonnent aussi à leur mort.</value>
+ </data>
+<data name="IDS_HORSE"><value>Cheval</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>Vous pouvez monter ces animaux, à condition de les dompter d'abord.</value>
+ </data>
+<data name="IDS_DONKEY"><value>Âne</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>Vous pouvez monter ces animaux, à condition de les dompter d'abord. Il est possible de leur associer un coffre.</value>
+ </data>
+<data name="IDS_MULE"><value>Mule</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>Croisement entre un cheval et un âne. Vous pouvez monter ces animaux, à condition de les dompter d'abord. Ils peuvent aussi porter des sacoches.</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>Cheval zombie</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>Cheval squelette</value>
+ </data>
+<data name="IDS_WITHER"><value>Wither</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>Il vous faut des crânes de Wither et du sable des âmes pour créer ce monstre, qui vous attaque en tirant des crânes explosifs.</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1378,6 +1517,8 @@ Remarque : vous pouvez aussi combiner colorant gris et poudre d'os pour en produ
</data>
<data name="IDS_ITEM_MAP"><value>Carte</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>Carte vide</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>Disque vinyle "13"</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>Disque vinyle "cat"</value>
@@ -1480,6 +1621,28 @@ Remarque : vous pouvez aussi combiner colorant gris et poudre d'os pour en produ
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Crâne de creeper</value>
</data>
+<data name="IDS_NETHER_STAR"><value>Étoile du Nether</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>Fusée d'artifice</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>Étoile à feux d'artifice</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>Comparateur de redstone</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>Chariot de mine avec TNT</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>Chariot de mine avec entonnoir</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>Caparaçon en fer</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>Caparaçon en or</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>Caparaçon en diamant</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>Plomb</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>Étiquette</value>
+ </data>
<data name="IDS_TILE_STONE"><value>Pierre</value>
</data>
<data name="IDS_TILE_GRASS"><value>Bloc d'herbe</value>
@@ -1496,6 +1659,8 @@ Remarque : vous pouvez aussi combiner colorant gris et poudre d'os pour en produ
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>Planches de bois tropical</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>Planches de bois (tout type)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>Pousse d'arbre</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>Pousse de chêne</value>
@@ -1832,6 +1997,190 @@ Remarque : vous pouvez aussi combiner colorant gris et poudre d'os pour en produ
</data>
<data name="IDS_TILE_SKULL"><value>Crâne</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>Bloc de commande</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>Balise</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>Coffre piégé</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>Plaque de détection lestée (légère)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>Plaque de détection lestée (lourde)</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>Comparateur de redstone</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>Capteur de lumière</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>Bloc de redstone</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>Entonnoir</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>Rail activateur</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>Dropper</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>Argile colorée</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>Botte de foin</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>Argile durcie</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>Bloc de charbon</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>Argile noire</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>Argile rouge</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>Argile verte</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>Argile marron</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>Argile bleue</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>Argile violette</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>Argile cyan</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>Argile gris clair</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>Argile grise</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>Argile rose</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>Argile vert clair</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>Argile jaune</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>Argile bleu ciel</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>Argile magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>Argile orange</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>Argile blanche</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>Verre coloré</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>Verre gris</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>Verre rouge</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>Verre vert</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>Verre marron</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>Verre bleu</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>Verre violet</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>Verre cyan</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>Verre gris clair</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>Verre gris</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>Verre rose</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>Verre vert clair</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>Verre jaune</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>Verre bleu ciel</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>Verre magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>Verre orange</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>Verre blanc</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>Vitrail</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>Vitrail gris</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>Vitrail rouge</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>Vitrail vert</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>Vitrail marron</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>Vitrail bleu</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>Vitrail violet</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>Vitrail cyan</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>Vitrail gris clair</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>Vitrail gris</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>Vitrail rose</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>Vitrail vert clair</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>Vitrail jaune</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>Vitrail bleu ciel</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>Vitrail magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>Vitrail orange</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>Vitrail blanc</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>Petite boule</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>Grande boule</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>Étoile</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Creeper</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>Explosion</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>Forme inconnue</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>Noir</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>Rouge</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>Vert</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>Marron</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>Bleu</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>Violet</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>Cyan</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>Gris clair</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>Gris</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>Rose</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>Vert clair</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>Jaune</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>Bleu ciel</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>Magenta</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>Orange</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>Blanc</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>Perso.</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>Dégradé</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>Scintillement</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>Traînée</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>Durée du vol :</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>Commandes actuelles</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>Config.</value>
@@ -2009,8 +2358,7 @@ La nuit, les monstres sont de sortie ; tâchez donc d'aménager un abri avant l
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
Voici votre inventaire. Il affiche les objets susceptibles d'être tenus en main ainsi que tous les autres objets que vous portez, armure comprise.
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
Appuyez sur{*CONTROLLER_VK_A*} pour continuer.{*B*}
Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser l'inventaire.
@@ -2031,7 +2379,7 @@ La nuit, les monstres sont de sortie ; tâchez donc d'aménager un abri avant l
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- Si vous voulez en savoir plus sur un objet, déplacez le pointeur sur l'objet en question et appuyez sur{*CONTROLLER_VK_RT*}.
+ Si vous voulez en savoir plus sur un objet, déplacez le pointeur sur l'objet en question et appuyez sur{*CONTROLLER_ACTION_MENU_PAGEDOWN*}.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2065,7 +2413,7 @@ La nuit, les monstres sont de sortie ; tâchez donc d'aménager un abri avant l
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- Si vous voulez en savoir plus sur un objet, déplacez le pointeur sur l'objet en question et appuyez sur{*CONTROLLER_VK_RT*}.
+ Si vous voulez en savoir plus sur un objet, déplacez le pointeur sur l'objet en question et appuyez sur{*CONTROLLER_ACTION_MENU_PAGEDOWN*}.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2612,6 +2960,211 @@ En mode Vol, maintenez{*CONTROLLER_ACTION_JUMP*} pour monter et{*CONTROLLER_ACTI
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.
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ Voici l'interface d'inventaire du cheval.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}Appuyez sur{*CONTROLLER_VK_A*} pour continuer.
+ {*B*}Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser l'inventaire du cheval.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ L'inventaire du cheval vous permet de transférer des objets ou d'en équiper votre cheval, âne ou mule.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ Sellez votre cheval en plaçant une selle dans l'emplacement à cet effet. Vous pouvez aussi l'équiper d'une armure en plaçant un caparaçon dans l'emplacement d'armure.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ Ce menu permet aussi de transférer des objets de votre inventaire vers les sacoches de votre âne ou mule, et vice versa.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>Vous avez trouvé un cheval.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>Vous avez trouvé un âne.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>Vous avez trouvé une mule.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les chevaux, ânes et mules.
+ {*B*}Appuyez sur{*CONTROLLER_VK_B*} si vous n'avez plus rien à apprendre sur la question.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ C'est surtout dans les plaines et la savane que l'on trouve des chevaux et des ânes. En croisant ces deux espèces, on obtient une mule, mais celle-ci ne peut pas avoir de descendance.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ Vous pouvez monter tous les chevaux, ânes et mules adultes. En revanche, seuls les chevaux peuvent porter une armure (appelée caparaçon), alors que les ânes et les mules peuvent être équipés de sacoches pour transporter des objets.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ Avant de pouvoir utiliser un cheval, un âne ou une mule, il faut le dompter. Un cheval se dompte en essayant de monter dessus et de vous y maintenir pendant qu'il tente de vous désarçonner.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ Quand des cœurs apparaissent autour du cheval, c'est que vous l'avez dompté : il n'essaiera plus de vous désarçonner.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ Essayez de monter ce cheval. Utilisez {*CONTROLLER_ACTION_USE*} sans objet ni outil en main pour le chevaucher.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ Pour diriger un cheval, vous devez l'équiper d'une selle que vous trouverez auprès des villageois, en pêchant, ou dans les coffres cachés à travers l'environnement.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ Un âne ou une mule dompté peut être équipé d'une sacoche en lui associant un coffre. Vous pourrez ensuite accéder à cette sacoche en vous faufilant devant l'animal ou en le chevauchant.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ Les chevaux et les ânes (mais pas les mules) s'élèvent comme les autres animaux, à l'aide de pommes dorées ou de carottes dorées. Les poulains deviennent adultes au fil du temps, mais vous pouvez accélérer le processus en leur donnant du blé ou du foin à manger.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ Vous pouvez essayer de dompter les chevaux et les ânes ici. Les coffres des environs contiennent également des selles, caparaçons et autres objets utiles pour chevaux.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ Vous êtes dans l'interface de la balise, qui vous permet de choisir les pouvoirs qu'octroiera votre balise.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}Appuyez sur{*CONTROLLER_VK_A*} pour continuer.
+ {*B*}Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser cet inventaire.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ Le menu de la balise vous permet de sélectionner son pouvoir principal. Plus votre pyramide a d'étages, plus il y a de pouvoirs disponibles.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ Une balise sur une pyramide d'au moins quatre étages dispose d'un pouvoir secondaire (Régénération), ou d'un pouvoir principal plus puissant.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ Pour définir les pouvoirs de votre balise, vous devez sacrifier un lingot d'émeraude, de diamant, d'or ou de fer dans l'emplacement de paiement. Cela fait, la balise restera active indéfiniment.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>Cette pyramide est surmontée d'une balise inactive.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les balises.
+ {*B*}Appuyez sur{*CONTROLLER_VK_B*} si vous n'avez plus rien à apprendre sur la question.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ Les balises actives projettent un intense rayon de lumière dans le ciel et octroient des pouvoirs aux joueurs avoisinants. Vous pouvez les fabriquer à l'aide de verre, d'obsidienne et d'étoiles du Nether, qui s'obtiennent en terrassant le Wither.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ Une balise doit être placée au sommet d'une pyramide de fer, d'or, d'émeraude ou de diamant, et doit pouvoir recevoir la lumière du soleil le jour. Le matériau sur lequel la balise est placée n'a aucun effet sur son pouvoir.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ Essayez d'utiliser la balise pour définir ses pouvoirs. Vous pouvez utiliser en guise de paiement les lingots de fer fournis.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>Cette pièce contient des entonnoirs.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les entonnoirs.
+ {*B*}Appuyez sur{*CONTROLLER_VK_B*} si vous n'avez plus rien à apprendre sur la question.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ Les entonnoirs servent à insérer ou retirer des objets d'un conteneur et à ramasser automatiquement les objets qu'on y jette.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ Ils peuvent interagir avec les alambics, les coffres, les distributeurs, les droppers, les chariots de mine avec coffre, les chariots de mine avec entonnoir, et d'autres entonnoirs.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ Un entonnoir cherche en permanence à aspirer un objet d'un conteneur compatible placé au-dessus. Il tente également d'insérer les objets stockés dans un conteneur de destination.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ Si un entonnoir est alimenté par un bloc de redstone, il devient inactif et arrête à la fois d'aspirer et d'insérer.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ Un entonnoir est orienté dans la direction vers laquelle il essaie d'insérer des objets. Pour l'orienter vers un bloc précis, placez-le contre ce bloc tout en vous faufilant.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ Cette salle contient diverses configurations d'entonnoirs qui méritent d'être étudiées et testées.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ Vous êtes dans l'interface des feux d'artifice, qui vous permet de fabriquer des feux d'artifice et des étoile à feux d'artifice.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}Appuyez sur{*CONTROLLER_VK_A*} pour continuer.
+ {*B*}Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser cet inventaire.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ Pour fabriquer un feu d'artifice, placez de la poudre à canon et du papier dans la grille d'artisanat 3x3 qui apparaît au-dessus de votre inventaire.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ Facultatif : vous pouvez placer plusieurs étoiles à feux d'artifice dans la grille d'artisanat pour les ajouter au feu d'artifice.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ Plus il y a de cases contenant de la poudre à canon dans la grille d'artisanat, plus les étoiles à feux d'artifice explosent haut.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ Vous pouvez ensuite récupérer le feu d'artifice terminé dans la case de résultat.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ Vous pouvez fabriquer une étoile à feux d'artifice en plaçant de la poudre à canon et un colorant dans la grille d'artisanat.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ Ce colorant définit la couleur que prend l'étoile à feux d'artifice en explosant.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ Pour définir la forme de l'étoile à feux d'artifice, ajoutez une boule de feu, une pépite d'or, une plume ou un crâne.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ Pour ajouter une traînée ou un scintillement, utilisez des diamants ou de la poudre glowstone.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ Après avoir fabriqué une étoile à feux d'artifice, vous pouvez définir sa couleur de disparition en lui ajoutant un colorant.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ Les coffres des environs contiennent divers objets servant à créer des FEUX D'ARTIFICE !
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les feux d'artifice.
+ {*B*}Appuyez sur{*CONTROLLER_VK_B*} si vous n'avez plus rien à apprendre sur la question.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ Les feux d'artifice sont des objets décoratifs pouvant être lancés à la main ou depuis un distributeur. Ils se fabriquent à l'aide de papier, de poudre à canon et (facultatif) de plusieurs étoiles à feux d'artifice.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ En ajoutant des ingrédients supplémentaires lors de la fabrication, vous pouvez personnaliser les étoiles à feux d'artifice : couleurs, disparition, forme, taille et effets (traînée, scintillement, etc.).
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ Essayez de fabriquer un feu d'artifice à l'atelier en combinant les ingrédients que contiennent les coffres.
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>Sélectionner</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>Utiliser</value>
@@ -2834,6 +3387,22 @@ En mode Vol, maintenez{*CONTROLLER_ACTION_JUMP*} pour monter et{*CONTROLLER_ACTI
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Charger la sauvegarde pour Xbox One</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>Monter</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>Descendre</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>Associer un coffre</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>Lancer</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>Tenir en laisse</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>Lâcher</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>Fixer</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>Nom</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>O.K.</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>Annuler</value>
@@ -3144,6 +3713,20 @@ Voulez-vous déverrouiller le jeu complet ?</value>
</data>
<data name="IDS_DISPENSER"><value>Distributeur</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>Cheval</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>Dropper</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>Entonnoir</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>Balise</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>Pouvoir principal</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>Pouvoir secondaire</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>Chariot de mine</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>Aucun contenu téléchargeable de ce type n'est actuellement disponible pour ce jeu.</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s a rejoint la partie.</value>
@@ -3303,10 +3886,14 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>Mode de jeu : Créatif</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>Mode de jeu : Aventure</value>
+ </data>
<data name="IDS_SURVIVAL"><value>Survie</value>
</data>
<data name="IDS_CREATIVE"><value>Créatif</value>
</data>
+<data name="IDS_ADVENTURE"><value>Aventure</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>Créé en mode Survie</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>Créé en mode Créatif</value>
@@ -3327,6 +3914,8 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>Superplat</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>Saisissez une valeur initiale pour générer à nouveau le même terrain. Champ vide = monde aléatoire.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>Une fois activé, le jeu sera un jeu en ligne.</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>Une fois activé, seuls les joueurs invités peuvent participer.</value>
@@ -3343,7 +3932,7 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_GAMEOPTION_HOST_PRIVILEGES"><value>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.</value>
</data>
-<data name="IDS_GAMEOPTION_RESET_NETHER"><value>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.</value>
+<data name="IDS_GAMEOPTION_RESET_NETHER"><value>Activé, le Nether se régénérera. Utile si vous avez une ancienne sauvegarde sans forteresse du Nether.</value>
</data>
<data name="IDS_GAMEOPTION_STRUCTURES"><value>Lorsque cette option est activée, les structures comme les villages et les forts apparaîtront dans le monde.</value>
</data>
@@ -3351,6 +3940,20 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>Lorsque cette option est activée, un coffre renfermant des objets utiles sera créé à proximité du point d'apparition du joueur.</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>Si vous désactivez cette option, les monstres et animaux ne peuvent ni modifier des blocs (par exemple, les explosions des creepers ne détruisent pas les blocs et les moutons ne retirent pas d'herbe), ni ramasser des objets.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>Si vous activez cette option, les joueurs conservent leur inventaire après leur mort.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>Si vous désactivez cette option, les monstres n'apparaissent pas automatiquement.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>Si vous désactivez cette option, les monstres et animaux ne laissent pas d'objets (par exemple, les creepers ne laissent pas de poudre à canon).</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>Si vous désactivez cette option, les blocs ne laissent pas d'objets après être détruits (par exemple, les blocs de pierre ne laissent pas de pierre taillée).</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>Si vous désactivez cette option, les joueurs ne regagnent pas leur santé automatiquement.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>Si vous désactivez cette option, le moment de la journée ne change pas.</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>Packs de skins</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>Thèmes</value>
@@ -3399,7 +4002,49 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} s'est fait rouer de coups par {*SOURCE*}</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} s'est fait tuer par {*SOURCE*}</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*SOURCE*} a tué {*PLAYER*} par magie</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} a chuté d'une échelle</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} a chuté d'une liane</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} a chuté hors de l'eau</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} a chuté d'un endroit élevé</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*PLAYER*} s'est fait pousser par {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*PLAYER*} s'est fait pousser par {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*PLAYER*} s'est fait pousser par {*SOURCE*} avec {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>Après une lourde chute, {*SOURCE*} a achevé {*PLAYER*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>Après une lourde chute, {*SOURCE*} a achevé {*PLAYER*} avec {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} a marché dans le feu tout en combattant {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} s'est fait carboniser tout en combattant {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} a piqué une tête dans la lave pour échapper à {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} a péri par noyade en tentant d'échapper à {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} a percuté un cactus en tentant d'échapper à {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*PLAYER*} s'est fait exploser par {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} s'est fait Witherifier</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*PLAYER*} s'est fait occire par {*SOURCE*} avec {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*PLAYER*} s'est fait tirer dessus par {*SOURCE*} avec {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*PLAYER*} a encaissé une boule de feu décochée par {*SOURCE*} avec {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*PLAYER*} s'est fait rouer de coups par {*SOURCE*} avec {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} s'est fait tuer par {*SOURCE*} avec {*ITEM*}</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>Brouillard d'adminium</value>
</data>
@@ -3413,7 +4058,7 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_CHECKBOX_ANIMATED_CHARACTER"><value>Personnage animé</value>
</data>
-<data name="IDS_CHECKBOX_CUSTOM_SKIN_ANIM"><value>Animations personnalisée pour skin</value>
+<data name="IDS_CHECKBOX_CUSTOM_SKIN_ANIM"><value>Anim. pers. pour skin</value>
</data>
<data name="IDS_PRIV_MINE_TOGGLE_ON"><value>Vous ne pouvez plus miner ou utiliser d'objet</value>
</data>
@@ -3566,9 +4211,9 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_DONT_RESET_NETHER"><value>Ne pas réinitialiser le Nether</value>
</data>
-<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Pas de tonte de champimeuh pour le moment. Le nombre max de cochons, moutons, vaches et chats a été atteint.</value>
+<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Pas de tonte de champimeuh pour le moment. Le nombre max de cochons, moutons, vaches chats et chevaux a été atteint.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de cochons, moutons, vaches et chats.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de cochons, moutons, vaches, chats et chevaux.</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED"><value>Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de champimeuh.</value>
</data>
@@ -3578,6 +4223,8 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de pieuvres dans un monde.</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de chauves-souris dans un monde.</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>Impossible d'utiliser un œuf d'apparition pour le moment. Le nombre maximum d'ennemis dans un monde a été atteint.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>Impossible d'utiliser un œuf d'apparition pour le moment. Le nombre maximum de villageois dans un monde a été atteint.</value>
@@ -3586,12 +4233,14 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>Vous ne pouvez pas faire apparaître des ennemis en mode Paisible.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>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.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Cet animal ne peut pas entrer en mode amour. Le nombre maximum de cochons, moutons, vaches, chats et chevaux en cours d'élevage a été atteint.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>Cet animal ne peut pas entrer en mode amour. Le nombre maximum de loups en cours d'élevage a été atteint.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>Cet animal ne peut pas entrer en mode amour. Le nombre maximum de poulets en cours d'élevage a été atteint.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>Cet animal ne peut pas entrer en mode amour. Le nombre maximum de chevaux en cours d'élevage a été atteint.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>Cet animal ne peut pas entrer en mode amour. Nbre max de champimeuh élevés atteint.</value>
</data>
<data name="IDS_MAX_BOATS"><value>Le nombre maximum de bateaux dans un monde a été atteint.</value>
@@ -3619,27 +4268,43 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
<data name="IDS_CREDITS"><value>Crédits</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>Réinstaller le contenu</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>Debug Settings</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>Propagation du feu</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>Explosion de TNT</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>PvP</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>Joueurs de confiance</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>Privilèges d'hôte</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>Génération de structures</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>Monde superplat</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>Coffre bonus</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>Options mondiales</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>Options du joueur</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>Ingérence des monstres</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>Conservation d'inventaire</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>Apparition des monstres</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>Butin des monstres</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>Butin des blocs</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>Régénération auto</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>Cycle jour/nuit</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>Peut construire et miner</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>Utilisation de portes et leviers possible</value>
@@ -3648,7 +4313,7 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_CAN_ATTACK_PLAYERS"><value>Peut attaquer les joueurs</value>
</data>
-<data name="IDS_CAN_ATTACK_ANIMALS"><value>Attaque d'animaux possible</value>
+<data name="IDS_CAN_ATTACK_ANIMALS"><value>Peut attaquer les animaux</value>
</data>
<data name="IDS_MODERATOR"><value>Modérateur</value>
</data>
@@ -3826,6 +4491,14 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_POTION_POISON"><value>Poison</value>
</data>
+<data name="IDS_POTION_WITHER"><value>Wither</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>Boost de santé</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>Absorption</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>Saturation</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>de rapidité</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>de lenteur</value>
@@ -3864,6 +4537,14 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>de poison</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>de flétrissure</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>de boost de santé</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>d'absorption</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>de saturation</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3960,6 +4641,22 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_POTION_DESC_POISON"><value>Réduit progressivement la santé des joueurs, animaux et monstres affectés.</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>À l'application :</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>Force de saut du cheval</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>Renforts zombies</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>Santé max</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>Portée d'aggro</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>Résistance au recul</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>Vitesse</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>Dégâts d'attaque</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>Tranchant</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>Châtiment</value>
@@ -4050,7 +4747,7 @@ Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?</valu
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>Restitue 3{*ICON_SHANK_01*}. Obtenu en cuisinant une pomme de terre dans un four.</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>Restitue 1{*ICON_SHANK_01*} mais peut vous empoisonner. À cuire dans un four ou planter dans une terre labourée.</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>Restitue 1{*ICON_SHANK_01*} mais peut vous rendre malade.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>Restitue 3{*ICON_SHANK_01*}. Se fabrique avec une carotte et des pépites d'or.</value>
</data>
diff --git a/Minecraft.Client/Common/Media/it-IT/strings.resx b/Minecraft.Client/Common/Media/it-IT/strings.resx
index 8082dfdc..6eb30dc3 100644
--- a/Minecraft.Client/Common/Media/it-IT/strings.resx
+++ b/Minecraft.Client/Common/Media/it-IT/strings.resx
@@ -300,6 +300,27 @@ Quando carichi o crei un mondo, se premi il pulsante "Altre opzioni" accederai a
{*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*}
+ {*T2*}Ciclo giorno/notte{*ETW*}{*B*}
+ Se disattivato, l'ora del giorno non cambia.{*B*}{*B*}
+
+ {*T2*}Mantieni inventario{*ETW*}{*B*}
+ Se attivato, i giocatori mantengono l'inventario quando muoiono.{*B*}{*B*}
+
+ {*T2*}Generazione mostri{*ETW*}{*B*}
+ Se disattivata, i mostri non vengono generati naturalmente.{*B*}{*B*}
+
+ {*T2*}Immutabilità{*ETW*}{*B*}
+ Se disattivata, impedisce a mostri e animali di modificare i blocchi (per esempio, le esplosioni dei creeper non distruggono i blocchi e le pecore non brucano l'erba) o raccogliere oggetti.{*B*}{*B*}
+
+ {*T2*}Bottino mostri{*ETW*}{*B*}
+ Se disattivato, mostri e animali non rilasciano bottino (per esempio, i creeper non rilasciano polvere da sparo).{*B*}{*B*}
+
+ {*T2*}Rilascio blocchi{*ETW*}{*B*}
+ Se disattivato, i blocchi non rilasciano oggetti quando vengono distrutti (per esempio, i blocchi di pietra non rilasciano ciottoli).{*B*}{*B*}
+
+ {*T2*}Rigenerazione naturale{*ETW*}{*B*}
+ Se disattivata, la salute dei giocatori non si rigenera naturalmente.{*B*}{*B*}
+
{*T1*}Opzioni di generazione del mondo{*ETW*}{*B*}
Quando crei un nuovo mondo, sono disponibili alcune opzioni aggiuntive.{*B*}{*B*}
@@ -316,7 +337,7 @@ Quando crei un nuovo mondo, sono disponibili alcune opzioni aggiuntive.{*B*}{*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*}
+ Durante la partita, premi{*BACK_BUTTON*}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*}
@@ -325,42 +346,44 @@ Quando crei un nuovo mondo, sono disponibili alcune opzioni aggiuntive.{*B*}{*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*}
+ Questa opzione è disponibile solo se "Autorizza giocatori" è disattivata. Quando l'opzione è attiva, il giocatore può interagire normalmente con il mondo di gioco. Se, invece, l'opzione è disattivata, il giocatore non può posizionare né distruggere blocchi e non potrà interagire con oggetti e blocchi di vario tipo.{*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*}
+ Questa opzione è disponibile solo se "Autorizza giocatori" è disattivata. Se disattivata, il giocatore non sarà in grado di usare né le porte né gli interruttori.{*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*}
+ Questa opzione è disponibile solo se "Autorizza giocatori" è disattivata. Se disattivata, il giocatore non sarà in grado di aprire i contenitori, come le casse.{*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*}
+ Questa opzione è disponibile solo se "Autorizza giocatori" è disattivata. Se disattivata, impedisce al giocatore di causare danni agli altri utenti.{*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*}
+ Questa opzione è disponibile solo se "Autorizza giocatori" è disattivata. Se disattivata, il giocatore non sarà in grado di infliggere danni agli animali.{*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*}
+ {*KICK_PLAYER_DESCRIPTION*}{*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*}
+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.
+ Permette al giocatore di spostare se stesso o gli altri utenti, raggiungendo altri giocatori presenti nel mondo.
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>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. Il giocatore non potrà accedere nuovamente finché il gioco non sarà stato riavviato.</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>Pagina successiva</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>Pagina precedente</value>
@@ -424,63 +447,95 @@ così saranno in grado di raggiungerti facilmente.
</data>
<data name="IDS_HOW_TO_PLAY_MENU_WHATSNEW"><value>Novità</value>
</data>
-<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
-{*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*}
+<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>{*T3*}Modifiche e aggiunte{*ETW*}{*B*}{*B*}
+- Aggiunti nuovi oggetti: argilla indurita, argilla colorata, blocco di carbone, balla di fieno, binario attivatore, blocco di pietra rossa, sensore luce diurna, sgancio, vagoncino, carrello con vagoncino, carrello con TNT, comparatore pietra rossa, piastra a pressione con peso, segnale, cassa intrappolata, razzo d'artificio, stella Fuoco d'artificio, stella del Sottomondo, piombo, corazza per cavalli, targhetta nome, uovo generazione cavallo{*B*}
+- Aggiunti nuovi mostri: Avvizzito, scheletri avvizziti, streghe, pipistrelli, cavalli, asini e muli{*B*}
+- Aggiunte nuove funzionalità di generazione del terreno: capanna della strega.{*B*}
+- Aggiunta interfaccia del segnale.{*B*}
+- Aggiunta interfaccia del cavallo.{*B*}
+- Aggiunta interfaccia del vagoncino.{*B*}
+- Aggiunti i fuochi d'artificio, la cui interfaccia è accessibile dal tavolo da lavoro quando si dispone degli ingredienti per la produzione di una stella Fuoco d'artificio o di un razzo d'artificio.{*B*}
+- Aggiunta la modalità Avventura: puoi distruggere i blocchi solo se disponi degli attrezzi adatti.{*B*}
+- Aggiunti numerosi nuovi suoni.{*B*}
+- Ora mostri, oggetti e proiettili possono attraversare i portali.{*B*}
+- Ora i ripetitori possono essere bloccati attivandone i lati con un altro ripetitore.{*B*}
+- Zombie e scheletri ora possono essere generati con diverse armi e armature.{*B*}
+- Nuovi messaggi in caso di morte del giocatore.{*B*}
+- Possibilità di dare un nome ai mostri con una targhetta e di rinominare i contenitori al fine di modificarne il titolo quando viene visualizzato il relativo menu.{*B*}
+- La farina d'ossa non fa più crescere qualsiasi oggetto istantaneamente alla dimensione massima, invece lo fa crescere casualmente di vari livelli.{*B*}
+- Collocando un comparatore di pietra rossa accanto a casse, banchi di distillazione, distributori e jukebox, è possibile rilevare un segnale pietra rossa che ne illustra il contenuto.{*B*}
+- I distributori possono essere rivolti in qualsiasi direzione.{*B*}
+- Mangiando una mela d'oro, il giocatore ottiene un "assorbimento" extra di salute temporaneo.{*B*}
+- Maggiore è il tempo trascorso in un'area, più i mostri generati in quel luogo saranno potenti.{*B*}
</value>
</data>
<data name="IDS_TITLEUPDATE"><value>{*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*}
+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*} - Argilla indurita, argilla colorata, blocco di carbone, balla di fieno, binario attivatore, blocco di pietra rossa, sensore luce diurna, sgancio, vagoncino, carrello con vagoncino, carrello con TNT, comparatore pietra rossa, piastra a pressione con peso, segnale, cassa intrappolata, razzo d'artificio, stella Fuoco d'artificio, stella del Sottomondo, piombo, corazza per cavalli, targhetta nome, uovo generazione cavallo{*B*}{*B*}
+{*T1*}Nuovi mostri{*ETB*} - Avvizzito, scheletri avvizziti, streghe, pipistrelli, cavalli, asini e muli{*B*}{*B*}
+{*T1*}Nuove funzionalità{*ETB*} - Doma e cavalca i cavalli, produci e usa i fuochi d'artificio, usa le targhette per dare un nome ad animali e mostri, crea circuiti a pietra rossa più avanzati e usa le nuove opzioni host per controllare le azioni disponibili per i visitatori del tuo mondo!{*B*}{*B*}
+{*T1*}Nuovo mondo tutorial{*ETB*} – Scopri funzionalità nuove e familiari nel mondo tutorial. Cerca di trovare tutti i dischi nascosti!{*B*}{*B*}
</value>
</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>Cavalli</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}COME GIOCARE: CAVALLI{*ETW*}{*B*}{*B*}
+Cavalli e asini si trovano principalmente nelle pianure. Se un asino si accoppia con una cavalla, nasce un mulo, il quale però è sterile.{*B*}
+Puoi cavalcare tutti i cavalli, asini e muli adulti, ma solo i cavalli possono essere dotati di armatura, così come le borse da sella per il trasporto di oggetti sono riservate ad asini e muli.{*B*}{*B*}
+Prima di poter cavalcare un cavallo, un asino o un mulo, dovrai domarlo tentando di cavalcarlo e rimanendo in groppa mentre cerca di disarcionarti.{*B*}
+Quando compaiono dei cuoricini intorno all'animale, significa che è domato e potrai cavalcarlo. Per controllare un cavallo, devi dotarlo di una sella.{*B*}{*B*}
+Puoi acquistare le selle dagli abitanti dei villaggi oppure trovarle nelle casse nascoste un po' ovunque.{*B*}
+Puoi mettere una borsa da sella su un asino o un mulo domato assicurandovi una cassa. Potrai accedere alle borse da sella mentre cavalchi o sei in modalità furtiva.{*B*}{*B*}
+Puoi allevare cavalli e asini (ma non muli) come gli altri animali, usando mele d'oro o carote d'oro.{*B*}
+Col passare del tempo, i puledri diventeranno adulti, comunque puoi velocizzare l'operazione nutrendoli con fieno o grano.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>Segnali</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}COME GIOCARE: SEGNALI{*ETW*}{*B*}{*B*}
+I segnali attivi proiettano un raggio di luce nel cielo, conferendo poteri speciali ai giocatori nelle vicinanze.{*B*}
+Per produrli servono vetro, ossidiana e stelle del Sottomondo, le quali si ottengono sconfiggendo l'Avvizzito.{*B*}{*B*}
+I segnali devono essere collocati in modo tale che siano colpiti dalla luce del sole durante il giorno; inoltre vanno posti su piramidi di ferro, oro, smeraldo o diamante.{*B*}
+Il materiale su cui è collocato il segnale non influisce sul suo potere.{*B*}{*B*}
+Nel menu dei segnali puoi selezionare un potere principale per il tuo segnale: più livelli possiede la piramide, maggiore sarà il numero di poteri tra cui scegliere.{*B*}
+Un segnale su una piramide con almeno quattro livelli offre inoltre il potere secondario Rigenerazione o un potere principale rafforzato.{*B*}{*B*}
+Per impostare i poteri del tuo segnale, devi sacrificare un lingotto di smeraldo, diamante, oro o ferro nello slot di pagamento.{*B*}
+Una volta impostati, i poteri saranno emanati dal segnale senza scadenze o limiti.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>Fuochi d'artificio</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}COME GIOCARE: FUOCHI D'ARTIFICIO{*ETW*}{*B*}{*B*}
+I fuochi d'artificio sono oggetti decorativi che possono essere lanciati manualmente o dai distributori. Si producono usando carta, povere da sparo e alcune stelle Fuoco d'artificio (facoltative).{*B*}
+Colori, dissolvenza, forma, dimensione ed effetti (come scia o scintillii) delle stelle Fuoco d'artificio possono essere personalizzati includendo ingredienti aggiuntivi durante la produzione.{*B*}{*B*}
+Per produrre un fuoco d'artificio, inserisci polvere da sparo e carta nella griglia di produzione 3x3 al di sopra dell'inventario.{*B*}
+Se lo desideri, puoi inserire alcune stelle Fuoco d'artificio nella griglia di produzione, per aggiungerle al fuoco d'artificio.{*B*}
+Più caselle occupi con la polvere da sparo, maggiore sarà l'altezza a cui esploderanno le stelle Fuoco d'artificio.{*B*}{*B*}
+Quando vuoi produrre il fuoco d'artificio, prendilo dalla casella di produzione.{*B*}{*B*}
+Per produrre le stelle Fuoco d'artificio, inserisci polvere da sparo e tintura nella griglia di produzione.{*B*}
+ - La tintura stabilisce il colore dell'esplosione della stella Fuoco d'artificio.{*B*}
+ - Per decidere la forma della stella Fuoco d'artificio, aggiungi una scarica di fuoco, una pepita d'oro, una piuma o una testa di mostro.{*B*}
+ - Puoi aggiungere una scia usando diamanti e polvere di pietra brillante.{*B*}{*B*}
+Una volta creata una stella Fuoco d'artificio, puoi stabilirne il colore di dissolvenza usando la tintura.
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>Vagoncini</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}COME GIOCARE: VAGONCINI{*ETW*}{*B*}{*B*}
+I vagoncini si usano per inserire o rimuovere oggetti dai contenitori e per raccogliere automaticamente gli oggetti che vi vengono riposti.{*B*}
+Possono influire su Banchi di distillazione, casse, distributori, sganci, carrelli con casse, carrelli con vagoncini e altri vagoncini.{*B*}{*B*}
+I vagoncini tentano continuamente di estrarre oggetti da un contenitore adatto posizionato sopra di essi. Inoltre, cercheranno di inserire gli oggetti in essi riposti in un contenitore di scarico.{*B*}
+Se un vagoncino funziona grazie a una pietra rossa, si disattiverà e smetterà di prelevare e consegnare oggetti.{*B*}{*B*}
+Il vagoncino punta nella direzione in cui cerca di scaricare gli oggetti. Per rivolgere un vagoncino verso un blocco particolare, posizionalo a ridosso di tale blocco mentre ti muovi furtivamente.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>Sganci</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}COME GIOCARE: SGANCI{*ETW*}{*B*}{*B*}
+Se attivati da una pietra rossa, gli sganci rilasciano un oggetto casuale sul terreno. Usa {*CONTROLLER_ACTION_USE*} per aprire lo sgancio e inserisci gli oggetti del tuo inventario.{*B*}
+Se lo sgancio è rivolto verso un forziere o un altro tipo di contenitore, l'oggetto verrà riposto lì. Puoi creare lunghe serie di sganci per trasportare gli oggetti, ma affinché funzionino devono essere alternativamente attivati e disattivati.
+ </value>
+</data>
<data name="IDS_DESC_SWORD"><value>Infligge un danno maggiore della mano.</value>
</data>
<data name="IDS_DESC_SHOVEL"><value>Serve per scavare terra, erba, sabbia, ghiaia e neve più in fretta che a mano. Le pale servono per scavare palle di neve.</value>
@@ -553,7 +608,7 @@ torta di zucca, pozione della visione notturna, pozione dell'invisibilità, quar
</data>
<data name="IDS_DESC_SLAB"><value>Si usa per creare scale lunghe. Due lastre una sopra l'altra creano un blocco doppio di dimensioni normali.</value>
</data>
-<data name="IDS_DESC_HALFSLAB"><value>Si usa per costruire scale lunghe. Due lastre poste l'una sull'altra creano un blocco da due lastre di dimensioni normali.</value>
+<data name="IDS_DESC_HALFSLAB"><value>Si usa per creare scale lunghe. Due lastre una sopra l'altra creano un blocco doppio di dimensioni normali.</value>
</data>
<data name="IDS_DESC_TORCH"><value>La torcia si usa per fare luce, nonché per sciogliere neve e ghiaccio.</value>
</data>
@@ -606,10 +661,36 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_DESC_MAP"><value>Mentre la tieni in mano, crea un'immagine di un'area esplorata. Può essere utile per orientarti.</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>Quando viene utilizzata, diventa una mappa della parte del mondo in cui ti trovi e si compila man mano che procedi nell'esplorazione.</value>
+ </data>
<data name="IDS_DESC_BOW"><value>Consente attacchi a distanza con le frecce.</value>
</data>
<data name="IDS_DESC_ARROW"><value>Si usa come munizione per l'arco.</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>Rilasciato dall'Avvizzito, si usa per produrre segnali.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>Quando si attiva, crea esplosioni colorate. Colore, effetto, forma e dissolvenza sono determinati dalla stella Fuoco d'artificio utilizzata al momento della sua produzione.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>Si usa per determinare colore, effetto e forma di un fuoco d'artificio.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>Si usa nei circuiti con pietre rosse per mantenere, confrontare o sottrarre forza al segnale o per misurare le condizioni di determinati blocchi.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>È un tipo di carrello che funge da blocco di TNT mobile.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>È un blocco che emette un segnale pietra rossa in base alla luce del sole (o alla sua assenza).</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>È uno speciale tipo di carrello che funziona in modo simile al vagoncino. Raccoglie gli oggetti sui binari e dai contenitori sopra di esso.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>Speciale tipo di corazza che si può far indossare a un cavallo. Garantisce 5 punti armatura.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>Speciale tipo di corazza che si può far indossare a un cavallo. Garantisce 7 punti armatura.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>Speciale tipo di corazza che si può far indossare a un cavallo. Garantisce 11 punti armatura.</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>Serve per allacciare il nemico al giocatore o alle recinzioni.</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>Serve per dare un nome ai nemici nel mondo.</value>
+</data>
<data name="IDS_DESC_BREAD"><value>Reintegra 2,5{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_CAKE"><value>Reintegra 1{*ICON_SHANK_01*}. Utilizzabile 6 volte.</value>
@@ -628,7 +709,7 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_DESC_BEEF_COOKED"><value>Reintegra 4{*ICON_SHANK_01*}. Si crea cucinando il manzo crudo nella fornace.</value>
</data>
-<data name="IDS_DESC_PORKCHOP_RAW"><value>Reintegra 1,5{*ICON_SHANK_01*} o si può cucinare nella fornace.</value>
+<data name="IDS_DESC_PORKCHOP_RAW"><value>Reintegra 1,5{*ICON_SHANK_01*}, o può essere cucinato in una fornace.</value>
</data>
<data name="IDS_DESC_PORKCHOP_COOKED"><value>Reintegra 4{*ICON_SHANK_01*}. Si crea cucinando una costoletta di maiale in una fornace.</value>
</data>
@@ -661,7 +742,7 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_DESC_POWEREDRAIL"><value>Accesi, fanno accelerare i carrelli da miniera che ci passano sopra. Spenti, fanno fermare i carrelli da miniera.</value>
</data>
-<data name="IDS_DESC_DETECTORRAIL"><value>Funzionano come la piastra a pressione (inviano un segnale pietra rossa mentre sono in funzione) ma sono attivabili solo dal carrello da miniera.</value>
+<data name="IDS_DESC_DETECTORRAIL"><value>Funziona come la piastra a pressione (invia un segnale pietra rossa mentre è in funzione) ma è attivabile solo dal carrello da miniera.</value>
</data>
<data name="IDS_DESC_MINECART"><value>Trasporta te, un animale o un mostro sui binari.</value>
</data>
@@ -934,100 +1015,158 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_DESC_SKULL"><value>Le teste di Mob si possono collocare come decorazioni o indossare come maschere nello slot per l'elmo.</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>Serve per eseguire ordini.</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>Proietta un raggio di luce nel cielo e conferisce effetti positivi ai giocatori vicini.</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>Vi si possono conservare blocchi e oggetti. Colloca due casse una accanto all'altra per creare una cassa grande dalla capacità doppia. La cassa intrappolata crea inoltre una carica di pietra rossa quando viene aperta.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>Fornisce una carica di pietra rossa. La carica è più potente se ci sono più oggetti sulla piastra.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>Fornisce una carica di pietra rossa. La carica è più potente se ci sono più oggetti sulla piastra. Richiede un peso maggiore rispetto alla piastra leggera.</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>Si usa come fonte energetica per la pietra rossa. Riconvertibile in pietra rossa.</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>Si usa per prelevare oggetti o per trasferirli dentro e fuori vari contenitori.</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>Un tipo di binario che attiva o disattiva i carrelli con vagoncini e attiva i carrelli con TNT.</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>Serve per custodire e depositare oggetti o per spingerli in un altro contenitore quando viene fornita una carica di pietra rossa.</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>Blocchi colorati prodotti tingendo l'argilla indurita.</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>Si può usare per nutrire cavalli, asini o muli e reintegrare fino a 10 cuori. Accelera la crescita dei puledri.</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>Si crea fondendo argilla nella fornace.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>Si produce usando vetro e tintura.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>Si produce con il vetro colorato.</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>Per conservare il carbone in poco spazio. Utilizzabile per il funzionamento della fornace.</value>
+ </data>
<data name="IDS_SQUID"><value>Calamaro</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>Rilascia sacche di inchiostro quando viene ucciso.</value>
- </data>
+ </data>
<data name="IDS_COW"><value>Mucca</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>Rilascia pelle quando viene uccisa. Si può anche mungere usando un secchio.</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>Pecora</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>Rilascia lana quando viene tosata (se non è già stata tosata). Si può creare lana di vari colori usando le tinture.</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>Gallina</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>Rilascia piume quando viene uccisa, inoltre a volte depone le uova.</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>Maiale</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>Rilascia costolette quando viene ucciso. Si può cavalcare usando una sella.</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>Lupo</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>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.</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>Esplode se ti avvicini troppo!</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>Scheletro</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>Ti lancia delle frecce. Rilascia frecce quando viene ucciso.</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>Ragno</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>Ti attacca quando ti avvicini. Può arrampicarsi sui muri. Rilascia un pungiglione quando viene ucciso.</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>Zombie</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>Ti attacca quando ti avvicini.</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>Uomo-maiale zombie</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>Inizialmente docile, ma se ne colpisci uno verrai attaccato da un gruppo.</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>Ti lancia sfere di fuoco che esplodono al contatto.</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>Slime</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>Se danneggiato, si divide in slime più piccoli.</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>Ti attacca se lo guardi. Può anche spostare blocchi.</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Pesciolino d'argento</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>Quando viene attaccato, attira tutti i Pesciolini d'argento nascosti nei dintorni. Si nasconde nei blocchi di pietra.</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>Ragno delle grotte</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>Il suo morso è velenoso.</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Muccafungo</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>Si usa con una Ciotola per preparare la Zuppa di funghi. Deposita funghi e diventa una mucca normale quando viene tosata.</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>Golem di neve</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>Il Golem di neve può essere creato assemblando blocchi di neve e una zucca. Lancia palle di neve contro i nemici del suo creatore.</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>Drago di Ender</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>Grosso drago nero che si trova nel Limite.</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Vampe</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>Nemici che si trovano nel Sottomondo, soprattutto all'interno delle Fortezze. Quando vengono uccisi, depositano Bacchette di Vampe.</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>Cubo di magma</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>Si trovano nel Sottomondo. Simili a Slime, si dividono in esemplari più piccoli quando vengono uccisi.</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>Abitante del villaggio</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>Ocelot</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>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.</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>Golem di ferro</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>Appare nei villaggi per proteggerli, può essere creato usando blocchi di ferro e zucche.</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>Pipistrello</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>Queste creature volanti si trovano nelle caverne o in altri grandi spazi chiusi.</value>
+ </data>
+<data name="IDS_WITCH"><value>Strega</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>Si trovano nelle paludi e attaccano lanciando pozioni. Quando vengono uccise, rilasciano pozioni.</value>
+ </data>
+<data name="IDS_HORSE"><value>Cavallo</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>Questi animali possono essere domati e quindi cavalcati.</value>
+ </data>
+<data name="IDS_DONKEY"><value>Asino</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>Questi animali possono essere domati e quindi cavalcati. Possono trasportare una cassa.</value>
+ </data>
+<data name="IDS_MULE"><value>Mulo</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>Nasce dall'incrocio tra un cavallo e un asino. Questi animali possono essere domati e quindi cavalcati; inoltre possono trasportare casse.</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>Cavallo zombie</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>Cavallo scheletro</value>
+ </data>
+<data name="IDS_WITHER"><value>Avvizzito</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>Si producono usando teschi di Avvizzito e sabbie mobili. Scagliano teschi esplosivi contro di te.</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1374,6 +1513,8 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_ITEM_MAP"><value>Mappa</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>Mappa vuota</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>Disco - "13"</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>Disco - "gatto"</value>
@@ -1452,9 +1593,9 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_ITEM_FIREBALL"><value>Scarica di fuoco</value>
</data>
-<data name="IDS_ITEM_FIREBALLCHARCOAL"><value>Scarica di fuoco (carbone vegetale)</value>
+<data name="IDS_ITEM_FIREBALLCHARCOAL"><value>Scarica fuoco (carbone veg.)</value>
</data>
-<data name="IDS_ITEM_FIREBALLCOAL"><value>Scarica di fuoco (carbone)</value>
+<data name="IDS_ITEM_FIREBALLCOAL"><value>Scarica fuoco (carbone)</value>
</data>
<data name="IDS_ITEM_ITEMFRAME"><value>Espositore</value>
</data>
@@ -1476,6 +1617,28 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Testa di Creeper</value>
</data>
+<data name="IDS_NETHER_STAR"><value>Stella del Sottomondo</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>Razzo d'artificio</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>Stella Fuoco d'artificio</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>Comparatore pietra rossa</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>Carrello con TNT</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>Carrello con vagoncino</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>Corazza di ferro per cavallo</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>Corazza d'oro per cavallo</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>Corazza di diamante per cavallo</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>Piombo</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>Targhetta nome</value>
+ </data>
<data name="IDS_TILE_STONE"><value>Pietra</value>
</data>
<data name="IDS_TILE_GRASS"><value>Blocco d'erba</value>
@@ -1492,6 +1655,8 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>Assi di legno della giungla</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>Assi di legno (qualsiasi tipo)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>Arbusto</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>Arbusto di quercia</value>
@@ -1604,7 +1769,7 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_TILE_STONESLAB_SAND"><value>Lastra di arenaria</value>
</data>
-<data name="IDS_TILE_STONESLAB_WOOD"><value>Lastra di legno</value>
+<data name="IDS_TILE_STONESLAB_WOOD"><value>Lastra di legno di quercia</value>
</data>
<data name="IDS_TILE_STONESLAB_COBBLE"><value>Lastra acciottolata</value>
</data>
@@ -1612,15 +1777,15 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_TILE_STONESLAB_SMOOTHBRICK"><value>Lastra di mattoni di pietra</value>
</data>
-<data name="IDS_TILE_STONESLAB_OAK"><value>Lastra di legna di quercia</value>
+<data name="IDS_TILE_STONESLAB_OAK"><value>Lastra di legno di quercia</value>
</data>
<data name="IDS_TILE_STONESLAB_SPRUCE"><value>Lastra di arbusto</value>
</data>
<data name="IDS_TILE_STONESLAB_BIRCH"><value>Lastra di legno di betulla</value>
</data>
-<data name="IDS_TILE_STONESLAB_JUNGLE"><value>Lastra di legno della giungla</value>
+<data name="IDS_TILE_STONESLAB_JUNGLE"><value>Lastra di legno tropicale</value>
</data>
-<data name="IDS_TILE_STONESLAB_NETHERBRICK"><value>Lastra di mattoni del Sottomondo</value>
+<data name="IDS_TILE_STONESLAB_NETHERBRICK"><value>Lastra matt. Sottomondo</value>
</data>
<data name="IDS_TILE_BRICK"><value>Mattoni</value>
</data>
@@ -1750,7 +1915,7 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_TILE_STONE_BRICK_SMOOTH"><value>Mattoni di pietra</value>
</data>
-<data name="IDS_TILE_STONE_BRICK_SMOOTH_MOSSY"><value>Mattoni di pietra coperti di muschio</value>
+<data name="IDS_TILE_STONE_BRICK_SMOOTH_MOSSY"><value>Mattoni di pietra muschiati</value>
</data>
<data name="IDS_TILE_STONE_BRICK_SMOOTH_CRACKED"><value>Mattoni di pietra lesionati</value>
</data>
@@ -1790,9 +1955,9 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_TILE_NETHERBRICK"><value>Mattone del Sottomondo</value>
</data>
-<data name="IDS_TILE_NETHERFENCE"><value>Recinzione di mattoni del Sottomondo</value>
+<data name="IDS_TILE_NETHERFENCE"><value>Recinzione matt. Sottomondo</value>
</data>
-<data name="IDS_TILE_STAIRS_NETHERBRICK"><value>Scale di mattoni del Sottomondo</value>
+<data name="IDS_TILE_STAIRS_NETHERBRICK"><value>Scale matt. Sottomondo</value>
</data>
<data name="IDS_TILE_NETHERSTALK"><value>Verruca del Sottomondo</value>
</data>
@@ -1820,7 +1985,7 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_TILE_STAIRS_BIRCHWOOD"><value>Scale di legno di betulla</value>
</data>
-<data name="IDS_TILE_STAIRS_JUNGLEWOOD"><value>Scala di legno della giungla</value>
+<data name="IDS_TILE_STAIRS_JUNGLEWOOD"><value>Scala di legno tropicale</value>
</data>
<data name="IDS_TILE_REDSTONE_LIGHT"><value>Torcia di pietra rossa</value>
</data>
@@ -1828,6 +1993,190 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
</data>
<data name="IDS_TILE_SKULL"><value>Teschio</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>Blocco di comando</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>Segnale</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>Cassa intrappolata</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>Piastra a press. pesata (leggera)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>Piastra a press. pesata (pesante)</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>Comparatore pietra rossa</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>Sensore luce diurna</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>Blocco di pietra rossa</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>Vagoncino</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>Binario attivatore</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>Sgancio</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>Argilla colorata</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>Balla di fieno</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>Argilla indurita</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>Blocco di carbone</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>Argilla colorata nera</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>Argilla colorata rossa</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>Argilla colorata verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>Argilla colorata marrone</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>Argilla colorata blu</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>Argilla colorata viola</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>Argilla colorata turchese</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>Arg. col. grigio chiaro</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>Argilla colorata grigia</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>Argilla colorata rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>Arg. col. verde acido</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>Argilla colorata gialla</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>Argilla colorata azzurra</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>Argilla colorata magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>Argilla colorata arancione</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>Argilla colorata bianca</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>Vetro colorato</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>Vetro colorato nero</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>Vetro colorato rosso</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>Vetro colorato verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>Vetro colorato marrone</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>Vetro colorato blu</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>Vetro colorato viola</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>Vetro colorato turchese</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>Vetro colorato grigio chiaro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>Vetro colorato grigio</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>Vetro colorato rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>Vetro colorato verde lime</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>Vetro colorato giallo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>Vetro colorato azzurro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>Vetro colorato magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>Vetro colorato arancione</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>Vetro colorato bianco</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>Lastra di vetro colorato</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>Lastra di vetro colorato nera</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>Lastra di vetro colorato rossa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>Lastra di vetro colorato verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>Lastra di vetro colorato marrone</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>Lastra di vetro colorato blu</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>Lastra di vetro colorato viola</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>Lastra di vetro colorato turchese</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>Lastra di vetro colorato grigio chiaro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>Lastra di vetro colorato grigia</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>Lastra di vetro colorato rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>Lastra di vetro colorato verde lime</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>Lastra di vetro colorato gialla</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>Lastra di vetro colorato azzurra</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>Lastra di vetro colorato magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>Lastra di vetro colorato arancione</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>Lastra di vetro colorato bianca</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>Sfera piccola</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>Sfera grande</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>A forma di stella</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>A forma di creeper</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>Esplosione</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>Forma sconosciuta</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>Nero</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>Rosso</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>Verde</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>Marrone</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>Blu</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>Viola</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>Turchese</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>Grigio chiaro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>Grigio</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>Rosa</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>Verde lime</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>Giallo</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>Azzurro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>Magenta</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>Arancione</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>Bianco</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>Personalizzato</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>Dissolvenza</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>Luccichio</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>Scia</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>Durata volo:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>Comandi attuali</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>Layout</value>
@@ -2005,8 +2354,7 @@ Di notte, i mostri vagano in libertà, quindi costruisci un riparo per tempo.</v
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
Questo è il tuo inventario. Mostra gli oggetti che puoi tenere in mano e quelli che trasporti, nonché la tua eventuale armatura.
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
Premi{*CONTROLLER_VK_A*} per continuare.{*B*}
Premi{*CONTROLLER_VK_B*} se sai già come si usa l'inventario.
@@ -2027,8 +2375,8 @@ Di notte, i mostri vagano in libertà, quindi costruisci un riparo per tempo.</v
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- Se vuoi maggiori informazioni su un oggetto, spostaci sopra il puntatore e premi{*CONTROLLER_VK_RT*}.
- </value>
+ Se vuoi maggiori informazioni su un oggetto, spostaci sopra il puntatore e premi{*CONTROLLER_ACTION_MENU_PAGEDOWN*} .
+ </value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
Ora premi{*CONTROLLER_VK_B*} per uscire dall'inventario.
@@ -2061,8 +2409,8 @@ Di notte, i mostri vagano in libertà, quindi costruisci un riparo per tempo.</v
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- Se vuoi maggiori informazioni su un oggetto, spostaci sopra il puntatore e premi{*CONTROLLER_VK_RT*}.
- </value>
+ Se vuoi maggiori informazioni su un oggetto, spostaci sopra il puntatore e premi{*CONTROLLER_ACTION_MENU_PAGEDOWN*} .
+ </value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
Ora premi{*CONTROLLER_VK_B*} per uscire dall'inventario della modalità Creativa.
@@ -2608,6 +2956,211 @@ Durante il volo, puoi tenere premuto{*CONTROLLER_ACTION_JUMP*} per salire e{*CON
Premi{*CONTROLLER_VK_B*} se sai già come funzionano la barra del cibo e l'alimentazione.
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ Questa è l'interfaccia dell'inventario del cavallo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}Premi{*CONTROLLER_VK_A*} per continuare.
+ {*B*}Premi{*CONTROLLER_VK_B*} se sai già usare l'inventario del cavallo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ L'inventario del cavallo ti consente di trasferire o equipaggiare oggetti per il tuo cavallo, asino o mulo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ Sella il tuo cavallo inserendo una sella nel relativo slot. Puoi far indossare una corazza a un cavallo collocandola nel relativo slot.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ In questo menu puoi anche trasferire oggetti tra l'inventario e le borse da sella sulla groppa di asini e muli.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>Hai trovato un cavallo.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>Hai trovato un asino.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>Hai trovato un mulo.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}Premi{*CONTROLLER_VK_A*} per saperne di più su cavalli, asini e muli.
+ {*B*}Premi{*CONTROLLER_VK_B*} se sai già tutto su cavalli, asini e muli.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ Cavalli e asini si trovano principalmente nelle pianure, mentre i muli nascono dall'accoppiamento tra un asino e un cavallo, ma ricorda che sono sterili e non potranno riprodursi a loro volta.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ Puoi cavalcare tutti i cavalli, i muli e gli asini adulti, ma puoi far indossare una corazza soltanto ai cavalli, mentre asini e muli possono essere dotati di una borsa da sella per il trasporto di oggetti.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ Prima di poter cavalcare un cavallo, un asino o un mulo, è necessario domarlo tentando di cavalcarlo e resistendo mentre cerca di disarcionarti.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ Quando compaiono dei cuori e non tenta più di farti finire a terra, significa che è stato domato.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ Ora prova a cavalcare questo cavallo. Usa {*CONTROLLER_ACTION_USE*} senza impugnare oggetti o attrezzi per salirgli in groppa.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ Per controllare un cavallo, devi dotarlo di una sella, che puoi acquistare dagli abitanti dei villaggi o trovare nelle casse sparse per il mondo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ Puoi mettere una borsa da sella su un asino o un mulo domato assicurandovi una cassa. Potrai accedere alle borse da sella mentre cavalchi o sei in modalità furtiva.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ Cavalli e asini (non i muli) possono essere allevati come gli altri animali, usando mele d'oro o carote d'oro. Col passare del tempo, i puledri diventeranno cavalli adulti, ma puoi velocizzare il processo nutrendoli con fieno o grano.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ Qui puoi provare a domare cavalli e asini; inoltre, troverai selle, corazze e altre oggetti utili nelle casse.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ Questa è l'interfaccia del segnale, che puoi usare per scegliere i poteri conferiti dai tuoi segnali.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}Premi{*CONTROLLER_VK_A*} per continuare.
+ {*B*}Premi{*CONTROLLER_VK_B*} se sai già usare l'inventario del segnale.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ Nel menu del segnale, puoi selezionare un potere principale: più livelli possiede la piramide, maggiore sarà il numero di poteri tra cui scegliere.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ Un segnale su una piramide con almeno quattro livelli offre inoltre il potere secondario Rigenerazione o un potere principale rafforzato.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ Per impostare i poteri del tuo segnale, devi sacrificare un lingotto di smeraldo, diamante, oro o ferro nello slot di pagamento. Una volta impostati, i poteri saranno emanati dal segnale senza scadenze o limiti.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>Sulla cima di questa piramide c'è un segnale inattivo.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}Premi{*CONTROLLER_VK_A*} per saperne di più sui segnali.
+ {*B*}Premi{*CONTROLLER_VK_B*} se sai già tutto sui segnali.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ I segnali attivi proiettano un raggio di luce nel cielo, conferendo poteri speciali ai giocatori nelle vicinanze. Per produrli servono vetro, ossidiana e stelle del Sottomondo, le quali si ottengono sconfiggendo l'Avvizzito.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ I segnali devono essere collocati in modo tale che siano colpiti dalla luce del sole durante il giorno; inoltre vanno posti su piramidi di ferro, oro, smeraldo o diamante. Il materiale su cui è collocato il segnale non influisce sul suo potere.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ Prova a usare il segnale per impostare il potere concesso: per il pagamento, puoi usare i lingotti di ferro che ti abbiamo fornito.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>Questa stanza contiene dei vagoncini</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}Premi{*CONTROLLER_VK_A*} per saperne di più sui vagoncini.
+ {*B*}Premi{*CONTROLLER_VK_B*} se sai già tutto sui vagoncini.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ I vagoncini si usano per inserire o rimuovere oggetti dai contenitori e per raccogliere automaticamente gli oggetti che vi vengono riposti.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ Possono influire su Banchi di distillazione, casse, distributori, sganci, carrelli con casse, carrelli con vagoncini e altri vagoncini.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ I vagoncini tentano continuamente di estrarre oggetti da un contenitore adatto posizionato sopra di essi. Inoltre, cercheranno di inserire gli oggetti in essi riposti in un contenitore di scarico.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ Se un vagoncino funziona grazie a una pietra rossa, si disattiverà e smetterà di prelevare e consegnare oggetti.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ Il vagoncino punta nella direzione in cui cerca di scaricare gli oggetti. Per rivolgere un vagoncino verso un blocco particolare, posizionalo a ridosso di tale blocco mentre ti muovi furtivamente.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ In questa stanza puoi sperimentare diverse configurazioni di vagoncini.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ Questa è l'interfaccia dei fuochi d'artificio, che si usa per produrre i fuochi d'artificio e le relative stelle.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}Premi{*CONTROLLER_VK_A*} per continuare.
+ {*B*}Premi{*CONTROLLER_VK_B*} se sai già usare l'inventario dei fuochi d'artificio.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ Per produrre un fuoco d'artificio, inserisci polvere da sparo e carta nella griglia di produzione 3x3 al di sopra dell'inventario.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ Se lo desideri, puoi inserire alcune stelle Fuoco d'artificio nella griglia di produzione, per aggiungerle al fuoco d'artificio.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ Più caselle occupi con la polvere da sparo, maggiore sarà l'altezza a cui esploderanno le stelle Fuoco d'artificio.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ Quando vuoi produrre il fuoco d'artificio, prendilo dalla casella di produzione.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ Per produrre le stelle Fuoco d'artificio, inserisci polvere da sparo e tintura nella griglia di produzione.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ La tintura stabilisce il colore dell'esplosione della stella Fuoco d'artificio.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ Per decidere la forma della stella Fuoco d'artificio, aggiungi una scarica di fuoco, una pepita d'oro, una piuma o una testa.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ Puoi aggiungere uno scintillio usando diamanti e polvere di pietra brillante.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ Una volta creata una stella Fuoco d'artificio, puoi stabilirne il colore di dissolvenza usando la tintura.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ In queste casse ci sono vari oggetti usati nella produzione di FUOCHI D'ARTIFICIO!
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}Premi{*CONTROLLER_VK_A*} per saperne di più sui fuochi d'artificio.
+ {*B*}Premi{*CONTROLLER_VK_B*} se sai già tutto sui fuochi d'artificio.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ I fuochi d'artificio sono oggetti decorativi che possono essere lanciati manualmente o dai distributori. Si producono usando carta, povere da sparo e alcune stelle Fuoco d'artificio (facoltative).
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ Colori, dissolvenza, forma, dimensione ed effetti (come scia o scintillii) delle stelle Fuoco d'artificio possono essere personalizzati includendo ingredienti aggiuntivi durante la produzione.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ Prova a realizzare un fuoco d'artificio al tavolo da lavoro usando gli ingredienti che trovi nelle casse.
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>Seleziona</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>Usa</value>
@@ -2830,6 +3383,22 @@ Durante il volo, puoi tenere premuto{*CONTROLLER_ACTION_JUMP*} per salire e{*CON
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Carica salvataggio per Xbox One</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>Sali</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>Scendi</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>Posiziona cassa</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>Lancia</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>Guinzaglio</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>Rilascia</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>Attacca</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>Nomina</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>OK</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>Annulla</value>
@@ -3068,7 +3637,7 @@ Vuoi sbloccare il gioco completo?</value>
</data>
<data name="IDS_RETURNEDTOMENU_TITLE"><value>Disconnesso</value>
</data>
-<data name="IDS_RETURNEDTOTITLESCREEN_TEXT"><value>Sei tornato alla schermata iniziale perché il tuo profilo giocatore si è disconnesso</value>
+<data name="IDS_RETURNEDTOTITLESCREEN_TEXT"><value>Sei tornato alla schermata iniziale perché il tuo profilo giocatore si è disconnesso.</value>
</data>
<data name="IDS_SLIDER_DIFFICULTY"><value>Difficoltà</value>
</data>
@@ -3140,6 +3709,20 @@ Vuoi sbloccare il gioco completo?</value>
</data>
<data name="IDS_DISPENSER"><value>Dispenser</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>Cavallo</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>Sgancio</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>Vagoncino</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>Segnale</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>Potere principale</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>Potere secondario</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>Carrello da miniera</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>Nessuna offerta di contenuto scaricabile disponibile per questo titolo al momento.</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s si unisce alla partita.</value>
@@ -3299,10 +3882,14 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>Modalità: Creativa</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>Modalità: Avventura</value>
+ </data>
<data name="IDS_SURVIVAL"><value>Sopravvivenza</value>
</data>
<data name="IDS_CREATIVE"><value>Creativa</value>
</data>
+<data name="IDS_ADVENTURE"><value>Avventura</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>In modalità Sopravvivenza</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>In modalità Creativa</value>
@@ -3323,6 +3910,8 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>Superpiatto</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>Inserisci un seme per generare di nuovo lo stesso terreno. Lascia vuoto per un mondo casuale.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>Se attivato, il gioco sarà un gioco online.</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>Se attivato, i giocatori potranno unirsi solo su invito.</value>
@@ -3347,6 +3936,20 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>Se l'opzione è abilitata, vicino al punto di generazione del giocatore apparirà una cassa contenente alcuni oggetti utili.</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>Se disattivato, impedisce a mostri e animali di cambiare i blocchi (per esempio, le esplosioni dei creeper non distruggono i blocchi e le pecore non brucano erba) o di raccogliere oggetti.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>Se attivo, i giocatori mantengono il proprio inventario quando muoiono.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>Se disattivato, i nemici non vengono generati naturalmente.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>Se disattivato, mostri e animali non rilasciano bottino (per esempio, i creeper non rilasciano polvere da sparo).</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>Se disattivato, i blocchi non rilasciano oggetti quando vengono distrutti (per esempio, i blocchi di pietra non rilasciano ciottoli).</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>Se disattivato, la salute dei giocatori non si rigenera naturalmente.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>Se disattivato, l'ora del giorno non cambia.</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>Pacchetti di skin</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>Temi</value>
@@ -3395,7 +3998,49 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} è stato pestato a morte da {*SOURCE*}</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} è stato ucciso da {*SOURCE*}</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} è stato ucciso da {*SOURCE*} con la magia</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} è caduto da una scala</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} è caduto dai rampicanti</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} è caduto fuori dall'acqua</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} è caduto da una grande altezza</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*SOURCE*} ha condannato {*PLAYER*} alla caduta</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*SOURCE*} ha condannato {*PLAYER*} alla caduta</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*SOURCE*} ha condannato {*PLAYER*} alla caduta usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>{*PLAYER*} è caduto troppo lontano ed è stato fatto fuori da {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>{*PLAYER*} è caduto troppo lontano ed è stato fatto fuori da {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} è finito nel fuoco mentre affrontava {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} è finito arrosto mentre affrontava {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} ha cercato di nuotare nella lava per sfuggire a {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} è annegato mentre cercava di sfuggire a {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} è finito contro un cactus mentre cercava di sfuggire a {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*SOURCE*} ha fatto esplodere {*PLAYER*}</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} è avvizzito</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*SOURCE*} ha massacrato {*PLAYER*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*SOURCE*} ha sparato a {*PLAYER*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*SOURCE*} ha lanciato una sfera di fuoco a {*PLAYER*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*SOURCE*} ha preso a pugni {*PLAYER*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*SOURCE*} ha ucciso {*PLAYER*} usando {*ITEM*}</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>Nebbia substrato roccioso</value>
</data>
@@ -3560,9 +4205,9 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_DONT_RESET_NETHER"><value>Non ripristinare il Sottomondo</value>
</data>
-<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Impossibile tosare il muccafungo al momento. Hai raggiunto il numero massimo di maiali, pecore, mucche e gatti.</value>
+<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Impossibile tosare il muccafungo al momento. Hai raggiunto il numero massimo di maiali, pecore, mucche, gatti e cavalli.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di maiali, pecore, mucche e gatti.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di maiali, pecore, mucche, gatti e cavalli.</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED"><value>Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di muccafunghi.</value>
</data>
@@ -3572,6 +4217,8 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di calamari.</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>Impossibile usare l'uovo generazione al momento. È stato raggiunto il numero massimo di pipistrelli per mondo.</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>Impossibile usare Uovo rigenerazione al momento. È stato raggiunto il numero massimo di nemici nel mondo.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>Impossibile usare Uovo rigenerazione al momento. È stato raggiunto il numero massimo di villici nel mondo.</value>
@@ -3580,12 +4227,14 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>Non puoi generare nemici in modalità Relax.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di maiali, pecore, mucche e gatti.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di maiali, pecore, mucche, gatti e cavalli.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di riproduzione di lupi.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di riproduzione di galline.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di riproduzione di cavalli.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di riproduzione di muccafunghi.</value>
</data>
<data name="IDS_MAX_BOATS"><value>È stato raggiunto il numero massimo di navi per mondo.</value>
@@ -3613,27 +4262,43 @@ Vuoi installare uno dei due pacchetti ora?</value>
<data name="IDS_CREDITS"><value>Riconoscimenti</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>Reinstalla contenuto</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>Impostazioni debug</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>Diffusione incendio</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>Esplosione TNT</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>Giocatore vs Giocatore</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>Autorizza giocatori</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>Privilegi dell'host</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>Genera strutture</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>Mondo superpiatto</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>Cassa bonus</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>Opzioni mondo</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>Opzioni di gioco</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>Immutabilità</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>Mantieni inventario</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>Generazione mostri</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>Bottino mostri</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>Rilascio blocchi</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>Rigenerazione naturale</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>Ciclo giorno/notte</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>Può costruire e scavare</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>Può usare porte e interruttori</value>
@@ -3820,6 +4485,14 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_POTION_POISON"><value>Veleno</value>
</data>
+<data name="IDS_POTION_WITHER"><value>Avvizzito</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>Bonus salute</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>Assorbimento</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>Saturazione</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>della Velocità</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>della Lentezza</value>
@@ -3858,6 +4531,14 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>del Veleno</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>del decadimento</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>del bonus salute</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>dell'assorbimento</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>della saturazione</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3954,6 +4635,22 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_POTION_DESC_POISON"><value>Riduce progressivamente la salute di giocatori, animali e mostri affetti.</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>Quando applicato:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>Forza salto cavallo</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>Rinforzi zombie</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>Salute massima</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>Distanza inseguimento mostri</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>Resistenza ad atterramento</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>Velocità</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>Danno attacco</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>Acutezza</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>Percossa</value>
@@ -4044,7 +4741,7 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>Fa recuperare 3 {*ICON_SHANK_01*}. Si crea cucinando una patata nella fornace.</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>Reintegra 1 {*ICON_SHANK_01*}, o si può cucinare nella fornace. Si può piantare sulle zolle. Può avvelenarti.</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>Fa recuperare 1 {*ICON_SHANK_01*}. Può avvelenarti.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>Reintegra 3 {*ICON_SHANK_01*}. Si realizza usando una carota e delle pepite d'oro.</value>
</data>
@@ -4092,7 +4789,7 @@ Vuoi installare uno dei due pacchetti ora?</value>
</data>
<data name="IDS_TILE_COBBLESTONE_WALL"><value>Muro di ciottoli</value>
</data>
-<data name="IDS_TILE_COBBLESTONE_WALL_MOSSY"><value>Muro di ciottoli coperto di muschio</value>
+<data name="IDS_TILE_COBBLESTONE_WALL_MOSSY"><value>Muro di ciottoli muschiato</value>
</data>
<data name="IDS_TILE_FLOWERPOT"><value>Vaso di fiori</value>
</data>
diff --git a/Minecraft.Client/Common/Media/ja-JP/4J_strings.resx b/Minecraft.Client/Common/Media/ja-JP/4J_strings.resx
index 63927afe..5ef7111d 100644
--- a/Minecraft.Client/Common/Media/ja-JP/4J_strings.resx
+++ b/Minecraft.Client/Common/Media/ja-JP/4J_strings.resx
@@ -73,9 +73,9 @@
</data>
<data name="IDS_PRO_NOTONLINE_TITLE"><value>Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã—ã¦ã„ã¾ã›ã‚“</value>
</data>
-<data name="IDS_PRO_NOTONLINE_TEXT"><value>ã“ã®ã‚²ãƒ¼ãƒ ã®ä¸€éƒ¨ã®æ©Ÿèƒ½ã§ã¯ã€Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã—ã¦ã„るゲーマー プロフィールãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚ç¾åœ¨ã¯ Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã—ã¦ã„ã¾ã›ã‚“</value>
+<data name="IDS_PRO_NOTONLINE_TEXT"><value>ã“ã®ã‚²ãƒ¼ãƒ ã®ä¸€éƒ¨ã®æ©Ÿèƒ½ã§ã¯ã€Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã—ã¦ã„るゲーマー プロフィールãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚ç¾åœ¨ã¯ Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã—ã¦ã„ã¾ã›ã‚“。</value>
</data>
-<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>ã“ã®æ©Ÿèƒ½ã‚’使ã†ã«ã¯ã€Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã—ã¦ã„るゲーマー プロフィールãŒå¿…è¦ã§ã™</value>
+<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>ã“ã®æ©Ÿèƒ½ã‚’使ã†ã«ã¯ã€Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³ã—ã¦ã„るゲーマー プロフィールãŒå¿…è¦ã§ã™ã€‚</value>
</data>
<data name="IDS_PRO_NOTONLINE_ACCEPT"><value>Xbox LIVE ã«ã‚µã‚¤ãƒ³ã‚¤ãƒ³</value>
</data>
@@ -100,7 +100,7 @@
<data name="IDS_PRO_UNLOCKGAME_TITLE"><value>完全版を購入</value>
</data>
<data name="IDS_PRO_UNLOCKGAME_TEXT"><value>ã“れ㯠Minecraft ã®ãŠè©¦ã—版ã§ã™ã€‚完全版ã§ã‚れã°ã€ä»Šã™ãç²å¾—ã§ãる実績ãŒã‚りã¾ã™!
-完全版を購入ã—ã¦ã€Xbox LIVE を通ã˜ã¦ä¸–界中ã®ãƒ•レンドã¨ä¸€ç·’ã«éŠã¹ã‚‹Minecraft ã®æ¥½ã—ã•を体験ã—ã¦ãã ã•ã„。
+完全版を購入ã—ã¦ã€Xbox LIVE を通ã˜ã¦ä¸–界中ã®ãƒ•レンドã¨ä¸€ç·’ã«éŠã¹ã‚‹ Minecraft ã®æ¥½ã—ã•を体験ã—ã¦ãã ã•ã„。
完全版を購入ã—ã¾ã™ã‹?</value>
</data>
<data name="IDS_PRO_PROFILEPROBLEM_TEXT"><value>プロフィールã®èª­ã¿è¾¼ã¿ã«å•題ãŒç™ºç”Ÿã—ãŸãŸã‚ã€ãƒ¡ã‚¤ãƒ³ ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã«æˆ»ã‚Šã¾ã™</value>
diff --git a/Minecraft.Client/Common/Media/ja-JP/strings.resx b/Minecraft.Client/Common/Media/ja-JP/strings.resx
index 132435fb..5326fb11 100644
--- a/Minecraft.Client/Common/Media/ja-JP/strings.resx
+++ b/Minecraft.Client/Common/Media/ja-JP/strings.resx
@@ -159,7 +159,7 @@ Minecraft ã¯è‡ªç”±ãªç™ºæƒ³ã§ãƒ–ロックをç©ã¿ä¸Šã’ã¦ã€æŽ¢æ¤œã—ãŸã‚Šã
経験値ゲージも画é¢ã«è¡¨ç¤ºã•れã€ç¾åœ¨ã®çµŒé¨“å€¤ãƒ¬ãƒ™ãƒ«ã¨æ¬¡ã®ãƒ¬ãƒ™ãƒ«ã¾ã§ã«å¿…è¦ãªå€¤ã‚’確èªã§ãã¾ã™ã€‚ 経験値ã¯ã€ç”Ÿã物を倒ã—ãŸæ™‚ã€ç‰¹å®šã®ãƒ–ロックを採掘ã—ãŸæ™‚ã€å‹•ç‰©ã‚’ç¹æ®–ã•ã›ãŸæ™‚ã€é‡£ã‚Šã€ã‹ã¾ã©ã§é‰±çŸ³ã‚’製錬ã—ãŸæ™‚ãªã©ã«ç²å¾—ã§ãる経験値オーブを集ã‚ã‚‹ã¨è²¯ã¾ã£ã¦ã„ãã¾ã™ã€‚{*B*}{*B*}
ã•らã«ä½¿ç”¨ã§ãるアイテムも表示ã•れã€{*CONTROLLER_ACTION_LEFT_SCROLL*} 㨠{*CONTROLLER_ACTION_RIGHT_SCROLL*} ã§æ‰‹ã«æŒã¤ã‚¢ã‚¤ãƒ†ãƒ ã‚’切り替ãˆã‚‰ã‚Œã¾ã™</value>
</data>
-<data name="IDS_HOW_TO_PLAY_INVENTORY"><value>{{*T3*}éŠã³æ–¹: æŒã¡ç‰©{*ETW*}{*B*}{*B*}
+<data name="IDS_HOW_TO_PLAY_INVENTORY"><value>{*T3*}éŠã³æ–¹: æŒã¡ç‰©{*ETW*}{*B*}{*B*}
æŒã¡ç‰©ã¯ {*CONTROLLER_ACTION_INVENTORY*} ã§è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}{*B*}
ã“ã®ç”»é¢ã§ã¯ã€æ‰‹ã«ã—ã¦ã„る使用å¯èƒ½ãªã‚¢ã‚¤ãƒ†ãƒ ã€æ‰€æœ‰ã—ã¦ã„るアイテムã®ãƒªã‚¹ãƒˆã€ç¾åœ¨è£…å‚™ã—ã¦ã„る防具を確èªã§ãã¾ã™ã€‚{*B*}{*B*}
ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚’ {*CONTROLLER_MENU_NAVIGATE*} ã§å‹•ã‹ã—ã¦ã€ã‚¢ã‚¤ãƒ†ãƒ ã«åˆã‚ã›ã¦ã‹ã‚‰ {*CONTROLLER_VK_A*} を押ã™ã¨ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã§ãã¾ã™ã€‚ãã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’複数所有ã—ã¦ã„ã‚‹å ´åˆã¯ã€ãã®ã™ã¹ã¦ãŒé¸æŠžã•れã¾ã™ã€‚åŠåˆ†ã ã‘é¸æŠžã™ã‚‹ã«ã¯ {*CONTROLLER_VK_X*} を使用ã—ã¾ã™ã€‚{*B*}{*B*}
@@ -231,7 +231,7 @@ Minecraft ã¯è‡ªç”±ãªç™ºæƒ³ã§ãƒ–ロックをç©ã¿ä¸Šã’ã¦ã€æŽ¢æ¤œã—ãŸã‚Šã
エンãƒãƒ£ãƒ³ãƒˆã«å¿…è¦ãªçµŒé¨“値ã¯ã€ä¸è¶³ã—ã¦ã„ã‚‹å ´åˆã¯èµ¤ã€è¶³ã‚Šã¦ã„ã‚‹å ´åˆã¯ç·‘ã§è¡¨ç¤ºã•れã¾ã™ã€‚{*B*}{*B*}
エンãƒãƒ£ãƒ³ãƒˆã¯æ¶ˆè²»å¯èƒ½ãªçµŒé¨“値ã®ç¯„囲ã§ãƒ©ãƒ³ãƒ€ãƒ ã«é¸æŠžã•れã¾ã™ã€‚{*B*}{*B*}
エンãƒãƒ£ãƒ³ãƒˆãƒ†ãƒ¼ãƒ–ルã®å‘¨å›²ã«ã€ãƒ†ãƒ¼ãƒ–ルã¨ãƒ–ロック 1 ã¤åˆ†ã®ã™ã間を空ã‘ã¦æœ¬æ£š (最大 15 å°) を並ã¹ã‚‹ã“ã¨ã§ã€ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã®ãƒ¬ãƒ™ãƒ«ãŒä¸ŠãŒã‚Šã¾ã™ã€‚ã¾ãŸæœ¬æ£šã‹ã‚‰ãƒ†ãƒ¼ãƒ–ãƒ«ä¸Šã®æœ¬ã«å‘ã‘ã¦æ–‡å­—ãŒæµã‚Œè¾¼ã‚€ã‚¨ãƒ•ェクトãŒè¡¨ç¤ºã•れã¾ã™ã€‚{*B*}{*B*}
-エンãƒãƒ£ãƒ³ãƒˆãƒ†ãƒ¼ãƒ–ルã«å¿…è¦ãªææ–™ã¯ã™ã¹ã¦æ‘や採掘ã€è¾²è€•ãªã©ã§æ‰‹ã«å…¥ã‚Šã¾ã™ã€‚{*B*}{*B}
+エンãƒãƒ£ãƒ³ãƒˆãƒ†ãƒ¼ãƒ–ルã«å¿…è¦ãªææ–™ã¯ã™ã¹ã¦æ‘や採掘ã€è¾²è€•ãªã©ã§æ‰‹ã«å…¥ã‚Šã¾ã™ã€‚{*B*}{*B*}
エンãƒãƒ£ãƒ³ãƒˆã—ãŸæœ¬ã¯é‡‘床を使ã£ã¦ã‚¢ã‚¤ãƒ†ãƒ ã‚’エンãƒãƒ£ãƒ³ãƒˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã‚¢ã‚¤ãƒ†ãƒ ã«ã‚ˆã‚Šå¤šãã®ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒã§ãã¾ã™{*B*}
</value>
</data>
@@ -280,9 +280,9 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
{*CONTROLLER_ACTION_DPAD_LEFT*} ã§å·¦ã«ã€{*CONTROLLER_ACTION_DPAD_RIGHT*} ã§å³ã«é£›ã¹ã¾ã™</value>
</data>
<data name="IDS_HOW_TO_PLAY_HOSTOPTIONS"><value>{*T3*}éŠã³æ–¹: ホストã¨ãƒ—レイヤーã®ã‚ªãƒ—ション{*ETW*}{*B*}{*B*}
-
+
{*T1*}ゲーム オプション{*ETW*}{*B*}
-世界をロードã¾ãŸã¯ç”Ÿæˆã™ã‚‹éš›ã€[ãã®ä»–ã®ã‚ªãƒ—ション] ã‚’é¸æŠžã—ã¦ã€ã‚ˆã‚Šè©³ç´°ãªè¨­å®šãŒã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚{*B*}{*B*}
+世界をロードã¾ãŸã¯ç”Ÿæˆã™ã‚‹éš›ã€[ãã®ä»–ã®ã‚ªãƒ—ション] ã‚’é¸æŠžã—ã¦ã€ã•らã«è©³ç´°ãªè¨­å®šãŒã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚{*B*}{*B*}
{*T2*}PvP{*ETW*}{*B*}
有効ã«ã™ã‚‹ã¨ã€ãƒ—レイヤーãŒä»–ã®ãƒ—レイヤーã«ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚’与ãˆã‚‰ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ (サãƒã‚¤ãƒãƒ« モードã®ã¿)。{*B*}{*B*}
@@ -299,6 +299,27 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
{*T2*}ホスト特権{*ETW*}{*B*}
有効ã«ã™ã‚‹ã¨ã€ãƒ›ã‚¹ãƒˆã®é£›è¡Œèƒ½åŠ›ã€ç–²åŠ´ç„¡åŠ¹ã€ã‚²ãƒ¼ãƒ å†…メニューã§ã®éžè¡¨ç¤ºã‚’切り替ãˆã‚‰ã‚Œã¾ã™ã€‚{*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+ {*T2*}時刻ã®å¤‰åŒ–{*ETW*}{*B*}
+ 無効ã«ã™ã‚‹ã¨ã€æ™‚刻ãŒå¤‰ã‚りã¾ã›ã‚“。{*B*}{*B*}
+
+ {*T2*}æŒã¡ç‰©ã®ä¿æŒ{*ETW*}{*B*}
+ 有効ã«ã™ã‚‹ã¨ã€ã‚²ãƒ¼ãƒ ã‚ªãƒ¼ãƒãƒ¼æ™‚ã«ãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã®æŒã¡ç‰©ãŒå¤±ã‚れã¾ã›ã‚“。{*B*}{*B*}
+
+ {*T2*}生ã物ã®å‡ºç¾{*ETW*}{*B*}
+ 無効ã«ã™ã‚‹ã¨ã€ç”Ÿã物ã¯è‡ªç„¶ã«å‡ºç¾ã—ã¾ã›ã‚“。{*B*}{*B*}
+
+ {*T2*}生ã物ã«ã‚ˆã‚‹å¦¨å®³{*ETW*}{*B*}
+ 無効ã«ã™ã‚‹ã¨ã€ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã‚„動物ãŒãƒ–ロックを変更ã—ãŸã‚Š (例: Creeper ãŒçˆ†ç™ºã—ã¦ã‚‚ブロックãŒç ´å£Šã•れãªã„ã€ç¾ŠãŒè‰ã‚’å–り除ã‹ãªã„)ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚’拾ã„ã¾ã›ã‚“。{*B*}{*B*}
+
+ {*T2*}生ã物ã‹ã‚‰ã®æˆ¦åˆ©å“{*ETW*}{*B*}
+ 無効ã«ã™ã‚‹ã¨ã€ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã‚„å‹•ç‰©ã¯æˆ¦åˆ©å“をドロップã—ã¾ã›ã‚“ (例: Creeper ã¯ç«è–¬ã‚’ドロップã—ãªã„)。{*B*}{*B*}
+
+ {*T2*}タイルã‹ã‚‰ã®ã‚¢ã‚¤ãƒ†ãƒ å…¥æ‰‹{*ETW*}{*B*}
+ 無効ã«ã™ã‚‹ã¨ã€ãƒ–ロックを壊ã—ã¦ã‚‚アイテムをè½ã¨ã—ã¾ã›ã‚“ (例: 石ブロックãŒä¸¸çŸ³ã‚’è½ã¨ã•ãªã„)。{*B*}{*B*}
+
+ {*T2*}自然å†ç”Ÿ{*ETW*}{*B*}
+ 無効ã«ã™ã‚‹ã¨ã€ãƒ—レイヤー㮠HP ã¯è‡ªç„¶ã«å†ç”Ÿã•れã¾ã›ã‚“。{*B*}{*B*}
+
{*T1*}世界ã®ç”Ÿæˆã®ã‚ªãƒ—ション{*ETW*}{*B*}
世界ã®ç”Ÿæˆã«ã‚ªãƒ—ションãŒè¿½åŠ ã•れã¾ã—ãŸã€‚{*B*}{*B*}
@@ -315,7 +336,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
有効ã«ã™ã‚‹ã¨æš—黒界をå†ç”Ÿæˆã—ã¾ã™ã€‚æš—é»’ç ¦ãŒå­˜åœ¨ã—ãªã„セーブ データãŒã‚ã‚‹å ´åˆã«ä¾¿åˆ©ã§ã™{*B*}{*B*}
{*T1*}ゲーム内ã®ã‚ªãƒ—ション{*ETW*}{*B*}
- ゲーム中㫠BACK を押ã™ã¨ã€æ§˜ã€…ãªã‚ªãƒ—ション メニューを開ãã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}{*B*}
+ ゲーム中㫠{*BACK_BUTTON*} を押ã™ã¨ã€æ§˜ã€…ãªã‚ªãƒ—ション メニューを開ãã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}{*B*}
{*T2*}ホスト オプション{*ETW*}{*B*}
ホストプレイヤー㨠[ホストオプションを変更ã§ãã‚‹] ã«è¨­å®šã•れãŸãƒ—レイヤー㯠[ホスト オプション] メニューを使用ã§ãã¾ã™ã€‚ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§ã¯ç«ã®å»¶ç„¼ã‚„ TNT ã®çˆ†ç™ºãªã©ã‚’切り替ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}{*B*}
@@ -333,7 +354,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
[é«˜åº¦ãªæ“作を許å¯] を無効ã«ã—ã¦ã„ã‚‹å ´åˆã®ã¿ä½¿ãˆã‚‹ã‚ªãƒ—ションã§ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ã“ã®ã‚²ãƒ¼ãƒ ã«å‚加ã—ãŸãƒ—レイヤーã¯ãƒã‚§ã‚¹ãƒˆãªã©ã®å…¥ã‚Œç‰©ã‚’使用ã§ãã¾ã›ã‚“。{*B*}{*B*}
{*T2*}プレイヤーを攻撃å¯èƒ½{*ETW*}{*B*}
- [é«˜åº¦ãªæ“作を許å¯] を無効ã«ã—ã¦ã„ã‚‹å ´åˆã®ã¿ä½¿ãˆã‚‹ã‚ªãƒ—ションã§ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ãƒ—レイヤーãŒä»–ã®ãƒ—レイヤーã«ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚’与ãˆã‚‰ã‚Œãªããªã‚Šã¾ã™ã€‚{*B*}{*B*}
+ [é«˜åº¦ãªæ“作を許å¯] を無効ã«ã—ã¦ã„ã‚‹å ´åˆã®ã¿ä½¿ãˆã‚‹ã‚ªãƒ—ションã§ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ãƒ—レイヤーãŒä»–ã®ãƒ—レイヤーã«ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚’与ãˆã‚‰ã‚Œãªããªã‚Šã¾ã™ã€‚{*B*}{*B*}
{*T2*}動物を攻撃å¯èƒ½{*ETW*}{*B*}
[é«˜åº¦ãªæ“作を許å¯] を無効ã«ã—ã¦ã„ã‚‹å ´åˆã®ã¿ä½¿ãˆã‚‹ã‚ªãƒ—ションã§ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ãƒ—レイヤーãŒå‹•物ã«ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚’与ãˆã‚‰ã‚Œãªããªã‚Šã¾ã™ã€‚{*B*}{*B*}
@@ -342,12 +363,12 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
ã“ã®è¨­å®šã‚’有効ã«ã™ã‚‹ã¨ã€ãã®ãƒ—レイヤーã¯ã€Œé«˜åº¦ãªæ“作を許å¯ã€ãŒç„¡åйã®å ´åˆã«ã€ãƒ›ã‚¹ãƒˆã‚’除ãä»–ã®ãƒ—レイヤーã®ç‰¹æ¨©ã‚„ã€ãƒ—レイヤーã®è¿½æ”¾ã€ç«ã®å»¶ç„¼ã¨ TNT ã®çˆ†ç™ºã®è¨­å®šãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚{*B*}{*B*}
{*T2*}プレイヤーを追放{*ETW*}{*B*}
- ホストプレイヤーã¨åŒã˜ {*PLATFORM_NAME*} を使用ã—ã¦ã„ãªã„プレイヤーã«å¯¾ã—ã¦ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’é¸æŠžã™ã‚‹ã¨ã€ãã®ãƒ—レイヤーãŠã‚ˆã³å¯¾è±¡ãƒ—レイヤーã¨åŒã˜ {*PLATFORM_NAME*} を使用ã—ã¦ã„ã‚‹ä»–ã®ãƒ—レイヤーãŒã‚²ãƒ¼ãƒ ã‹ã‚‰è¿½æ”¾ã•れã¾ã™ã€‚追放ã•れãŸãƒ—レイヤーã¯ã€ã‚²ãƒ¼ãƒ ãŒå†èµ·å‹•ã•れるã¾ã§ã¯å†ã³å‚加ã§ãã¾ã›ã‚“。{*B*}{*B*}
+ {*KICK_PLAYER_DESCRIPTION*}*}{*B*}{*B*}
{*T1*}ホストプレイヤー オプション{*ETW*}{*B*}
[ホスト特権] ãŒæœ‰åйã®å ´åˆã€ãƒ›ã‚¹ãƒˆãƒ—レイヤーã¯è‡ªåˆ†ã«ç‰¹æ¨©ã‚’設定ã§ãã¾ã™ã€‚ホスト特権を変更ã™ã‚‹ã«ã¯ã€ãƒ—レイヤーåã‚’é¸æŠžã—㦠{*CONTROLLER_VK_A*} ã§ç‰¹æ¨©ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é–‹ãã€æ¬¡ã®ã‚ªãƒ—ションを設定ã—ã¦ãã ã•ã„。{*B*}{*B*}
-
- {*T2*}飛行å¯èƒ½{*ETW*}{*B*}
+
+ {*T2*}飛行å¯èƒ½{*ETW*}{*B*}
有効ã«ã™ã‚‹ã¨ã€é£›è¡Œã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚クリエイティブ モードã§ã¯å…¨ãƒ—レイヤーãŒé£›è¡Œã§ãã‚‹ãŸã‚ã€ã‚µãƒã‚¤ãƒãƒ« モードã«ã®ã¿é©ç”¨ã•れã¾ã™ã€‚{*B*}{*B*}
{*T2*}疲労無効{*ETW*}{*B*}
@@ -356,10 +377,13 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
{*T2*}ä¸å¯è¦–{*ETW*}{*B*}
有効ã«ã™ã‚‹ã¨ãƒ—レイヤーã¯ä»–ã®ãƒ—レイヤーã‹ã‚‰è¦‹ãˆãªããªã‚Šã€ãƒ€ãƒ¡ãƒ¼ã‚¸ã‚‚å—ã‘ãªããªã‚Šã¾ã™ã€‚{*B*}{*B*}
- {*T2*テレãƒãƒ¼ãƒˆå¯èƒ½{*ETW*}{*B*}
- 自分や他ã®ãƒ—レイヤーを世界ã«ã„ã‚‹ä»–ã®ãƒ—レイヤーã®å ´æ‰€ã«ç§»å‹•ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™
+ {*T2*}テレãƒãƒ¼ãƒˆå¯èƒ½{*ETW*}{*B*}
+ 自分や他ã®ãƒ—レイヤーを世界ã«ã„ã‚‹ä»–ã®ãƒ—レイヤーã®å ´æ‰€ã«ç§»å‹•ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>ホストプレイヤーã¨åŒã˜ {*PLATFORM_NAME*} を使用ã—ã¦ã„ãªã„プレイヤーã«å¯¾ã—ã¦ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’é¸æŠžã™ã‚‹ã¨ã€ãã®ãƒ—レイヤーãŠã‚ˆã³å¯¾è±¡ãƒ—レイヤーã¨åŒã˜ {*PLATFORM_NAME*} を使用ã—ã¦ã„ã‚‹ä»–ã®ãƒ—レイヤーãŒã‚²ãƒ¼ãƒ ã‹ã‚‰è¿½æ”¾ã•れã¾ã™ã€‚追放ã•れãŸãƒ—レイヤーã¯ã€ã‚²ãƒ¼ãƒ ãŒå†èµ·å‹•ã•れるã¾ã§ã¯å†ã³å‚加ã§ãã¾ã›ã‚“</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>次ã¸</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>å‰ã¸</value>
@@ -423,61 +447,94 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_HOW_TO_PLAY_MENU_WHATSNEW"><value>最新情報</value>
</data>
-<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>{*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*}
-</value>
+<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
+{*T3*}修正ã¨è¿½åŠ {*ETW*}{*B*}{*B*}
+- æ–°ã—ã„アイテムを追加ã—ã¾ã—ãŸã€‚堅焼ã粘土ã€è‰²ä»˜ã粘土ã€çŸ³ç‚­ã®ãƒ–ロックã€å¹²ã—è‰ã®ä¿µã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚¿ãƒ¼ レールã€ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ã®ãƒ–ãƒ­ãƒƒã‚¯ã€æ—¥ç…§ã‚»ãƒ³ã‚µãƒ¼ã€ãƒ‰ãƒ­ãƒƒãƒ‘ーã€ãƒ›ãƒƒãƒ‘ーã€ãƒ›ãƒƒãƒ‘ー付ãトロッコã€TNT 付ãトロッコã€ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ コンパレーターã€é‡é‡æ„ŸçŸ¥æ¿ã€ãƒ“ーコンã€ãƒˆãƒ©ãƒƒãƒ— ãƒã‚§ã‚¹ãƒˆã€ãƒ­ã‚±ãƒƒãƒˆèбç«ã€èбç«ã®æ˜Ÿã€ãƒã‚¶ãƒ¼ スターã€é¦–ã²ã‚‚ã€é¦¬ã‚ˆã‚ã„ã€å札ã€é¦¬ã®ã‚¹ãƒãƒ¼ãƒ³ エッグを追加ã—ã¾ã—ãŸã€‚{*B*}
+- æ–°ã—ã„生ã物ã€ã‚¦ã‚£ã‚¶ãƒ¼ã€ã‚¦ã‚£ã‚¶ãƒ¼ スケルトンã€ã‚¦ã‚£ãƒƒãƒã€ã‚³ã‚¦ãƒ¢ãƒªã€é¦¬ã€ãƒ­ãƒã€ãŠã‚ˆã³ãƒ©ãƒã‚’追加ã—ã¾ã—ãŸã€‚{*B*}
+- æ–°ã—ã„åœ°å½¢ç”Ÿæˆæ©Ÿèƒ½ã€ã‚¦ã‚£ãƒƒãƒã®å°å±‹ã‚’追加ã—ã¾ã—ãŸã€‚{*B*}
+- ビーコンã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを追加ã—ã¾ã—ãŸã€‚{*B*}
+- 馬ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを追加ã—ã¾ã—ãŸã€‚{*B*}
+- ホッパーã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを追加ã—ã¾ã—ãŸã€‚{*B*}
+- 花ç«ã‚’追加ã—ã¾ã—ãŸã€‚花ç«ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã«ã¯ã€èбç«ã®æ˜Ÿã¾ãŸã¯ãƒ­ã‚±ãƒƒãƒˆèбç«ã‚’作るãŸã‚ã®ææ–™ã‚’æ‰€æŒã—ã¦ã„ã‚‹å ´åˆã€ä½œæ¥­å°ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}
+- 「アドベンãƒãƒ£ãƒ¼ モードã€ã‚’追加ã—ã¾ã—ãŸã€‚ãƒ–ãƒ­ãƒƒã‚¯ã¯æ­£ã—ã„ツールã§ã®ã¿å£Šã™ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}
+- æ–°ã—ã„サウンドを多数追加ã—ã¾ã—ãŸã€‚{*B*}
+- 生ã物ã€ã‚¢ã‚¤ãƒ†ãƒ ã€ç™ºå°„物もã€ãƒãƒ¼ã‚¿ãƒ«ã‚’通れるよã†ã«ãªã‚Šã¾ã—ãŸã€‚{*B*}
+- ãƒªãƒ”ãƒ¼ã‚¿ãƒ¼ã«æ¨ªã‹ã‚‰åˆ¥ã®ãƒªãƒ”ーターã§é›»æºã‚’é€ã‚‹ã“ã¨ã§ã€ãƒ­ãƒƒã‚¯ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚{*B*}
+- ゾンビã¨ã‚¹ã‚±ãƒ«ãƒˆãƒ³ã¯ç•°ãªã£ãŸæ­¦å™¨ã¨é˜²å…·ã‚’装備ã—ã¦å‡ºç¾ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚{*B*}
+- æ–°ã—ã„ゲームオーãƒãƒ¼ メッセージ。{*B*}
+- åæœ­ã‚’使ã£ã¦ç”Ÿã物ã«åå‰ã‚’付ã‘ãŸã‚Šã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é–‹ã„ãŸçŠ¶æ…‹ã§å…¥ã‚Œç‰©ã®åå‰ã‚’変ãˆã¦ã‚¿ã‚¤ãƒˆãƒ«ã‚’変更ã—ã¾ã™ã€‚{*B*}
+- 骨粉を使ã£ã¦ã‚‚ã™ã¹ã¦ãŒçž¬æ™‚ã«æˆé•·ã—ãªããªã‚Šã¾ã—ãŸã€‚æˆé•·ã¯ãƒ©ãƒ³ãƒ€ãƒ ã«æ®µéšŽçš„ã«ãªã‚Šã¾ã™ã€‚{*B*}
+- ãƒã‚§ã‚¹ãƒˆã€èª¿åˆå°ã€ç™ºå°„装置ã€ã‚¸ãƒ¥ãƒ¼ã‚¯ãƒœãƒƒã‚¯ã‚¹ã®ä¸­èº«ã‚’示ã™ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ä¿¡å·ã¯ã€ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ コンパレーターをãã¡ã‚‰ã«å‘ã‘ã¦ç›´æŽ¥è¨­ç½®ã™ã‚Œã°æ¤œå‡ºã§ãã¾ã™ã€‚{*B*}
+- 発射装置ã¯ã©ã®æ–¹å‘ã«ã‚‚å‘ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}
+- 金ã®ãƒªãƒ³ã‚´ã‚’食ã¹ã‚‹ã¨ã€ãƒ—レイヤーã¯çŸ­æ™‚é–“ã€è¿½åŠ ã®ã€Œå¸åŽã€HP ã‚’ç²å¾—ã§ãã¾ã™ã€‚{*B*}
+- 一定ã®ã‚¨ãƒªã‚¢ã«é•·ãã„れã°ã„ã‚‹ã»ã©ã€ãã®ã‚¨ãƒªã‚¢ã§å‡ºç¾ã™ã‚‹ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã®é›£æ˜“度ãŒä¸ŠãŒã‚Šã¾ã™ã€‚{*B*}</value>
</data>
<data name="IDS_TITLEUPDATE"><value>{*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*}
-</value>
+{*T1*}新アイテム{*ETB*} - 堅焼ã粘土ã€è‰²ä»˜ã粘土ã€çŸ³ç‚­ã®ãƒ–ロックã€å¹²ã—è‰ã®ä¿µã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚¿ãƒ¼ レールã€ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ã®ãƒ–ãƒ­ãƒƒã‚¯ã€æ—¥ç…§ã‚»ãƒ³ã‚µãƒ¼ã€ãƒ‰ãƒ­ãƒƒãƒ‘ーã€ãƒ›ãƒƒãƒ‘ーã€ãƒ›ãƒƒãƒ‘ー付ãトロッコã€TNT 付ãトロッコã€ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ コンパレーターã€é‡é‡æ„ŸçŸ¥æ¿ã€ãƒ“ーコンã€ãƒˆãƒ©ãƒƒãƒ— ãƒã‚§ã‚¹ãƒˆã€ãƒ­ã‚±ãƒƒãƒˆèбç«ã€èбç«ã®æ˜Ÿã€ãƒã‚¶ãƒ¼ スターã€é¦–ã²ã‚‚ã€é¦¬ã‚ˆã‚ã„ã€å札ã€é¦¬ã®ã‚¹ãƒãƒ¼ãƒ³ エッグ{*B*}{*B*}
+ {*T1*}æ–°ã—ã„生ã物{*ETB*} - ウィザーã€ã‚¦ã‚£ã‚¶ãƒ¼ スケルトンã€ã‚¦ã‚£ãƒƒãƒã€ã‚³ã‚¦ãƒ¢ãƒªã€é¦¬ã€ãƒ­ãƒã€ãŠã‚ˆã³ãƒ©ãƒ{*B*}{*B*}
+{*T1*}新機能{*ETB*} - é¦¬ã®æ‰‹ãªã¥ã‘ã¨é¨Žä¹—ã€èбç«ã®ä½œè£½ã¨ã‚·ãƒ§ãƒ¼ã®å‚¬ã—ã€å札ã«ã‚ˆã‚‹å‹•物ã¨ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã®å付ã‘ã€ã•らã«é«˜åº¦ãªãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³å›žè·¯ã®ä½œæˆã€ãã—ã¦æ–°ã—ã„ホスト オプションã«ã‚ˆã‚‹è‡ªä¸–界ã§ã‚²ã‚¹ãƒˆãŒã§ãã‚‹ã“ã¨ã®ç®¡ç†!{*B*}{*B*}
+{*T1*}æ–°ã—ã„ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«{*ETB*} ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§æ–°æ—§æ©Ÿèƒ½ã®ä½¿ã„方を学ã³ã¾ã—ょã†ã€‚世界ã«éš ã•れãŸç§˜å¯†ã®éŸ³æ¥½ãƒ‡ã‚£ã‚¹ã‚¯ã‚’ã™ã¹ã¦è¦‹ã¤ã‘られるã§ã—ょã†ã‹ã€‚{*B*}{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>馬</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}ä½¿ã„æ–¹: 馬{*ETW*}{*B*}{*B*}
+馬ã¨ãƒ­ãƒã¯ã€ä¸»ã«è‰åŽŸã§è¦‹ã‚‰ã‚Œã¾ã™ã€‚ラãƒã¯ãƒ­ãƒã¨é¦¬ã‹ã‚‰ç”Ÿã¾ã‚Œã¾ã™ãŒã€ãれ自体ã§ã¯ç¹æ®–ã—ã¾ã›ã‚“。{*B*}
+馬ã€ãƒ­ãƒã€ãƒ©ãƒã®æˆä½“ã«ã¯ä¹—ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãŸã ã—ã€ã‚ˆã‚ã„ã‚’ç€ã‘られるã®ã¯é¦¬ã®ã¿ã§ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚’é‹ã¶ãŸã‚ã«éžè¢‹ã‚’ç€ã‘られるã®ã¯ãƒ­ãƒã¨ãƒ©ãƒã®ã¿ã§ã™ã€‚{*B*}{*B*}
+馬ã€ãƒ­ãƒã€ãƒ©ãƒã‚’利用ã™ã‚‹ã«ã¯ã€æœ€åˆã«æ‰‹ãªãšã‘ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚騎乗ã—ã¦ã€æŒ¯ã‚Šè½ã¨ã•れãã†ã«ãªã£ã¦ã‚‚乗り続ã‘ã‚‹ã¨ã€æ‰‹ãªãšã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}
+馬ã®å‘¨ã‚Šã«ãƒãƒ¼ãƒˆãŒè¡¨ç¤ºã•ã‚Œã‚‹ã¨æ‰‹ãªãšã‘完了ã§ã€ä»¥é™ã¯ãƒ—レイヤーを振りè½ã¨ã•ãªããªã‚Šã¾ã™ã€‚ 馬をæ“縦ã™ã‚‹ã«ã¯éžã‚’ç½®ãå¿…è¦ãŒã‚りã¾ã™ã€‚{*B*}{*B*}
+éžã¯æ‘人ã‹ã‚‰è³¼å…¥ã™ã‚‹ã€ã¾ãŸã¯ä¸–界ã®ä¸­ã«éš ã•れãŸãƒã‚§ã‚¹ãƒˆå†…ã«è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}
+手ãªãšã‘ãŸãƒ­ãƒã¨ãƒ©ãƒã«ãƒã‚§ã‚¹ãƒˆã‚’装ç€ã™ã‚Œã°éžè¢‹ã‚’背負ã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®éžè¢‹ã«ã¯ã€é¨Žä¹—ã¾ãŸã¯ã—ã®ã³è¶³ã—ã¦ã„ã‚‹é–“ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚{*B*}{*B*}
+馬ã¨ãƒ­ãƒ (ラãƒã¯é™¤ã) ã¯ã€ä»–ã®å‹•物ã¨åŒæ§˜ã«é‡‘ã®ãƒªãƒ³ã‚´ã¾ãŸã¯é‡‘ã®ãƒ‹ãƒ³ã‚¸ãƒ³ã‚’使ã£ã¦ç¹æ®–ã•ã›ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚{*B*}
+å­é¦¬ã‚„å­ãƒ­ãƒã¯æ™‚é–“ã®çµŒéŽã¨ã¨ã‚‚ã«æˆé•·ã—ã¾ã™ãŒã€å°éº¦ã¾ãŸã¯å¹²ã—è‰ã‚’与ãˆã‚Œã°æˆé•·ãŒæ—©ã¾ã‚Šã¾ã™ã€‚{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>ビーコン</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}ä½¿ã„æ–¹: ビーコン{*ETW*}{*B*}{*B*}
+アクティブãªãƒ“ーコンã¯ã€æ˜Žã‚‹ã„å…‰ç·šã‚’ç©ºã¸æ”¾ã¡ã€è¿‘ãã«ã„るプレイヤーã«ãƒ‘ワーを与ãˆã¾ã™ã€‚{*B*}
+作るã«ã¯ã€ã‚¬ãƒ©ã‚¹ã€é»’曜石ã€ã‚¦ã‚£ã‚¶ãƒ¼ã‚’倒ã™ã“ã¨ã§æ‰‹ã«å…¥ã‚‹ãƒã‚¶ãƒ¼ スターを使ã„ã¾ã™ã€‚{*B*}{*B*}
+ビーコンã¯ã€æ—¥ä¸­ã«æ—¥å…‰ãŒå½“ãŸã‚‹å ´æ‰€ã«é…ç½®ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã¾ãŸã€ãƒ“ーコンã¯é‰„ã€é‡‘ã€ã‚¨ãƒ¡ãƒ©ãƒ«ãƒ‰ã€ã¾ãŸã¯ãƒ€ã‚¤ãƒ¤ãƒ¢ãƒ³ãƒ‰ã®ãƒ”ラミッドã®ä¸Šã«é…ç½®ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚{*B*}
+ã©ã®å»ºæä¸Šã«ãƒ“ーコンをé…ç½®ã™ã‚‹ã‹ã¯ã€ãƒ“ーコンã®ãƒ‘ワーã«å½±éŸ¿ã—ã¾ã›ã‚“。{*B*}{*B*}
+ビーコン メニューã§ã€ãƒ“ーコンã®ãƒ—ライマリ パワーを 1 ã¤é¸æŠžã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ピラミッドã®éšŽå±¤ãŒå¢—ãˆã‚‹ã»ã©ã€ãƒ‘ワーã®é¸æŠžè‚¢ãŒå¢—ãˆã¾ã™ã€‚{*B*}
+å°‘ãªãã¨ã‚‚ 4 段以上ã®ãƒ”ラミッド上ã«é…ç½®ã•れãŸãƒ“ーコンã§ã¯ã€ã€Œå›žå¾©ã€ã®ã‚»ã‚«ãƒ³ãƒ€ãƒª パワーã‹ã€ã•らã«å¼·åŠ›ãªãƒ—ライマリ ãƒ‘ãƒ¯ãƒ¼ã‚‚é¸æŠžå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚{*B*}{*B*}
+ビーコンã®ãƒ‘ワーを設定ã™ã‚‹ã«ã¯ã€æ”¯æ‰•ã„スロットã§ã‚¨ãƒ¡ãƒ©ãƒ«ãƒ‰ã€ãƒ€ã‚¤ãƒ¤ãƒ¢ãƒ³ãƒ‰ã€é‡‘ã¾ãŸã¯é‰„ã®ã‚¤ãƒ³ã‚´ãƒƒãƒˆã®ã„ãšã‚Œã‹ã‚’消費ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。{*B*}
+è¨­å®šãŒæ¸ˆã‚€ã¨ã€ãƒ“ーコンã‹ã‚‰ã®ãƒ‘ワーã¯ç„¡é™ã«ç™ºã›ã‚‰ã‚Œã¾ã™ã€‚{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>花ç«</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}ä½¿ã„æ–¹: 花ç«{*ETW*}{*B*}{*B*}
+花ç«ã¯è£…飾アイテムã§ã€æ‰‹å‹•ã€ã¾ãŸã¯ç™ºå°„装置ã‹ã‚‰æ‰“ã¡ä¸Šã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚作るã«ã¯ã€ç´™ã€ç«è–¬ã€ã‚ªãƒ—ションã¨ã—ã¦æ•°ã€…ã®èбç«ã®æ˜Ÿã‚’使用ã—ã¾ã™ã€‚{*B*}
+花ç«ã®æ˜Ÿã®è‰²ã€è‰²å¤‰åŒ–ã€å½¢çжã€ã‚µã‚¤ã‚ºã€åŠ¹æžœ (例: 光跡ã€ç‚¹æ»…) ã¯ã€ä½œæˆæ™‚ã«è¿½åŠ ã®ææ–™ã‚’å«ã‚ã‚‹ã“ã¨ã§ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã§ãã¾ã™ã€‚{*B*}{*B*}
+花ç«ã‚’作るã«ã¯ã€ç«è–¬ã¨ç´™ã‚’æŒã¡ç‰©ã®ä¸Šã«è¡¨ç¤ºã•れる 3x3 ã®ã‚¯ãƒ©ãƒ•ト グリッドã«ç½®ãã¾ã™ã€‚{*B*}
+オプションã¨ã—ã¦ã€ã‚¯ãƒ©ãƒ•ト グリッド上ã«è¤‡æ•°ã®èбç«ã®æ˜Ÿã‚’ç½®ã„ã¦ã€èбç«ã«åŠ ãˆã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚{*B*}
+クラフト グリッドã®ã‚¹ãƒ­ãƒƒãƒˆã«ç½®ãç«è–¬ãŒå¤šããªã‚Œã°ã€èбç«ã®æ˜Ÿã¯ã‚ˆã‚Šé«˜ã„ä½ç½®ã§ç ´è£‚ã—ã¾ã™ã€‚{*B*}{*B*}
+作ã£ãŸèбç«ã¯ã€å–り出ã—å£ã‹ã‚‰å–り出ã›ã¾ã™ã€‚{*B*}{*B*}
+花ç«ã®æ˜Ÿã¯ã€ç«è–¬ã¨æŸ“料をクラフト グリッドã«ç½®ãã¨ä½œã‚Œã¾ã™ã€‚{*B*}
+ - 染料ã¯ã€èбç«ã®æ˜ŸãŒç ´è£‚ã™ã‚‹éš›ã®è‰²ã‚’設定ã—ã¾ã™ã€‚{*B*}
+ - 花ç«ã®æ˜Ÿã®å½¢çжã¯ã€ç™ºç«å‰¤ã€é‡‘塊ã€ç¾½æ ¹ã€ã¾ãŸã¯ç”Ÿã物ã®ãƒ˜ãƒƒãƒ‰ã‚’追加ã™ã‚‹ã“ã¨ã§è¨­å®šã—ã¾ã™ã€‚{*B*}
+ - 光跡や点滅ã¯ã€ãƒ€ã‚¤ãƒ¤ãƒ¢ãƒ³ãƒ‰ã¾ãŸã¯ã‚°ãƒ­ã‚¦ã‚¹ãƒˆãƒ¼ãƒ³ã®ç²‰ã‚’使ã†ã“ã¨ã§è¿½åŠ ã§ãã¾ã™ã€‚{*B*}{*B*}
+花ç«ã®æ˜Ÿã‚’作ã£ãŸå¾Œã€ã•ã‚‰ã«æŸ“料を加ãˆã‚‹ã“ã¨ã§ã€èбç«ã®æ˜Ÿã®è‰²å¤‰åŒ–を決ã‚ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>ホッパー</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}ä½¿ã„æ–¹: ホッパー{*ETW*}{*B*}{*B*}
+ホッパーã¯ã€å…¥ã‚Œç‰©ã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’出ã—入れã™ã‚‹ãŸã‚ã«ã€ã¾ãŸã€ãã®ä¸Šã«æŠ•ã’られãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’è‡ªå‹•çš„ã«æ‹¾ã†ã®ã«ä½¿ã„ã¾ã™ã€‚{*B*}
+ホッパーã¯èª¿åˆå°ã€ãƒã‚§ã‚¹ãƒˆã€ç™ºå°„装置ã€ãƒ‰ãƒ­ãƒƒãƒ‘ーã€ãƒã‚§ã‚¹ãƒˆä»˜ãトロッコã€ãƒ›ãƒƒãƒ‘ー付ãトロッコã€ãŠã‚ˆã³ä»–ã®ãƒ›ãƒƒãƒ‘ーã«å¯¾ã—ã¦ä½œç”¨ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}{*B*}
+ホッパーã¯ã€ãã®ä¸Šã«ä½ç½®ã™ã‚‹é©åˆ‡ãªå…¥ã‚Œç‰©ã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’å¸ã„出ã—ç¶šã‘ã¾ã™ã€‚ã¾ãŸã€ä¿ç®¡ã•れãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’出力先ã®å…¥ã‚Œç‰©ã«æ ¼ç´ã—よã†ã¨ã—ã¾ã™ã€‚{*B*}
+レッドストーンãŒé›»æºã®å ´åˆã€ãƒ›ãƒƒãƒ‘ーã¯éžã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ãªã‚Šã€ã‚¢ã‚¤ãƒ†ãƒ ã®å¸ã„出ã—ã‚‚æ ¼ç´ã‚‚åœæ­¢ã—ã¾ã™ã€‚{*B*}{*B*}
+ホッパーã¯å‘ã„ã¦ã„ã‚‹æ–¹å‘ã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’出ã—ã¾ã™ã€‚ホッパーãŒç‰¹å®šã®ãƒ–ロックã«å‘ãよã†ã«ã™ã‚‹ã«ã¯ã€ãã®ãƒ–ロックã«å‘ã‘ã¦ã—ã®ã³è¶³ã§ãƒ›ãƒƒãƒ‘ーを設置ã—ã¾ã™ã€‚ {*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>ドロッパー</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}ä½¿ã„æ–¹: ドロッパー{*ETW*}{*B*}{*B*}
+レッドストーンãŒé›»æºã®å ´åˆã€ãƒ‰ãƒ­ãƒƒãƒ‘ãƒ¼ã¯æ ¼ç´ã—ã¦ã„るアイテムをランダム㫠1 ã¤ã€åœ°ä¸Šã«ãƒ‰ãƒ­ãƒƒãƒ—ã—ã¾ã™ã€‚{*CONTROLLER_ACTION_USE*} を使ã£ã¦ãƒ‰ãƒ­ãƒƒãƒ‘ーを開ãã¨ã€è‡ªåˆ†ã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’ãƒ‰ãƒ­ãƒƒãƒ‘ãƒ¼ã«æŠ•å…¥ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚{*B*}
+ドロッパーãŒãƒã‚§ã‚¹ãƒˆã¾ãŸã¯ä»–ã®ç¨®é¡žã®å…¥ã‚Œç‰©ã«é¢ã—ã¦ã„ã‚‹å ´åˆã€ã‚¢ã‚¤ãƒ†ãƒ ã¯ãƒ‰ãƒ­ãƒƒãƒ‘ーã§ã¯ãªãã€ãã¡ã‚‰ã¸æŠ•å…¥ã•れã¾ã™ã€‚ドロッパーを多数ã¤ãªã’ã¦è¨­ç½®ã™ã‚Œã°ã€é›¢ã‚ŒãŸå ´æ‰€ã¨ã®é–“ã§ã‚¢ã‚¤ãƒ†ãƒ ã‚’é‹ã¹ã¾ã™ã€‚ãã®ã‚ˆã†ã«å‹•作ã•ã›ã‚‹ã«ã¯ã€é›»æºã‚’交互ã«ã‚ªãƒ³ã¨ã‚ªãƒ•ã«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
+ </value>
</data>
<data name="IDS_DESC_SWORD"><value>手よりも攻撃力ãŒé«˜ã„</value>
</data>
@@ -503,7 +560,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_HELMET_LEATHER"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +1</value>
</data>
-<data name="IDS_DESC_CHESTPLATE_LEATHER"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3</value>
+<data name="IDS_DESC_CHESTPLATE_LEATHER"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3。</value>
</data>
<data name="IDS_DESC_LEGGINGS_LEATHER"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +2</value>
</data>
@@ -513,7 +570,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_CHESTPLATE_CHAIN"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +5</value>
</data>
-<data name="IDS_DESC_LEGGINGS_CHAIN"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +4</value>
+<data name="IDS_DESC_LEGGINGS_CHAIN"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +4。</value>
</data>
<data name="IDS_DESC_BOOTS_CHAIN"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +1</value>
</data>
@@ -529,17 +586,17 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_CHESTPLATE_GOLD"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +5</value>
</data>
-<data name="IDS_DESC_LEGGINGS_GOLD"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3</value>
+<data name="IDS_DESC_LEGGINGS_GOLD"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3。</value>
</data>
<data name="IDS_DESC_BOOTS_GOLD"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +1</value>
</data>
-<data name="IDS_DESC_HELMET_DIAMOND"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3</value>
+<data name="IDS_DESC_HELMET_DIAMOND"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3。</value>
</data>
<data name="IDS_DESC_CHESTPLATE_DIAMOND"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +8</value>
</data>
<data name="IDS_DESC_LEGGINGS_DIAMOND"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +6</value>
</data>
-<data name="IDS_DESC_BOOTS_DIAMOND"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3</value>
+<data name="IDS_DESC_BOOTS_DIAMOND"><value>装備ã™ã‚‹ã¨ã‚¢ãƒ¼ãƒžãƒ¼ãƒã‚¤ãƒ³ãƒˆ +3。</value>
</data>
<data name="IDS_DESC_INGOT"><value>光沢を放ã¤å»¶ã¹æ£’ã€é“å…·ã‚’ä½œã‚‹ææ–™ã¨ã—ã¦ä½¿ã†ã€‚ã‹ã¾ã©ã§é‰±çŸ³ã‚’精錬ã—ã¦ä½œã‚‹</value>
</data>
@@ -604,19 +661,45 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_MAP"><value>æ‰‹ã«æŒã£ã¦ã„ã‚‹ã¨ã€æŽ¢ç´¢æ¸ˆã¿ã®ã‚¨ãƒªã‚¢ã®åœ°å›³ã‚’表示ã™ã‚‹ã€‚é“を確èªã™ã‚‹ã®ã«ä½¿ã†</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>使用ã™ã‚‹ã¨ã€ãƒ—レイヤーã®ä¸–界内ã§ã®ç¾åœ¨ä½ç½®å‘¨è¾ºã®åœ°å›³ã«ãªã‚‹ã€‚探検ã™ã‚‹ã«ã¤ã‚Œã¦å›³é¢ãŒåŸ‹ã¾ã£ã¦ã„ã</value>
+ </data>
<data name="IDS_DESC_BOW"><value>矢を射る攻撃ãŒã§ãã‚‹</value>
</data>
<data name="IDS_DESC_ARROW"><value>弓ã¨çµ„ã¿åˆã‚ã›ã¦ã€æ­¦å™¨ã¨ã—ã¦ä½¿ã†</value>
</data>
-<data name="IDS_DESC_BREAD"><value>2.5{*ICON_SHANK_01*} 回復ã™ã‚‹</value>
+<data name="IDS_DESC_NETHER_STAR"><value>ウィザーãŒè½ã¨ã™ã€‚ビーコンを作るã®ã«ä½¿ã†ã€‚</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>作動ã™ã‚‹ã¨ã€è‰²ã¨ã‚Šã©ã‚Šã®ç«èŠ±ã‚’ä½œã‚Šå‡ºã™ã€‚ãã®è‰²ã€å½¢çжã€è‰²å¤‰åŒ–ã¯ã€èбç«ã‚’作る際ã«ä½¿ã†èбç«ã®æ˜Ÿã«ã‚ˆã£ã¦æ±ºã¾ã‚‹ã€‚</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>花ç«ã®è‰²ã€åŠ¹æžœã€å½¢çŠ¶ã‚’æ±ºã‚ã‚‹ãŸã‚ã«ä½¿ã†ã€‚</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>レッドストーン回路ã§ã€ä¿¡å·å¼·åº¦ã‚’ç¶­æŒã€æ¯”較ã€ã¾ãŸã¯æ¸›ç®—ã—ãŸã‚Šã€ç‰¹å®šã®ãƒ–ロックã®çŠ¶æ…‹ã‚’æ¸¬å®šã—ãŸã‚Šã™ã‚‹ãŸã‚ã«ä½¿ã†ã€‚</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>移動ã™ã‚‹ TNT ブロックã¨ã—ã¦æ©Ÿèƒ½ã™ã‚‹ã€ãƒˆãƒ­ãƒƒã‚³ã®ä¸€ç¨®ã€‚</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>日光 (ã¾ãŸã¯ãã®ä¸è¶³) ã«å¿œã˜ã¦ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ä¿¡å·ã‚’出力ã™ã‚‹ãƒ–ロック。</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>ホッパーã¨åŒã˜ã‚ˆã†ã«æ©Ÿèƒ½ã™ã‚‹ç‰¹åˆ¥ãªç¨®é¡žã®ãƒˆãƒ­ãƒƒã‚³ã€‚軌é“上ã«è½ã¡ã¦ã„るアイテムやã€ä¸Šã«ä½ç½®ã™ã‚‹å…¥ã‚Œç‰©ã‹ã‚‰ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’åŽé›†ã™ã‚‹ã€‚</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>馬ã«è£…ç€ã§ãる特別ãªç¨®é¡žã®é˜²å…·ã€‚防御力 +5。</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>馬ã«è£…ç€ã§ãる特別ãªç¨®é¡žã®é˜²å…·ã€‚防御力 +7。</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>馬ã«è£…ç€ã§ãる特別ãªç¨®é¡žã®é˜²å…·ã€‚防御力 +11。</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>生ã物をプレイヤーã¾ãŸã¯ãƒ•ã‚§ãƒ³ã‚¹ã®æŸ±ã«ã¤ãªããŸã‚ã«ä½¿ã†ã€‚</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>世界内ã®ç”Ÿã物ã«åå‰ã‚’ã¤ã‘ã‚‹ã®ã«ä½¿ã†ã€‚</value>
+</data>
+<data name="IDS_DESC_BREAD"><value>2.5{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚</value>
</data>
-<data name="IDS_DESC_CAKE"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚6 回ã¾ã§ä½¿ç”¨ã§ãã‚‹</value>
+<data name="IDS_DESC_CAKE"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚6 回ã¾ã§ä½¿ç”¨ã§ãる。</value>
</data>
-<data name="IDS_DESC_COOKIE"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹</value>
+<data name="IDS_DESC_COOKIE"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚</value>
</data>
-<data name="IDS_DESC_MELON_SLICE"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹</value>
+<data name="IDS_DESC_MELON_SLICE"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚</value>
</data>
-<data name="IDS_DESC_MUSHROOMSTEW"><value>3{*ICON_SHANK_01*} 回復ã™ã‚‹</value>
+<data name="IDS_DESC_MUSHROOMSTEW"><value>3{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚</value>
</data>
<data name="IDS_DESC_CHICKEN_RAW"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚ã‹ã¾ã©ã§èª¿ç†ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã€‚ç—…æ°—ã«ãªã‚‹å ´åˆã‚‚ã‚ã‚‹</value>
</data>
@@ -634,7 +717,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_FISH_COOKED"><value>2.5{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚生魚をã‹ã¾ã©ã§èª¿ç†ã™ã‚‹ã¨ã§ãã‚‹</value>
</data>
-<data name="IDS_DESC_APPLE"><value>2{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚金ã®ãƒªãƒ³ã‚´ã®ææ–™ã¨ãªã‚‹</value>
+<data name="IDS_DESC_APPLE"><value>2{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚金ã®ãƒªãƒ³ã‚´ã®ææ–™ã¨ãªã‚‹ã€‚</value>
</data>
<data name="IDS_DESC_GOLDENAPPLE"><value>2{*ICON_SHANK_01*} 回復ã—ã€ã•ら㫠HP ㌠4 ç§’é–“ã€è‡ªå‹•回復ã™ã‚‹ã€‚リンゴã¨é‡‘ã®å¡Šã‹ã‚‰ä½œã‚‹</value>
</data>
@@ -659,7 +742,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_POWEREDRAIL"><value>é›»æºãŒå…¥ã£ã¦ã„る時ã€ä¸Šã‚’走るトロッコを加速ã•ã›ã‚‹ã€‚é›»æºãŒå…¥ã£ã¦ã„ãªã„時ã¯ã€ä¸Šã§ãƒˆãƒ­ãƒƒã‚³ãŒæ­¢ã¾ã‚‹</value>
</data>
-<data name="IDS_DESC_DETECTORRAIL"><value>トロッコ専用ã®é‡é‡æ„ŸçŸ¥æ¿ã¨ã—ã¦æ©Ÿèƒ½ã™ã‚‹ã€‚é›»æºãŒå…¥ã£ã¦ã„る時ã«ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ã®ä¿¡å·ã‚’é€ã‚‹</value>
+<data name="IDS_DESC_DETECTORRAIL"><value>トロッコ専用ã®é‡é‡æ„ŸçŸ¥æ¿ã¨ã—ã¦æ©Ÿèƒ½ã™ã‚‹ã€‚é›»æºãŒå…¥ã£ã¦ã„る時ã«ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ã®ä¿¡å·ã‚’é€ã‚‹ã€‚</value>
</data>
<data name="IDS_DESC_MINECART"><value>プレイヤーや動物ã€ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã‚’ä¹—ã›ã¦ã€ãƒ¬ãƒ¼ãƒ«ã®ä¸Šã‚’移動ã§ãã‚‹</value>
</data>
@@ -716,7 +799,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_PAPER"><value>本や地図を作るã®ã«ä½¿ã†</value>
</data>
-<data name="IDS_DESC_BOOK"><value>本棚を作るã®ã«ä½¿ã£ãŸã‚Šã€ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã—ã¦ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã—ãŸæœ¬ã‚’作るãŸã‚ã«ä½¿ã†</value>
+<data name="IDS_DESC_BOOK"><value>本棚を作るã®ã«ä½¿ã£ãŸã‚Šã€ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã—ã¦ã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã—ãŸæœ¬ã‚’作るãŸã‚ã«ä½¿ã†ã€‚</value>
</data>
<data name="IDS_DESC_BOOKSHELF"><value>エンãƒãƒ£ãƒ³ãƒˆãƒ†ãƒ¼ãƒ–ルã®å‘¨å›²ã«ç½®ã„ã¦ã€ã‚ˆã‚Šå¼·åŠ›ãªã‚¨ãƒ³ãƒãƒ£ãƒ³ãƒˆã‚’作る</value>
</data>
@@ -932,100 +1015,158 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DESC_SKULL"><value>ヘッド類ã¯é£¾ã‚Šä»˜ã‘ã¨ã—ã¦ä¸¦ã¹ãŸã‚Šã€ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã®ã‚¹ãƒ­ãƒƒãƒˆã‹ã‚‰ãƒžã‚¹ã‚¯ã¨ã—ã¦ç€ç”¨ã‚‚ã§ãã‚‹</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>コマンドを実行ã™ã‚‹ã®ã«ä½¿ã†ã€‚</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>空ã«å‘ã‘ã¦å…‰ç·šã‚’放ã¡ã€ä»˜è¿‘ã®ãƒ—レイヤーã«ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹åŠ¹æžœã‚’ã‚‚ãŸã‚‰ã™ã“ã¨ãŒã§ãる。</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>中ã«ãƒ–ロックã¨ã‚¢ã‚¤ãƒ†ãƒ ã‚’ä¿ç®¡ã™ã‚‹ã€‚2 ã¤ã®ãƒã‚§ã‚¹ãƒˆã‚’隣åŒå£«ã«ç½®ãã¨ã€å®¹é‡ 2 å€ã®å¤§ããªãƒã‚§ã‚¹ãƒˆã‚’作るã“ã¨ãŒã§ãる。トラップ ãƒã‚§ã‚¹ãƒˆã¯é–‹ã„ãŸæ™‚ã«ã€ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³é›»æºã‚‚供給ã™ã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>レッドストーンã«ã‚ˆã‚‹é›»æºã‚’供給ã™ã‚‹ã€‚æ¿ä¸Šã®ã‚¢ã‚¤ãƒ†ãƒ ãŒå¤šã„ã»ã©ã€ãƒãƒ£ãƒ¼ã‚¸ã¯å¼·åŠ›ã«ãªã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>レッドストーンã«ã‚ˆã‚‹é›»æºã‚’供給ã™ã‚‹ã€‚æ¿ä¸Šã®ã‚¢ã‚¤ãƒ†ãƒ ãŒå¤šã„ã»ã©ã€ãƒãƒ£ãƒ¼ã‚¸ã¯å¼·åŠ›ã«ãªã‚‹ã€‚è»½é‡æ¿ã‚ˆã‚Šã‚‚é‡ã•ã‚’å¿…è¦ã¨ã™ã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>レッドストーン電æºã¨ã—ã¦ä½¿ã†ã€‚レッドストーンã«ä½œã‚Šæˆ»ã™ã“ã¨ãŒã§ãる。</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>アイテムã®å—ã‘å–りã€ã¾ãŸã¯å…¥ã‚Œç‰©ã‹ã‚‰ã®ã‚¢ã‚¤ãƒ†ãƒ ã®å‡ºã—入れã«ä½¿ã‚れる。</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>レールã®ä¸€ç¨®ã€‚ホッパー付ãトロッコを有効ã¾ãŸã¯ç„¡åйã«ã—ãŸã‚Šã€TNT 付ãトロッコを動作ã•ã›ãŸã‚Šã§ãる。</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>アイテムをä¿ç®¡ã¾ãŸã¯è½ã¨ã™ã®ã«ä½¿ã‚れる。レッドストーン電æºãŒã‚ã‚‹å ´åˆã«ã¯ã€ä»–ã®å…¥ã‚Œç‰©ã¸ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç§»ã™ã®ã«ã‚‚使ãˆã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>カラフルãªãƒ–ロック。堅焼ã粘土を染色ã—ã¦ä½œã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>馬ã€ãƒ­ãƒã€ã¾ãŸã¯ãƒ©ãƒã«é¤Œã¨ã—ã¦ä¸Žãˆã‚‹ã“ã¨ãŒã§ãã€10 ãƒãƒ¼ãƒˆã¾ã§å›žå¾©ã•ã›ã‚‹ã€‚å­é¦¬ã‚„å­ãƒ­ãƒã®æˆé•·ã‚’æ—©ã‚る効果もã‚る。</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>ã‹ã¾ã©ã®ä¸­ã§ç²˜åœŸã‚’精錬ã—ã¦ä½œã‚‰ã‚Œã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>ã‚¬ãƒ©ã‚¹ã¨æŸ“æ–™ã‹ã‚‰ä½œã‚‰ã‚Œã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>ステンドグラスã‹ã‚‰ä½œã‚‰ã‚Œã‚‹ã€‚</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>木炭をä¿ç®¡ã™ã‚‹ã®ã«ä½¿ãˆã‚‹ã€‚ã‹ã¾ã©ã§ç‡ƒæ–™ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã‚‹</value>
+ </data>
<data name="IDS_SQUID"><value>イカ</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>倒ã™ã¨å¢¨è¢‹ã‚’è½ã¨ã™</value>
- </data>
+ </data>
<data name="IDS_COW"><value>牛</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>倒ã™ã¨é©ã‚’è½ã¨ã™ã€‚ãƒã‚±ãƒ„ãŒã‚れã°ãƒŸãƒ«ã‚¯ã‚‚å–れる</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>羊</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>毛を刈るã¨ãウールをè½ã¨ã™ (æ¯›ãŒæ®‹ã£ã¦ã„ã‚‹å ´åˆ)。ウールã¯ã„ã‚ã„ã‚ãªè‰²ã«æŸ“ã‚られる</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>ニワトリ</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>倒ã™ã¨ç¾½æ ¹ã‚’è½ã¨ã™ã€‚タマゴをæŒã£ã¦ã„ã‚‹å ´åˆã‚‚ã‚ã‚‹</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>豚</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>倒ã™ã¨è±šè‚‰ã‚’è½ã¨ã™ã€‚éžãŒã‚れã°ä¹—ã‚‹ã“ã¨ã‚‚ã§ãã‚‹</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>オオカミ</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>普段ã¯ãŠã¨ãªã—ã„ãŒã€æ”»æ’ƒã™ã‚‹ã¨åæ’ƒã—ã¦ãる。骨を使ã†ã¨æ‰‹ãªãšã‘ã‚‹ã“ã¨ãŒã§ãã€ãƒ—レイヤーã«ã¤ã„ã¦å›žã£ã¦ã€ãƒ—レイヤーを攻撃ã—ã¦ãる敵を攻撃ã—ã¦ãれる</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>è¿‘ã¥ãã™ãŽã‚‹ã¨çˆ†ç™ºã™ã‚‹!</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>ガイコツ</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>矢を放ã£ã¦ãる。倒ã™ã¨çŸ¢ã‚’è½ã¨ã™</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>クモ</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>è¿‘ã¥ãã¨æ”»æ’ƒã—ã¦ãる。å£ã‚’登るã“ã¨ãŒã§ãる。倒ã™ã¨ç³¸ã‚’è½ã¨ã™</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>ゾンビ</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>è¿‘ã¥ãã¨æ”»æ’ƒã—ã¦ãã‚‹</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>ゾンビ Pigman</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>最åˆã¯ãŠã¨ãªã—ã„ãŒã€1 匹を攻撃ã™ã‚‹ã¨é›†å›£ã§åæ’ƒã—ã¦ãã‚‹</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>当ãŸã‚‹ã¨çˆ†ç™ºã™ã‚‹ç«ã®çŽ‰ã‚’æ”¾ã£ã¦ãã‚‹</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>スライム</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>ダメージを与ãˆã‚‹ã¨ã€å°ã•ãªã‚¹ãƒ©ã‚¤ãƒ ã«åˆ†è£‚ã™ã‚‹</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>照準をå‘ã‘ã‚‹ã¨æ”»æ’ƒã—ã¦ãる。ブロックを移動ã§ãã‚‹</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Silverfish</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>攻撃ã™ã‚‹ã¨ã€è¿‘ãã«éš ã‚Œã¦ã„ã‚‹ Silverfish も集ã¾ã£ã¦ãる。石ブロックã®ä¸­ã«éš ã‚Œã¦ã„ã‚‹</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>洞窟グモ</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>ç‰™ã«æ¯’ãŒã‚ã‚‹</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Mooshroom</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>空ã®ãŠã‚んを使ã†ã¨ãã®ã“ã‚·ãƒãƒ¥ãƒ¼ãŒæŽ¡ã‚Œã‚‹ã€‚ãƒã‚µãƒŸã§æ¯›åˆˆã‚Šã‚’ã™ã‚‹ã¨ãã®ã“ã‚’è½ã¨ã™ãŒã€æ™®é€šã®ç‰›ã«ãªã£ã¦ã—ã¾ã†</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>スノー ゴーレム</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>雪ブロックã¨ã‚«ãƒœãƒãƒ£ã§ä½œã‚Œã‚‹ã‚´ãƒ¼ãƒ¬ãƒ ã€‚作ã£ãŸäººã®æ•µã«å‘ã‹ã£ã¦é›ªçŽ‰ã‚’æŠ•ã’ã¤ã‘ã‚‹</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>エンダー ドラゴン</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>æžœã¦ã®ä¸–界ã«å­˜åœ¨ã™ã‚‹å¤§ããªé»’竜</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Blaze</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>暗黒界ã«å‡ºç¾ã™ã‚‹æ•µã€‚ä¸»ã«æš—黒砦内ã«ã„る。倒ã™ã¨ Blaze ロッドをè½ã¨ã™</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>マグマ キューブ</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>暗黒界ã«å‡ºç¾ã™ã‚‹ã€‚Slime åŒæ§˜ã€å€’ã™ã¨å°ã•㪠Lava Slime ã«åˆ†è£‚ã™ã‚‹</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>æ‘人</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>ヤマãƒã‚³</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>ジャングルã«ç”Ÿæ¯ã€‚生魚を与ãˆã¦é£¼ã„慣らã›ã‚‹ã€‚䏿„ãªå‹•ãã«é©šã„ã¦ã™ãã«é€ƒã’ã‚‹ãŸã‚ã€æŽ¥è¿‘ã™ã‚‹ã®ã¯ç°¡å˜ã§ã¯ãªã„</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>アイアン ゴーレム</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>æ‘ã«å‡ºç¾ã—ã¦æ‘人を守ã£ã¦ãれる。鉄ã®ãƒ–ロックã¨ã‚«ãƒœãƒãƒ£ã§ä½œã‚‹ã“ã¨ã‚‚ã§ãã‚‹</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>コウモリ</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>ã“ã®ç©ºé£›ã¶ç”Ÿã物ã¯ã€æ´žçªŸã‚„ãã®ä»–ã®å¤§ããªé–‰ã˜ãŸç©ºé–“ã§è¦‹ã¤ã‹ã‚‹ã€‚</value>
+ </data>
+<data name="IDS_WITCH"><value>ウィッãƒ</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>ã“ã®æ•µã¯æ²¼åœ°ã§è¦‹ã‚‰ã‚Œã€ãƒãƒ¼ã‚·ãƒ§ãƒ³ã‚’投ã’ã¦æ”»æ’ƒã—ã¦ãる。倒ã™ã¨ãƒãƒ¼ã‚·ãƒ§ãƒ³ã‚’è½ã¨ã™ã€‚</value>
+ </data>
+<data name="IDS_HORSE"><value>馬</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>ã“ã®å‹•ç‰©ã¯æ‰‹ãªãšã‘ã¦ã€ä¹—ã‚‹ã“ã¨ãŒã§ãる。</value>
+ </data>
+<data name="IDS_DONKEY"><value>ロãƒ</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>ã“ã®å‹•ç‰©ã¯æ‰‹ãªãšã‘ã¦ã€ä¹—ã‚‹ã“ã¨ãŒã§ãる。ãƒã‚§ã‚¹ãƒˆã‚’装ç€ã™ã‚‹ã“ã¨ã‚‚ã§ãる。</value>
+ </data>
+<data name="IDS_MULE"><value>ラãƒ</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>馬ã¨ãƒ­ãƒã®äº¤é…ã«ã‚ˆã£ã¦ç”Ÿã¾ã‚Œã‚‹ã€‚ã“ã®å‹•ç‰©ã¯æ‰‹ãªãšã‘ã¦ã€ä¹—ã£ãŸã‚Šã€ãƒã‚§ã‚¹ãƒˆã‚’é‹ã°ã›ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãる。</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>馬ã®ã‚¾ãƒ³ãƒ“</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>馬ã®ã‚¹ã‚±ãƒ«ãƒˆãƒ³</value>
+ </data>
+<data name="IDS_WITHER"><value>ウィザー</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>ウィザー スカルã¨ã‚½ã‚¦ãƒ« サンドã‹ã‚‰ä½œã‚‰ã‚Œã‚‹ã€‚爆発ã™ã‚‹ã‚¹ã‚«ãƒ«ã‚’æ’ƒã£ã¦ãる。</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1372,6 +1513,8 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_ITEM_MAP"><value>地図</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>空ã£ã½ã®åœ°å›³</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>音楽ディスク: 13</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>音楽ディスク: cat</value>
@@ -1474,6 +1617,28 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Creeper ヘッド</value>
</data>
+<data name="IDS_NETHER_STAR"><value>ãƒã‚¶ãƒ¼ã‚¹ã‚¿ãƒ¼</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>ロケット花ç«</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>花ç«ã®æ˜Ÿ</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>レッドストーン コンパレーター</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>TNT 付ãトロッコ</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>ホッパー付ãトロッコ</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>鉄ã®é¦¬ã‚ˆã‚ã„</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>金ã®é¦¬ã‚ˆã‚ã„</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>ダイヤモンドã®é¦¬ã‚ˆã‚ã„</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>首ã²ã‚‚</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>åæœ­</value>
+ </data>
<data name="IDS_TILE_STONE"><value>石</value>
</data>
<data name="IDS_TILE_GRASS"><value>è‰ãƒ–ロック</value>
@@ -1490,6 +1655,8 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>ã‚¸ãƒ£ãƒ³ã‚°ãƒ«ã®æœ¨ã®æ¿</value>
</data>
+<data name="IDS_TILE_PLANKS"><value> æœ¨ã®æ¿ (全種類)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>苗木</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>樫ã®è‹—木</value>
@@ -1826,6 +1993,190 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_TILE_SKULL"><value>スカル</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>コマンド ブロック</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>ビーコン</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>トラップ ãƒã‚§ã‚¹ãƒˆ</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>é‡é‡æ„ŸçŸ¥æ¿ (軽)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>é‡é‡æ„ŸçŸ¥æ¿ (é‡)</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>レッドストーン コンパレーター</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>日照センサー</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>レッドストーンã®ãƒ–ロック</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>ホッパー</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>アクティベーター レール</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>ドロッパー</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>色付ã粘土</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>å¹²ã—è‰ã®ä¿µ</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>堅焼ã粘土</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>石炭ã®ãƒ–ロック</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>é»’ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>赤ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>ç·‘ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>茶色ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>é’ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>ç´«ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>é’ç·‘ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>è–„ç°è‰²ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>ç°è‰²ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>ピンクã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>黄緑ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>黄色ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>空色ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>赤紫ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>オレンジã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>白ã®è‰²ä»˜ã粘土</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>ステンドグラス</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>é»’ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>赤ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>ç·‘ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>茶色ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>é’ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>ç´«ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>赤紫ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>è–„ç°è‰²ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>ç°è‰²ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>ピンクã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>黄緑ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>黄色ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>空色ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>赤紫ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>オレンジã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>白ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>ステンドグラス窓</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>é»’ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>赤ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>ç·‘ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>茶色ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>é’ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>ç´«ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>赤紫ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>è–„ç°è‰²ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>ç°è‰²ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>ピンクã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>黄緑ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>黄色ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>空色ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>赤紫ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>オレンジã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>白ã®ã‚¹ãƒ†ãƒ³ãƒ‰ã‚°ãƒ©ã‚¹çª“</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>å°çމ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>大玉</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>星形</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Creeper å½¢</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>破裂</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>未知ã®å½¢</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>é»’</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>赤</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>ç·‘</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>茶色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>é’</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>ç´«</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>é’ç·‘</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>è–„ç°è‰²</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>ç°è‰²</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>ピンク</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>黄緑</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>黄色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>空色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>赤紫</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>オレンジ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>白</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>カスタム</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>変化後ã®è‰²</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>点滅</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>光跡</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>滞空時間:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>ç¾åœ¨ã®æ“作方法</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>レイアウト</value>
@@ -2003,8 +2354,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
ã“れãŒã‚ãªãŸã®æŒã¡ç‰©ã§ã™ã€‚æ‰‹ã§æŒã£ã¦ä½¿ç”¨ã§ãるアイテムã¨ã€æ‰€æœ‰ã—ã¦ã„るアイテムã®ãƒªã‚¹ãƒˆã€ç¾åœ¨è£…å‚™ã—ã¦ã„る防具を確èªã§ãã¾ã™
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
æŒã¡ç‰©ã®èª¬æ˜Žã‚’ç¶šã‘ã‚‹: {*CONTROLLER_VK_A*}{*B*}
æŒã¡ç‰©ã®èª¬æ˜Žã‚’飛ã°ã™: {*CONTROLLER_VK_B*}
@@ -2025,7 +2375,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- アイテムã®èª¬æ˜Žã‚’見ãŸã„時ã¯ã€ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚’アイテムã®ä¸Šã«å‹•ã‹ã—ã¦ã‹ã‚‰ {*CONTROLLER_VK_RT*} を押ã—ã¦ãã ã•ã„
+ アイテムã®èª¬æ˜Žã‚’見ãŸã„時ã¯ã€ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚’アイテムã®ä¸Šã«å‹•ã‹ã—ã¦ã‹ã‚‰ {*CONTROLLER_ACTION_MENU_PAGEDOWN*} を押ã—ã¦ãã ã•ã„
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2060,7 +2410,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- アイテムã®èª¬æ˜Žã‚’見ãŸã„時ã¯ã€ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚’アイテムã®ä¸Šã«å‹•ã‹ã—ã¦ã‹ã‚‰ {*CONTROLLER_VK_RT*} を押ã—ã¾ã™
+ アイテムã®èª¬æ˜Žã‚’見ãŸã„時ã¯ã€ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã‚’アイテムã®ä¸Šã«å‹•ã‹ã—ã¦ã‹ã‚‰ {*CONTROLLER_ACTION_MENU_PAGEDOWN*} を押ã—ã¦ãã ã•ã„
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2442,7 +2792,7 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</value>
</data>
<data name="IDS_TUTORIAL_TASK_ACTIVATE_PORTAL"><value>
- ãƒãƒ¼ã‚¿ãƒ«ã‚’èµ·å‹•ã™ã‚‹ã«ã¯ã€ç«æ‰“çŸ³ã¨æ‰“ã¡é‡‘ã§ã€ãƒ•レーム内ã®é»’曜石ã«ç«ã‚’ã¤ã‘ã¾ã—ょã†ã€‚æž ãŒå£Šã‚ŒãŸã‚Šã€è¿‘ãã§çˆ†ç™ºãŒèµ·ããŸã‚Šã€æ¶²ä½“ã‚’æµã—ãŸã‚Šã™ã‚‹ã¨ã€ãƒãƒ¼ã‚¿ãƒ«ã¯åœæ­¢ã—ã¾ã™
+ ãƒãƒ¼ã‚¿ãƒ«ã‚’èµ·å‹•ã™ã‚‹ã«ã¯ã€ç«æ‰“çŸ³ã¨æ‰“ã¡é‡‘ã§ã€ãƒ•レーム内ã®é»’曜石ã«ç«ã‚’ã¤ã‘ã¾ã—ょã†ã€‚æž ãŒå£Šã‚ŒãŸã‚Šã€è¿‘ãã§çˆ†ç™ºãŒèµ·ããŸã‚Šã€æ¶²ä½“ã‚’æµã—ãŸã‚Šã™ã‚‹ã¨ã€ãƒãƒ¼ã‚¿ãƒ«ã¯åœæ­¢ã—ã¾ã™ã€‚
</value>
</data>
<data name="IDS_TUTORIAL_TASK_USE_PORTAL"><value>
@@ -2607,6 +2957,211 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
ã™ã§ã«å分知ã£ã¦ã„ã‚‹å ´åˆã¯ {*CONTROLLER_VK_B*} を押ã—ã¦ãã ã•ã„。
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ ã“れã¯é¦¬ã®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒª インターフェイスã§ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}続行ã™ã‚‹ã«ã¯ {*CONTROLLER_VK_A*} を押ã—ã¾ã™ã€‚
+ {*B*}馬ã®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã®ä½¿ã„方を既ã«çŸ¥ã£ã¦ã„ã‚‹å ´åˆã¯ã€{*CONTROLLER_VK_B*} を押ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ 馬ã®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã‚’使ã†ã¨ã€è‡ªåˆ†ã®é¦¬ã€ãƒ­ãƒã€ã¾ãŸã¯ãƒ©ãƒã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç§»ã—ãŸã‚Šã€è£…å‚™ã•ã›ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ 馬ã«éžã‚’ã®ã›ã‚‹ã«ã¯ã€éžã‚¹ãƒ­ãƒƒãƒˆã«éžã‚’ç½®ãã¾ã™ã€‚防具スロットã«é¦¬ã‚ˆã‚ã„ã‚’ç½®ã‘ã°ã€é¦¬ã«é˜²å…·ã‚’装備ã•ã›ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§ã¯ã€è‡ªåˆ†ã®æŒã¡ç‰©ã¨ãƒ­ãƒã¾ãŸã¯ãƒ©ãƒã«è£…ç€ã—ãŸéžè¢‹ã¨ã®é–“ã§ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚’移動ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>馬を見ã¤ã‘ã¾ã—ãŸã€‚</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>ロãƒã‚’見ã¤ã‘ã¾ã—ãŸã€‚</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>ラãƒã‚’見ã¤ã‘ã¾ã—ãŸã€‚</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}馬ã€ãƒ­ãƒã€ãƒ©ãƒã«ã¤ã„ã¦ã‚‚ã£ã¨çŸ¥ã‚‹ã«ã¯ {*CONTROLLER_VK_A*} を押ã—ã¾ã™ã€‚
+ {*B*}馬ã€ãƒ­ãƒã€ãƒ©ãƒã«ã¤ã„ã¦æ—¢ã«çŸ¥ã£ã¦ã„ã‚‹å ´åˆã¯ã€{*CONTROLLER_VK_B*} を押ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ 馬ã¨ãƒ­ãƒã¯ä¸»ã«ã²ã‚‰ã‘ãŸè‰åŽŸã§è¦‹ã¤ã‹ã‚Šã¾ã™ã€‚ラãƒã¯ãƒ­ãƒã¨é¦¬ã‹ã‚‰ç¹æ®–ã§ãã¾ã™ãŒã€ãれ自体ã§ã¯å­ã‚’産ã¿ã¾ã›ã‚“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ 馬ã€ãƒ­ãƒã€ãƒ©ãƒã®æˆä½“ã«ã¯ä¹—ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãŸã ã—防具を装備ã§ãã‚‹ã®ã¯é¦¬ã ã‘ã§ã™ã€‚ã‚¢ã‚¤ãƒ†ãƒ ã‚’é‹æ¬ã™ã‚‹ãŸã‚ã®éžè¢‹ã‚’ç€ã‘られるã®ã¯ãƒ©ãƒã¨ãƒ­ãƒã ã‘ã§ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ 馬ã€ãƒ­ãƒã€ãƒ©ãƒã¯ä½¿ã†å‰ã«æ‰‹ãªãšã‘ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚騎乗ã—ã¦ã€æŒ¯ã‚Šè½ã¨ã•れãã†ã«ãªã£ã¦ã‚‚乗り続ã‘れã°ã€æ‰‹ãªãšã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ 手ãªãšã‘ã‚‹ã¨å‘¨ã‚Šã«ãƒãƒ¼ãƒˆãŒè¡¨ç¤ºã•れã¦ã€äºŒåº¦ã¨ãƒ—レイヤーを振りè½ã¨ãã†ã¨ã¯ã—ã¾ã›ã‚“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ ã“ã®é¦¬ã«ä¹—ã£ã¦ã¿ã¾ã—ょã†ã€‚騎乗ã™ã‚‹ã«ã¯ã€æ‰‹ã«ã‚¢ã‚¤ãƒ†ãƒ ã‚„ツールã¯ä½•ã‚‚æŒãŸãªã„ã§ {*CONTROLLER_ACTION_USE*} を使ã„ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ 馬をæ“縦ã™ã‚‹ã«ã¯éžã‚’ç½®ãå¿…è¦ãŒã‚りã¾ã™ã€‚éžã¯æ‘人ã‹ã‚‰è³¼å…¥ã™ã‚‹ã‹ã€ä¸–界ã®ã©ã“ã‹ã«éš ã•れãŸãƒã‚§ã‚¹ãƒˆã®ä¸­ã‹ã‚‰è¦‹ã¤ã‹ã‚Šã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ 手ãªãšã‘ãŸãƒ­ãƒã¨ãƒ©ãƒã«éžè¢‹ã‚’ç€ã‘ã‚‹ã«ã¯ãƒã‚§ã‚¹ãƒˆã‚’å–り付ã‘ã¾ã™ã€‚éžè¢‹ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹ã®ã¯ã€é¨Žä¹—時ã¾ãŸã¯ã—ã®ã³è¶³ã—ã¦ã„る時ã§ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ 馬ã¨ãƒ­ãƒ (ラãƒã¯é™¤ã) ã¯ã€ä»–ã®å‹•物ã¨åŒæ§˜ã«é‡‘ã®ãƒªãƒ³ã‚´ã‚„金ã®ãƒ‹ãƒ³ã‚¸ãƒ³ã‚’使ã£ã¦ç¹æ®–ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚å­é¦¬ã‚„å­ãƒ­ãƒã¯æ™‚é–“ã¨ã¨ã‚‚ã«æˆä½“ã«ãªã‚Šã¾ã™ãŒã€å°éº¦ã‹å¹²ã—è‰ã‚’与ãˆã‚‹ã¨æˆé•·ãŒæ—©ã¾ã‚Šã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ ã“ã“ã§ã¯é¦¬ã¨ãƒ­ãƒã‚’手ãªãšã‘ã¦ã¿ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®å‘¨è¾ºã®ãƒã‚§ã‚¹ãƒˆã«ã¯éžã‚„馬よã‚ã„ãªã©ã®ä¾¿åˆ©ãªé¦¬ç”¨ã‚¢ã‚¤ãƒ†ãƒ ã‚‚ã‚りã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ ã“れã¯ãƒ“ーコンã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã§ã™ã€‚ã“れを使ã†ã¨ãƒ“ーコンã«å‰²ã‚Šå½“ã¦ã‚‹ãƒ‘ãƒ¯ãƒ¼ã‚’é¸æŠžã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}続行ã™ã‚‹ã«ã¯ {*CONTROLLER_VK_A*} を押ã—ã¾ã™ã€‚
+ {*B*}ビーコンã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã®ä½¿ã„方を既ã«çŸ¥ã£ã¦ã„ã‚‹å ´åˆã¯ã€{*CONTROLLER_VK_B*} を押ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ ビーコン メニューã§ã¯ã€ãƒ“ーコンã«å‰²ã‚Šå½“ã¦ã‚‹ãƒ—ライマリ パワーを 1 ã¤é¸æŠžã§ãã¾ã™ã€‚ピラミッドã®éšŽå±¤ãŒå¢—ãˆã‚‹ã¨ã€ãƒ‘ワーã®é¸æŠžè‚¢ã‚‚増ãˆã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ å°‘ãªãã¨ã‚‚ 4 層以上ã®ãƒ”ラミッドã«ç½®ã‹ã‚ŒãŸãƒ“ーコンã«ã¯ã€è¿½åŠ ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¨ã—ã¦ã€Œå›žå¾©ã€ã®ã‚»ã‚«ãƒ³ãƒ€ãƒª パワーã‹ã€ã•らã«å¼·åŠ›ãªãƒ—ライマリ パワーãŒä»˜ä¸Žã•れã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ ビーコンã®ãƒ‘ワーを設定ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ¡ãƒ©ãƒ«ãƒ‰ã€ãƒ€ã‚¤ãƒ¤ãƒ¢ãƒ³ãƒ‰ã€é‡‘ã¾ãŸã¯é‰„ã®ã‚¤ãƒ³ã‚´ãƒƒãƒˆã‚’支払ã„ã‚¹ãƒ­ãƒƒãƒˆã§æ¶ˆè²»ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚一度設定ã™ã‚‹ã¨ã€ãƒ“ーコンã¯ãƒ‘ワーを無é™ã«ç™ºã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>ã“ã®ãƒ”ラミッドã®é ‚上ã«ã¯ã€ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã§ãªã„ビーコンãŒã‚る。</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}ビーコンã«ã¤ã„ã¦ã‚‚ã£ã¨çŸ¥ã‚‹ã«ã¯ {*CONTROLLER_VK_A*} を押ã—ã¾ã™ã€‚
+ {*B*}ビーコンã«ã¤ã„ã¦æ—¢ã«çŸ¥ã£ã¦ã„ã‚‹å ´åˆã¯ã€{*CONTROLLER_VK_B*} を押ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ アクティブãªãƒ“ーコンã¯ç©ºã«å‘ã‘ã¦æ˜Žã‚‹ã„光線を放ã¡ã€ä»˜è¿‘ã®ãƒ—レイヤーã«ãƒ‘ワーを与ãˆã¾ã™ã€‚ビーコンã¯ã‚¬ãƒ©ã‚¹ã€é»’曜石ã€ã‚¦ã‚£ã‚¶ãƒ¼ã‚’倒ã™ã¨å…¥æ‰‹ã§ãã‚‹ãƒã‚¶ãƒ¼ã‚¹ã‚¿ãƒ¼ã‹ã‚‰ä½œã‚Šã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ ビーコンã¯ã€æ˜¼é–“ã«æ—¥å…‰ã‚’å—ã‘る場所ã«è¨­ç½®ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã¾ãŸã€ãƒ“ーコンã¯é‰„ã€é‡‘ã€ã‚¨ãƒ¡ãƒ©ãƒ«ãƒ‰ã€ã¾ãŸã¯ãƒ€ã‚¤ãƒ¤ãƒ¢ãƒ³ãƒ‰ã®ãƒ”ラミッド上ã«è¨­ç½®ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。ãŸã ã—建æã®é•ã„ã«ã‚ˆã‚‹ãƒ“ーコンã®ãƒ‘ワーã¸ã®å½±éŸ¿ã¯ã‚りã¾ã›ã‚“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ ビーコンを使ã£ã¦ã€ãã“ã‹ã‚‰ä¸Žãˆã‚‹ãƒ‘ワーを設定ã—ã¦ã¿ã¾ã—ょã†ã€‚å¿…è¦ãªæ”¯æ‰•ã„ã«ã¯é‰„ã®ã‚¤ãƒ³ã‚´ãƒƒãƒˆã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>ã“ã®éƒ¨å±‹ã«ã¯ãƒ›ãƒƒãƒ‘ーãŒã‚ã‚‹</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}ホッパーã«ã¤ã„ã¦ã‚‚ã£ã¨çŸ¥ã‚‹ã«ã¯ {*CONTROLLER_VK_A*} を押ã—ã¾ã™ã€‚
+ {*B*}ホッパーã«ã¤ã„ã¦æ—¢ã«çŸ¥ã£ã¦ã„ã‚‹å ´åˆã¯ã€{*CONTROLLER_VK_B*} を押ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ ホッパーã¯å…¥ã‚Œç‰©ã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’出ã—入れã™ã‚‹ãŸã‚ã«ã€ã¾ãŸã¯ãƒ›ãƒƒãƒ‘ãƒ¼ä¸Šã«æŠ•ã’られãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’è‡ªå‹•çš„ã«æ‹¾ã†ãŸã‚ã«ä½¿ã„ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ ホッパーã¯èª¿åˆå°ã€ãƒã‚§ã‚¹ãƒˆã€ç™ºå°„装置ã€ãƒ‰ãƒ­ãƒƒãƒ‘ーã€ãƒã‚§ã‚¹ãƒˆä»˜ãトロッコã€ãƒ›ãƒƒãƒ‘ー付ãトロッコã€ãŠã‚ˆã³ä»–ã®ãƒ›ãƒƒãƒ‘ーã«å¯¾ã—ã¦ä½œç”¨ã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ ホッパーã¯ã€ãã®ä¸Šã«ä½ç½®ã™ã‚‹é©åˆ‡ãªå…¥ã‚Œç‰©ã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’å¸ã„出ã—ç¶šã‘ã¾ã™ã€‚ã¾ãŸã€ä¿ç®¡ã•れãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’出力先ã®å…¥ã‚Œç‰©ã«æ ¼ç´ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ ã—ã‹ã—ã€ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ãŒé›»æºã®å ´åˆã€ãƒ›ãƒƒãƒ‘ーã¯éžã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ãªã‚Šã€ã‚¢ã‚¤ãƒ†ãƒ ã®å¸ã„出ã—ã‚‚æ ¼ç´ã‚‚åœæ­¢ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ ホッパーã®å‘ãã¯ã‚¢ã‚¤ãƒ†ãƒ ã‚’排出ã™ã‚‹æ–¹å‘を示ã—ã¾ã™ã€‚ホッパーãŒç‰¹å®šã®ãƒ–ロックã«å‘ãよã†ã«ã™ã‚‹ã«ã¯ã€ã—ã®ã³è¶³ã—ãªãŒã‚‰ãã®ãƒ–ロックã«å‘ã‘ã¦è¨­ç½®ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ ã“ã®éƒ¨å±‹ã«ã¯æ§˜ã€…ãªå½¹ç«‹ã¤ãƒ›ãƒƒãƒ‘ーã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãŒç”¨æ„ã—ã¦ã‚りã€ç›®ã§è¦‹ã¦è©¦ã›ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ ã“れã¯èбç«ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã§ã™ã€‚ã“れを使ãˆã°èбç«ã¨ã€èбç«ã®æ˜Ÿã‚’作るã“ã¨ãŒã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}続行ã™ã‚‹ã«ã¯ {*CONTROLLER_VK_A*} を押ã—ã¾ã™ã€‚
+ {*B*}花ç«ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã®ä½¿ã„方を既ã«çŸ¥ã£ã¦ã„ã‚‹å ´åˆã¯ã€{*CONTROLLER_VK_B*} を押ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ 花ç«ã‚’作るã«ã¯ã€ç«è–¬ã¨ç´™ã‚’インベントリã®ä¸Šã«è¡¨ç¤ºã•れる 3x3 ã®ã‚¯ãƒ©ãƒ•ト グリッドã«ç½®ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ オプションã¨ã—ã¦ã€ã‚¯ãƒ©ãƒ•ト グリッド上ã«è¤‡æ•°ã®èбç«ã®æ˜Ÿã‚’ç½®ã„ã¦ã€èбç«ã«è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ クラフト グリッドã®ã‚¹ãƒ­ãƒƒãƒˆã«ç«è–¬ã‚’多ãç½®ãã»ã©ã€èбç«ã®æ˜Ÿã¯ã•らã«é«˜ã„ã¨ã“ã‚ã§ç ´è£‚ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ 作ã£ãŸèбç«ã¯ã€ä½œã‚ŠãŸã„時ã«ã„ã¤ã§ã‚‚å–り出ã—å£ã‹ã‚‰å–り出ã›ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ 花ç«ã®æ˜Ÿã‚’作るã«ã¯ã€ç«è–¬ã¨æŸ“料をクラフト グリッドã«ç½®ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ 染料を使ã£ã¦ã€èбç«ã®æ˜ŸãŒç ´è£‚ã™ã‚‹éš›ã®è‰²ã‚’決ã‚ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ 花ç«ã®æ˜Ÿã®å½¢çжã¯ã€ç™ºç«å‰¤ã€é‡‘塊ã€ç¾½æ ¹ã€ã¾ãŸã¯ãƒ˜ãƒƒãƒ‰ã‚’追加ã—ã¦æ±ºå®šã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ 光跡や点滅ã¯ã€ãƒ€ã‚¤ãƒ¤ãƒ¢ãƒ³ãƒ‰ã¾ãŸã¯ã‚°ãƒ­ã‚¦ã‚¹ãƒˆãƒ¼ãƒ³ã®ç²‰ã‚’使ã£ã¦è¿½åŠ ã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ 花ç«ã®æ˜Ÿã‚’作ã£ãŸå¾Œã€ã•ã‚‰ã«æŸ“料を加ãˆã‚Œã°ã€èбç«ã®æ˜Ÿã®è‰²å¤‰åŒ–を決ã‚られã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ ã“ã“ã«ã‚ã‚‹ãƒã‚§ã‚¹ãƒˆã®ä¸­ã«ã¯ã€èбç«ä½œã‚Šã«ä½¿ã‚れる様々ãªã‚¢ã‚¤ãƒ†ãƒ ãŒå…¥ã£ã¦ã„ã¾ã™!
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}花ç«ã«ã¤ã„ã¦ã‚‚ã£ã¨çŸ¥ã‚‹ã«ã¯ {*CONTROLLER_VK_A*} を押ã—ã¾ã™ã€‚
+ {*B*}花ç«ã«ã¤ã„ã¦æ—¢ã«çŸ¥ã£ã¦ã„ã‚‹å ´åˆã¯ã€{*CONTROLLER_VK_B*} を押ã—ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ 花ç«ã¯è£…飾アイテムã§ã€æ‰‹å‹•ã€ã¾ãŸã¯ç™ºå°„装置ã‹ã‚‰æ‰“ã¡ä¸Šã’ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚作るã«ã¯ã€ç´™ã€ç«è–¬ã€ãŠã‚ˆã³ã‚ªãƒ—ションã¨ã—ã¦æ•°ã€…ã®èбç«ã®æ˜Ÿã‚’使ã„ã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ 花ç«ã®æ˜Ÿã®è‰²ã€è‰²å¤‰åŒ–ã€å½¢çжã€ã‚µã‚¤ã‚ºã€åŠ¹æžœ (光跡ã€ç‚¹æ»…ãªã©) ã¯ã€ä½œã‚‹éš›ã«ææ–™ã‚’追加ã™ã‚Œã°ã§ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã§ãã¾ã™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ ãƒã‚§ã‚¹ãƒˆã«ã‚ã‚‹ã„ã‚ã„ã‚ãªææ–™ã‚’ä½¿ã£ã¦ã€ä½œæ¥­å°ã§èбç«ã‚’作ã£ã¦ã¿ã¾ã—ょã†ã€‚
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>é¸æŠž</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>使ã†</value>
@@ -2829,6 +3384,22 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Xbox One 用ã«ã‚»ãƒ¼ãƒ–をアップロード</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>騎乗ã™ã‚‹</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>é™ã‚Šã‚‹</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>ãƒã‚§ã‚¹ãƒˆã‚’ç€ã‘ã‚‹</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>打ã¡ä¸Šã’ã‚‹</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>首ã²ã‚‚ã‚’ã¤ã‘ã‚‹</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>首ã²ã‚‚ã‚’ã¯ãšã™</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>装ç€ã™ã‚‹</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>åå‰ã‚’ã¤ã‘ã‚‹</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>OK</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>キャンセル</value>
@@ -3143,6 +3714,20 @@ Minecraft Xbox 360 版ã¯ã€åˆæœŸè¨­å®šã§ãƒžãƒ«ãƒãƒ—レイヤー ゲームã«
</data>
<data name="IDS_DISPENSER"><value>発射装置</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>馬</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>ドロッパー</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>ホッパー</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>ビーコン</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>プライマリ パワー</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>セカンダリ パワー</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>トロッコ</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>ç¾åœ¨ã€ã“ã®ã‚¿ã‚¤ãƒ—ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ コンテンツã¯ã‚りã¾ã›ã‚“</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s ãŒä¸–界ã«ã‚„ã£ã¦ãã¾ã—ãŸ</value>
@@ -3302,10 +3887,14 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>ゲームモード: クリエイティブ</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>ゲーム モード: アドベンãƒãƒ£ãƒ¼</value>
+ </data>
<data name="IDS_SURVIVAL"><value>サãƒã‚¤ãƒãƒ«</value>
</data>
<data name="IDS_CREATIVE"><value>クリエイティブ</value>
</data>
+<data name="IDS_ADVENTURE"><value>アドベンãƒãƒ£ãƒ¼</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>サãƒã‚¤ãƒãƒ« モードã§ä½œæˆ</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>クリエイティブ モードã§ä½œæˆ</value>
@@ -3326,6 +3915,8 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>スーパーフラット</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>åŒã˜åœ°å½¢ã‚’å†åº¦ç”Ÿæˆã™ã‚‹ã«ã¯ç¨®ã‚’入れã¾ã™ã€‚ランダムãªä¸–界ã®å ´åˆã€ç©ºæ¬„ã®ã¾ã¾ã«ã—ã¾ã™ã€‚</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>有効ã«ã™ã‚‹ã¨ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã®ã‚²ãƒ¼ãƒ ã«ãªã‚Šã¾ã™</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>有効ã«ã™ã‚‹ã¨ã€æ‹›å¾…ã•れãŸãƒ—レイヤーã—ã‹å‚加ã§ãã¾ã›ã‚“</value>
@@ -3350,6 +3941,20 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>有効ã«ã™ã‚‹ã¨ã€ãƒ—レイヤーã®å¾©æ´»åœ°ç‚¹ã®è¿‘ãã«ä¾¿åˆ©ãªã‚¢ã‚¤ãƒ†ãƒ ã®å…¥ã£ãŸãƒã‚§ã‚¹ãƒˆãŒå‡ºç¾ã—ã¾ã™</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>無効ã«ã™ã‚‹ã¨ã€ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã‚„動物ãŒãƒ–ロックを変ãˆã‚‹ã“ã¨ãŒãªããªã‚Š (例: Creeper ãŒçˆ†ç™ºã—ã¦ã‚‚ブロックãŒç ´å£Šã•れãªã„ã€ç¾ŠãŒè‰ã‚’å–り除ã‹ãªã„)ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚‚拾ã„ã¾ã›ã‚“。</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>有効ã«ã™ã‚‹ã¨ã€ã‚²ãƒ¼ãƒ ã‚ªãƒ¼ãƒãƒ¼æ™‚ã«ãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã®æŒã¡ç‰©ãŒå¤±ã‚れã¾ã›ã‚“。</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>無効ã«ã™ã‚‹ã¨ã€ç”Ÿã物ã¯è‡ªç„¶ã«å‡ºç¾ã—ã¾ã›ã‚“。</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>無効ã«ã™ã‚‹ã¨ã€ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã‚„å‹•ç‰©ã¯æˆ¦åˆ©å“をドロップã—ã¾ã›ã‚“ (例: Creeper ã¯ç«è–¬ã‚’ドロップã—ãªã„)。</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>無効ã«ã™ã‚‹ã¨ã€ãƒ–ロックを壊ã—ã¦ã‚‚アイテムをè½ã¨ã—ã¾ã›ã‚“ (例: 石ブロックãŒä¸¸çŸ³ã‚’è½ã¨ã•ãªã„)。</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>無効ã«ã™ã‚‹ã¨ã€ãƒ—レイヤー㮠HP を自然ã«å†ç”Ÿã•れã¾ã›ã‚“。</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>無効ã«ã™ã‚‹ã¨ã€æ™‚刻ãŒå¤‰ã‚りã¾ã›ã‚“。</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>スキン パック</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>テーマ</value>
@@ -3398,7 +4003,49 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} 㯠{*SOURCE*} ã«å©ãæ½°ã•れãŸ</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} 㯠{*SOURCE*} ã«å€’ã•れãŸ</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} 㯠{*SOURCE*} ã®é­”法ã«ã‚ˆã£ã¦å€’ã•れãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} ã¯ãƒã‚·ã‚´ã‹ã‚‰è½ã¡ãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} ã¯ã€ã¤ã‚‹ã‹ã‚‰è½ã¡ãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} ã¯æ°´ã‹ã‚‰è½ã¡ãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} ã¯é«˜ã„ã¨ã“ã‚ã‹ã‚‰è½ã¡ãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*PLAYER*} 㯠{*SOURCE*} ã«ã‚ˆã£ã¦æ»…ã³ã‚‹é‹å‘½ã«ã‚ã£ãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*PLAYER*} 㯠{*SOURCE*} ã«ã‚ˆã£ã¦æ»…ã³ã‚‹é‹å‘½ã«ã‚ã£ãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*PLAYER*} 㯠{*SOURCE*} ã® {*ITEM*} ã«ã‚ˆã£ã¦æ»…ã³ã‚‹é‹å‘½ã«ã‚ã£ãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>{*PLAYER*} ã¯ã‚ã¾ã‚Šã«é«˜ã„ã¨ã“ã‚ã‹ã‚‰è½ã¡ã€{*SOURCE*} ã«ã¨ã©ã‚を刺ã•れãŸ</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>{*PLAYER*} ã¯ã‚ã¾ã‚Šã«é«˜ã„ã¨ã“ã‚ã‹ã‚‰è½ã¡ã€{*SOURCE*} ã« {*ITEM*} ã§ã¨ã©ã‚を刺ã•れãŸ</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} 㯠{*SOURCE*} ã¨æˆ¦ã†ã†ã¡ã«ç«ã®ä¸­ã¸ã¨é€²ã‚“ã§è¡Œã£ãŸ</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} 㯠{*SOURCE*} ã¨æˆ¦ã†ã†ã¡ã«ã‚«ãƒªã‚«ãƒªã«ç„¼ã‹ã‚ŒãŸ</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} 㯠{*SOURCE*} ã‹ã‚‰é€ƒã‚Œã‚‹ãŸã‚ã«æº¶å²©ã®ä¸­ã‚’æ³³ã”ã†ã¨ã—ãŸ</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} 㯠{*SOURCE*} ã‹ã‚‰é€ƒã‚Œã‚ˆã†ã¨ã™ã‚‹ã†ã¡ã«æººã‚ŒãŸ</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} 㯠{*SOURCE*} ã‹ã‚‰é€ƒã‚Œã‚ˆã†ã¨ã™ã‚‹ã†ã¡ã«ã‚µãƒœãƒ†ãƒ³ã«è¶³ã‚’è¸ã¿å…¥ã‚ŒãŸ</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*PLAYER*} 㯠{*SOURCE*} ã«å¹ã飛ã°ã•れãŸ</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} ã¯å¼±ã‚Šæžœã¦ãŸ</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*PLAYER*} 㯠{*SOURCE*} ã« {*ITEM*} ã§å€’ã•れãŸ</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*PLAYER*} 㯠{*SOURCE*} ã« {*ITEM*} ã§æ’ƒãŸã‚ŒãŸ</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*PLAYER*} 㯠{*SOURCE*} ã« {*ITEM*} ã§ç«ã ã‚‹ã¾ã«ã•れãŸ</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*PLAYER*} 㯠{*SOURCE*} ã« {*ITEM*} ã§ç«ã ã‚‹ã¾ã«ã•れãŸ</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} 㯠{*SOURCE*} ã« {*ITEM*} ã§å€’ã•れãŸ</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>岩盤ã®éœ§</value>
</data>
@@ -3552,7 +4199,7 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
{*C2*}「ãã—ã¦åƒ•ãŒå›ã‚’æ„›ã™ã‚‹ã®ã¯ã€å›è‡ªèº«ãŒæ„›ã§ã‚ã‚‹ã‹ã‚‰ã ã€{*EF*}{*B*}{*B*}
{*C3*}ゲームã¯çµ‚ã‚りã€ãƒ—レイヤーã¯å¤¢ã‹ã‚‰ç›®è¦šã‚ã€ã¾ãŸæ–°ã—ã„夢ãŒå§‹ã¾ã‚Šã¾ã™ã€‚次ã«ãƒ—レイヤーãŒè¦‹ã‚‹å¤¢ã¯ã‚‚ã£ã¨ç´ æ™´ã‚‰ã—ã„ã‚‚ã®ã§ã—ょã†ã€‚プレイヤーã¯å®‡å®™ã§ã‚ã‚Šã€æ„›ã§ã—ãŸ{*EF*}{*B*}{*B*}
{*C3*}ã•ã‚ã€ãƒ—レイヤー{*EF*}{*B*}{*B*}
-{*C2*}目を覚ã¾ã—ã¦{*EF*}{*B*}{*B*}
+{*C2*}目を覚ã¾ã—ã¦{*EF*}
</value>
</data>
<data name="IDS_RESETNETHER_TITLE"><value>暗黒界をリセットã™ã‚‹</value>
@@ -3563,9 +4210,9 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_DONT_RESET_NETHER"><value>暗黒界をリセットã—ãªã„</value>
</data>
-<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>ç¾åœ¨ã€Mooshroom ã¯æ¯›åˆˆã‚Šã§ãã¾ã›ã‚“。豚ã€ç¾Šã€ç‰›ã€ãƒã‚³ã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸã€‚</value>
+<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>ç¾åœ¨ã€Mooshroom ã¯æ¯›åˆˆã‚Šã§ãã¾ã›ã‚“。豚ã€ç¾Šã€ç‰›ã€ãƒã‚³ã€é¦¬ã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸã€‚</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>ç¾åœ¨ã€ã‚¹ãƒãƒ¼ãƒ³ エッグを使用ã§ãã¾ã›ã‚“。 豚ã€ç¾Šã€ç‰›ã€ãƒã‚³ã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>ç¾åœ¨ã€ã‚¹ãƒãƒ¼ãƒ³ エッグを使用ã§ãã¾ã›ã‚“。 豚ã€ç¾Šã€ç‰›ã€ãƒã‚³ã€é¦¬ã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸã€‚</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED"><value>ç¾åœ¨ã€ã‚¹ãƒãƒ¼ãƒ³ エッグを使用ã§ãã¾ã›ã‚“。 Mooshroom ã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
</data>
@@ -3575,6 +4222,8 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>ç¾åœ¨ã€ã‚¹ãƒãƒ¼ãƒ³ エッグを使用ã§ãã¾ã›ã‚“。 世界ã®ã‚¤ã‚«ã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>ç¾åœ¨ã€ã‚¹ãƒãƒ¼ãƒ³ エッグを使用ã§ãã¾ã›ã‚“。 ä¸–ç•Œã®æ‘äººã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>ç¾åœ¨ã€ã‚¹ãƒãƒ¼ãƒ³ エッグを使用ã§ãã¾ã›ã‚“。 ä¸–ç•Œã®æ•µã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>ç¾åœ¨ã€ã‚¹ãƒãƒ¼ãƒ³ エッグを使用ã§ãã¾ã›ã‚“。 ä¸–ç•Œã®æ‘äººã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
@@ -3583,12 +4232,14 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>難易度「ピースã€ã§ã¯æ•µã‚’出ç¾ã•ã›ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>ã“ã®å‹•ç‰©ã¯æ±‚愛モードã«ã§ãã¾ã›ã‚“。豚ã€ç¾Šã€ç‰›ã€ãƒã‚³ã®ç¹æ®–æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>ã“ã®å‹•ç‰©ã¯æ±‚愛モードã«ã§ãã¾ã›ã‚“。豚ã€ç¾Šã€ç‰›ã€ãƒã‚³ã€é¦¬ã®ç¹æ®–æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸã€‚</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>ã“ã®å‹•ç‰©ã¯æ±‚愛モードã«ã§ãã¾ã›ã‚“。オオカミã®ç¹æ®–æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>ã“ã®å‹•ç‰©ã¯æ±‚愛モードã«ã§ãã¾ã›ã‚“。ニワトリã®ç¹æ®–æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>ã“ã®å‹•ç‰©ã¯æ±‚愛モードã«ã§ãã¾ã›ã‚“。馬ã®ç¹æ®–æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸã€‚</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>ã“ã®å‹•ç‰©ã¯æ±‚愛モードã«ã§ãã¾ã›ã‚“。Mooshroom ã®ç¹æ®–æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
</data>
<data name="IDS_MAX_BOATS"><value>世界ã®ãƒœãƒ¼ãƒˆã®æ•°ãŒæœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸ</value>
@@ -3616,27 +4267,43 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
<data name="IDS_CREDITS"><value>クレジット</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>コンテンツをå†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>デãƒãƒƒã‚°è¨­å®š</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>ç«ã®å»¶ç„¼</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>TNT ã®çˆ†ç™º</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>PvP</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>é«˜åº¦ãªæ“作を許å¯</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>ホスト特権</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>建物を生æˆã™ã‚‹</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>スーパーフラット</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>ボーナス ãƒã‚§ã‚¹ãƒˆ</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>世界ã®ã‚ªãƒ—ション</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>ゲーム オプション</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>生ã物ã«ã‚ˆã‚‹å¦¨å®³</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>æŒã¡ç‰©ã®ä¿æŒ</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>生ã物ã®å‡ºç¾</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>生ã物ã‹ã‚‰ã®æˆ¦åˆ©å“</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>タイルã‹ã‚‰ã®ã‚¢ã‚¤ãƒ†ãƒ å…¥æ‰‹</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>自然å†ç”Ÿ</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>時刻ã®å¤‰åŒ–</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>å»ºè¨­ã¨æŽ¡æŽ˜ã®è¨±å¯</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>ドアã¨ã‚¹ã‚¤ãƒƒãƒã‚’使用å¯èƒ½</value>
@@ -3647,7 +4314,7 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_CAN_ATTACK_ANIMALS"><value>動物を攻撃å¯èƒ½</value>
</data>
-<data name="IDS_MODERATOR"><value>ホストオプションを変更ã§ãã‚‹</value>
+<data name="IDS_MODERATOR"><value>ホストオプションを変更å¯èƒ½</value>
</data>
<data name="IDS_KICK_PLAYER"><value>プレイヤーを追放</value>
</data>
@@ -3675,7 +4342,7 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_CREATE_NEW_WORLD_SEED"><value>世界ã®ç¨®</value>
</data>
-<data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED"><value>ランダムã«ç¨®ã‚’決ã‚ã‚‹å ´åˆã€ç©ºç™½ã®ã¾ã¾ã«ã—ã¦ãã ã•ã„</value>
+<data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED"><value>空白ã®ã¾ã¾ã§ç¨®ã‚’ãƒ©ãƒ³ãƒ€ãƒ ã«æ±ºå®šã™ã‚‹</value>
</data>
<data name="IDS_PLAYERS"><value>プレイヤー</value>
</data>
@@ -3697,17 +4364,17 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_RESUME_GAME"><value>ã‚²ãƒ¼ãƒ ã«æˆ»ã‚‹</value>
</data>
-<data name="IDS_SAVE_GAME"><value>セーブ</value>
+<data name="IDS_SAVE_GAME"><value>ゲームをセーブ</value>
</data>
<data name="IDS_LABEL_DIFFICULTY"><value>難易度:</value>
</data>
-<data name="IDS_LABEL_GAME_TYPE"><value>ゲームタイプ:</value>
+<data name="IDS_LABEL_GAME_TYPE"><value>ゲーム タイプ:</value>
</data>
<data name="IDS_LABEL_GAMERTAGS"><value>ゲーマータグ:</value>
</data>
<data name="IDS_LABEL_STRUCTURES"><value>建物:</value>
</data>
-<data name="IDS_LABEL_LEVEL_TYPE"><value>レベルタイプ:</value>
+<data name="IDS_LABEL_LEVEL_TYPE"><value>レベル タイプ:</value>
</data>
<data name="IDS_LABEL_PvP"><value>PvP:</value>
</data>
@@ -3823,6 +4490,14 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_POTION_POISON"><value>毒</value>
</data>
+<data name="IDS_POTION_WITHER"><value>ウィザー</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>HP ブースト</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>å¸åŽ</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>飽和</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>スピードã®</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>éˆåŒ–ã®</value>
@@ -3861,6 +4536,14 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>毒ã®</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value> (è¡°å¼±)</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value> (HP ブースト)</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value> (å¸åŽ)</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value> (飽和)</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3957,6 +4640,22 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_POTION_DESC_POISON"><value>プレイヤーã€å‹•物ã€ãƒ¢ãƒ³ã‚¹ã‚¿ãƒ¼ã® HP を時間ã¨ã¨ã‚‚ã«æ¸›å°‘ã•ã›ã¾ã™</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>é©ç”¨æ™‚:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>馬ã®ã‚¸ãƒ£ãƒ³ãƒ—å¼·ã•</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>ã‚¾ãƒ³ãƒ“ã®æ´è»</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>最大 HP</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>生ã物ã«ã‚ˆã‚‹è¿½å°¾ç¯„囲</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>ノックãƒãƒƒã‚¯è€æ€§</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>スピード</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>攻撃ダメージ</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>é‹­ã•</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>è–ãªã‚‹åŠ›</value>
@@ -4047,13 +4746,13 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>3{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚ジャガイモをã‹ã¾ã©ã§èª¿ç†ã™ã‚‹ã¨ã§ãã‚‹</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚ã‹ã¾ã©ã§èª¿ç†ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã€‚è¾²åœ°ã«æ¤ãˆã‚‹ã“ã¨ãŒã§ãる。病気ã«ãªã‚‹å ´åˆãŒã‚ã‚‹</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>1{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚ç—…æ°—ã«ãªã‚‹å ´åˆãŒã‚ã‚‹</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>3{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚ニンジンã¨é‡‘ã®å¡Šã‹ã‚‰ä½œã‚‹</value>
</data>
<data name="IDS_DESC_CARROT_ON_A_STICK"><value>éžã‚’ç€ã‘ãŸè±šã«ä¹—ã£ãŸæ™‚ã€æ“縦ã™ã‚‹ã®ã«ä½¿ã†</value>
</data>
-<data name="IDS_DESC_PUMPKIN_PIE"><value>4{*ICON_SHANK_01*} 回復ã™ã‚‹</value>
+<data name="IDS_DESC_PUMPKIN_PIE"><value>4{*ICON_SHANK_01*} 回復ã™ã‚‹ã€‚</value>
</data>
<data name="IDS_DESC_ENCHANTED_BOOK"><value>武器ã€é“å…·ã€é˜²å…·ã‚’エンãƒãƒ£ãƒ³ãƒˆã™ã‚‹ã®ã«é‡‘床ã¨ä¸€ç·’ã«ä½¿ç”¨ã™ã‚‹</value>
</data>
@@ -4445,7 +5144,7 @@ OK ã‚’é¸æŠžã™ã‚‹ã¨ã€ã“ã®ä¸–界ã§ã®ãƒ—レイを終了ã—ã¾ã™</value>
</data>
<data name="IDS_PLATFORM_NAME"><value>Xbox 360</value>
</data>
-<data name="IDS_BACK_BUTTON"><value>Back</value>
+<data name="IDS_BACK_BUTTON"><value>戻る</value>
</data>
<data name="IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS"><value>ã“ã®ã‚ªãƒ—ションã§ã¯ã€å®Ÿç¸¾ãŠã‚ˆã³ãƒ©ãƒ³ã‚­ãƒ³ã‚°æ›´æ–°ã¯ç„¡åйã«ãªã‚Šã¾ã™ã€‚</value>
</data>
diff --git a/Minecraft.Client/Common/Media/ko-KR/4J_strings.resx b/Minecraft.Client/Common/Media/ko-KR/4J_strings.resx
index a084ef5d..dfa720ac 100644
--- a/Minecraft.Client/Common/Media/ko-KR/4J_strings.resx
+++ b/Minecraft.Client/Common/Media/ko-KR/4J_strings.resx
@@ -73,11 +73,11 @@
</data>
<data name="IDS_PRO_NOTONLINE_TITLE"><value>게ì´ë¨¸ í”„ë¡œí•„ì´ ì˜¤í”„ë¼ì¸ ìƒíƒœìž…니다.</value>
</data>
-<data name="IDS_PRO_NOTONLINE_TEXT"><value>ì´ ê²Œìž„ 기능 중 ì¼ë¶€ëŠ” 게ì´ë¨¸ 프로필로 Xbox Liveì— ë¡œê·¸ì¸í•´ì•¼ ì´ìš©í•  수 있습니다. 현재는 오프ë¼ì¸ ìƒíƒœìž…니다.</value>
+<data name="IDS_PRO_NOTONLINE_TEXT"><value>ì´ ê²Œìž„ 기능 중 ì¼ë¶€ëŠ” 게ì´ë¨¸ 프로필로 Xbox LIVEì— ë¡œê·¸ì¸í•´ì•¼ ì´ìš©í•  수 있습니다. 현재는 오프ë¼ì¸ ìƒíƒœìž…니다.</value>
</data>
-<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>ì´ ê¸°ëŠ¥ì„ ì´ìš©í•˜ë ¤ë©´ 게ì´ë¨¸ 프로필로 Xbox Liveì— ë¡œê·¸ì¸í•´ì•¼ 합니다.</value>
+<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>ì´ ê¸°ëŠ¥ì„ ì´ìš©í•˜ë ¤ë©´ 게ì´ë¨¸ 프로필로 Xbox LIVEì— ë¡œê·¸ì¸í•´ì•¼ 합니다.</value>
</data>
-<data name="IDS_PRO_NOTONLINE_ACCEPT"><value>Xbox Live ì—°ê²°</value>
+<data name="IDS_PRO_NOTONLINE_ACCEPT"><value>Xbox LIVE ì—°ê²°</value>
</data>
<data name="IDS_PRO_NOTONLINE_DECLINE"><value>오프ë¼ì¸ìœ¼ë¡œ 계ì†í•˜ê¸°</value>
</data>
diff --git a/Minecraft.Client/Common/Media/ko-KR/strings.resx b/Minecraft.Client/Common/Media/ko-KR/strings.resx
index 17c67711..6516a2f4 100644
--- a/Minecraft.Client/Common/Media/ko-KR/strings.resx
+++ b/Minecraft.Client/Common/Media/ko-KR/strings.resx
@@ -150,7 +150,7 @@ Minecraft는 블ë¡ì„ 배치하여 무엇ì´ë“  ìƒìƒí•œ 대로 만들 수 있
{*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_MOVE*}ì„ ì•žìœ¼ë¡œ 빠르게 ë‘ ë²ˆ 누르면 질주합니다. {*CONTROLLER_ACTION_MOVE*}를 ê³„ì† ëˆ„ë¥´ê³  있으면 질주 ì‹œê°„ì´ ë‹¤ ë˜ê±°ë‚˜ ìŒì‹ 막대가 {*ICON_SHANK_03*} ì´í•˜ê°€ ë  ë•Œê¹Œì§€ ê³„ì† ì§ˆì£¼í•©ë‹ˆë‹¤.{*B*}{*B*}
{*CONTROLLER_ACTION_ACTION*}를 누르고 있으면 ì†ì´ë‚˜ ë„구를 사용해 채굴하거나 벌목합니다. 특정 블ë¡ì„ 채굴하려면 ë„구를 만들어야 í•  수 있습니다.{*B*}{*B*}
ì†ì— ì•„ì´í…œì„ 들고 있다면 {*CONTROLLER_ACTION_USE*}를 눌러 사용하거나 {*CONTROLLER_ACTION_DROP*}를 눌러 버릴 수 있습니다.</value>
</data>
@@ -229,11 +229,11 @@ HUD는 ì²´ë ¥ì´ë‚˜ 산소(물ì†ì— ìžˆì„ ë•Œ), ë°°ê³ í”” 레벨(ë°°ê³ í””ì„
</data>
<data name="IDS_HOW_TO_PLAY_ENCHANTMENT"><value>{*T3*}í”Œë ˆì´ ë°©ë²•: 효과부여{*ETW*}{*B*}{*B*}
괴물 ë° ë™ë¬¼ì„ 처치하거나 ë˜ëŠ” 특정 블ë¡ì„ 채굴하거나 녹여서 ì–»ì„ ìˆ˜ 있는 경험치로 ë„구, 무기 ë° ë°©ì–´êµ¬ì— íš¨ê³¼ë¥¼ 부여할 수 있습니다.{*B*}
-ê²€, 활, ë„ë¼, 곡괭ì´, 삽 ë˜ëŠ” 방어구를 íš¨ê³¼ë¶€ì—¬ëŒ€ì— ë†“ì¸ ì±… ì•„ëž˜ì— ìžˆëŠ” ìŠ¬ë¡¯ì— ë„£ìœ¼ë©´ 슬롯 ì˜¤ë¥¸ìª½ì— ê°ê° 경험치 ë¹„ìš©ì´ ì“°ì¸ ë‹¨ì¶” 세 개가 나타납니다.{*B*}
+ê²€, 활, ë„ë¼, 곡괭ì´, 삽 ë˜ëŠ” 방어구를 íš¨ê³¼ë¶€ì—¬ëŒ€ì— ë†“ì¸ ì±… ì•„ëž˜ì— ìžˆëŠ” ìŠ¬ë¡¯ì— ë„£ìœ¼ë©´ 슬롯 ì˜¤ë¥¸ìª½ì— ê°ê° 경험치 ë¹„ìš©ì´ ì“°ì¸ ë‹¨ì¶” 세 개가 나타납니다.{*B*}
íš¨ê³¼ë¶€ì—¬ì— í•„ìš”í•œ 경험치가 모ìžëž€ í•­ëª©ì€ ë¹¨ê°„ìƒ‰ìœ¼ë¡œ 나타나며, 그렇지 않다면 ì´ˆë¡ìƒ‰ìœ¼ë¡œ 나타납니다.{*B*}{*B*}
실제 효과부여는 í‘œì‹œëœ ë¹„ìš©ì— ê¸°ë°˜ì„ ë‘ê³  무작위로 ì ìš©ë©ë‹ˆë‹¤.{*B*}{*B*}
효과부여대가 한 ë¸”ë¡ ê°„ê²©ì„ ë‘ê³  ì±…ìž¥ì— ë‘˜ëŸ¬ì‹¸ì—¬ 있으면(최대 책장 15개까지) 효과부여 ë ˆë²¨ì´ ìƒìŠ¹í•˜ë©°, íš¨ê³¼ë¶€ì—¬ëŒ€ì— ë†“ì¸ ì±…ì— ì‹ ë¹„í•œ ë¬¸ì–‘ì´ ë‚˜íƒ€ë‚©ë‹ˆë‹¤.{*B*}{*B*}
-효과부여대를 만들 때 ì“°ì´ëŠ” 모든 재료는 월드 ì•ˆì˜ ë§ˆì„ì—서 찾거나 월드 안ì—서 채굴 ë° ê²½ìž‘ì„ í†µí•´ ì–»ì„ ìˆ˜ 있습니다.{*B*}
+효과부여대를 만들 때 ì“°ì´ëŠ” 모든 재료는 월드 ì•ˆì˜ ë§ˆì„ì—서 찾거나 월드 안ì—서 채굴 ë° ê²½ìž‘ì„ í†µí•´ ì–»ì„ ìˆ˜ 있습니다.{*B*}{*B*}
효과부여 ì±…ì€ ëª¨ë£¨ì—서 ì•„ì´í…œì— 효과를 부여하는 ë° ì‚¬ìš©í•©ë‹ˆë‹¤. ì´ê²ƒìœ¼ë¡œ ì•„ì´í…œì— ë” íš¨ìœ¨ì ìœ¼ë¡œ 효과를 부여할 수 있습니다.{*B*}
</value>
</data>
@@ -281,9 +281,9 @@ Xbox 360 본체용 Minecraft는 멀티 í”Œë ˆì´ ê²Œìž„ì´ ê¸°ë³¸ê°’ìœ¼ë¡œ ë˜ì–
{*CONTROLLER_ACTION_DPAD_LEFT*}를 누르면 왼쪽으로 ì´ë™í•˜ê³  {*CONTROLLER_ACTION_DPAD_RIGHT*}를 누르면 오른쪽으로 ì´ë™í•©ë‹ˆë‹¤.</value>
</data>
<data name="IDS_HOW_TO_PLAY_HOSTOPTIONS"><value>{*T3*}í”Œë ˆì´ ë°©ë²•: 호스트 ë° í”Œë ˆì´ì–´ 옵션{*ETW*}{*B*}{*B*}
-
+
{*T1*}게임 옵션{*ETW*}{*B*}
-월드를 불러오거나 새로 만들 때 "추가 옵션" 단추를 누르면 ê²Œìž„ì˜ ì„¸ë¶€ ì‚¬í•­ì„ ì¡°ì •í•  수 있는 메뉴가 열립니다.{*B*}{*B*}
+월드를 불러오거나 새로 만들 때 "추가 옵션"ì„ ëˆ„ë¥´ë©´ ê²Œìž„ì˜ ì„¸ë¶€ ì‚¬í•­ì„ ì¡°ì •í•  수 있는 메뉴가 열립니다.{*B*}{*B*}
{*T2*}플레ì´ì–´ 대 플레ì´ì–´{*ETW*}{*B*}
ì´ ì˜µì…˜ì„ ì¼œë©´ 플레ì´ì–´ê°€ 다른 플레ì´ì–´ë¥¼ 공격할 수 있습니다. ìƒì¡´ 모드ì—ë§Œ ì ìš©ë©ë‹ˆë‹¤.{*B*}{*B*}
@@ -300,6 +300,27 @@ Xbox 360 본체용 Minecraft는 멀티 í”Œë ˆì´ ê²Œìž„ì´ ê¸°ë³¸ê°’ìœ¼ë¡œ ë˜ì–
{*T2*}호스트 특권{*ETW*}{*B*}
ì´ ì˜µì…˜ì„ ì¼œë©´ 호스트는 게임 메뉴ì—서 플레ì´ì–´ì—게 비행 ëŠ¥ë ¥ì„ ì£¼ê±°ë‚˜, 지치지 않게 하거나, 투명하게 만들 수 있습니다.{*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+ {*T2*}시간대 전환{*ETW*}{*B*}
+ 비활성화하면 시간대가 변하지 않습니다.{*B*}{*B*}
+
+ {*T2*}소지품 유지{*ETW*}{*B*}
+ 활성화하면 플레ì´ì–´ê°€ ì£½ì–´ë„ ì†Œì§€í’ˆì˜ ì•„ì´í…œì„ 잃지 않습니다.{*B*}{*B*}
+
+ {*T2*}괴물 ìƒì„±{*ETW*}{*B*}
+ 비활성화하면 괴물ì´ë‚˜ ë™ë¬¼ì´ ìžì—°ì ìœ¼ë¡œ ìƒì„±ë˜ì§€ 않습니다.{*B*}{*B*}
+
+ {*T2*}ê´´ë¬¼ì— ì˜í•œ 괴롭힘{*ETW*}{*B*}
+ 비활성화하면 몬스터와 ë™ë¬¼ì´ 블ë¡ì„ êµì²´í•˜ê±°ë‚˜ ì•„ì´í…œì„ ì§‘ì§€ 못하게 합니다. 예를 들어 Creeperê°€ í­ë°œí•´ë„ 블ë¡ì´ 파괴ë˜ì§€ 않으며, ì–‘ì€ í’€ì„ ì œê±°í•˜ì§€ 못합니다.{*B*}{*B*}
+
+ {*T2*}괴물 전리품{*ETW*}{*B*}
+ 비활성화하면 괴물과 ë™ë¬¼ì´ ì „ë¦¬í’ˆì„ ë–¨ì–´íŠ¸ë¦¬ì§€ 않습니다. 예를 들어 Creeperê°€ í™”ì•½ì„ ë–¨ì–´íŠ¸ë¦¬ì§€ 않습니다.{*B*}{*B*}
+
+ {*T2*}íƒ€ì¼ ì•„ì´í…œ{*ETW*}{*B*}
+ 비활성화하면 블ë¡ì´ 파괴ë¼ë„ ì•„ì´í…œì„ 떨어트리지 않습니다. 예를 들어 ëŒ ë¸”ë¡ì—서 조약ëŒì„ ì–»ì„ ìˆ˜ 없습니다.{*B*}{*B*}
+
+ {*T2*}ìžì—° 재ìƒ{*ETW*}{*B*}
+ 비활성화하면 플레ì´ì–´ì˜ ì²´ë ¥ì´ ìžì—°ì ìœ¼ë¡œ 재ìƒë˜ì§€ 않습니다.{*B*}{*B*}
+
{*T1*}월드 ìƒì„± 옵션{*ETW*}{*B*}
새 월드를 ìƒì„±í•  때 ì„ íƒí•  수 있는 추가 옵션입니다.{*B*}{*B*}
@@ -316,13 +337,13 @@ Xbox 360 본체용 Minecraft는 멀티 í”Œë ˆì´ ê²Œìž„ì´ ê¸°ë³¸ê°’ìœ¼ë¡œ ë˜ì–
ì´ ì˜µì…˜ì„ ì¼œë©´ 지하가 재건ë©ë‹ˆë‹¤. ì‚¬ì „ì— ì§€í•˜ 요새가 없는 ê³³ì— ë¯¸ë¦¬ 저장하면 유용합니다.{*B*}{*B*}
{*T1*}게임 메뉴 옵션{*ETW*}{*B*}
- 게임 í”Œë ˆì´ ì¤‘ì— {*BACK_BUTTON*} 단추를 눌러서 게임 메뉴로 ì´ë™í•œ ë‹¤ìŒ ì‚¬ìš©í•  수 있는 옵션입니다.{*B*}{*B*}
+ 게임 í”Œë ˆì´ ì¤‘ì— {*BACK_BUTTON*}ì„ ëˆŒëŸ¬ 게임 메뉴로 ì´ë™í•œ ë‹¤ìŒ ì‚¬ìš©í•  수 있는 옵션입니다.{*B*}{*B*}
{*T2*}호스트 옵션{*ETW*}{*B*}
호스트 플레ì´ì–´ë‚˜ 관리ìžë¡œ ì„¤ì •ëœ í”Œë ˆì´ì–´ëŠ” "호스트 옵션" ë©”ë‰´ì— ë“¤ì–´ê°ˆ 수 있습니다. ì´ ë©”ë‰´ì—서 불 확산과 TNT í­ë°œì„ 켜거나 ëŒ ìˆ˜ 있습니다.{*B*}{*B*}
{*T1*}플레ì´ì–´ 옵션{*ETW*}{*B*}
-플레ì´ì–´ì˜ í–‰ë™ ê¶Œí•œì„ ë³€ê²½í•˜ë ¤ë©´ 플레ì´ì–´ ì´ë¦„ì„ ì„ íƒí•˜ê³  {*CONTROLLER_VK_A*} 단추를 눌러 플레ì´ì–´ 특권 메뉴ì—서 ë‹¤ìŒ ì˜µì…˜ì„ ì¡°ì •í•˜ì‹­ì‹œì˜¤.{*B*}{*B*}
+플레ì´ì–´ì˜ í–‰ë™ ê¶Œí•œì„ ë³€ê²½í•˜ë ¤ë©´ 플레ì´ì–´ ì´ë¦„ì„ ì„ íƒí•˜ê³  {*CONTROLLER_VK_A*}를 눌러 플레ì´ì–´ 특권 메뉴ì—서 ë‹¤ìŒ ì˜µì…˜ì„ ì¡°ì •í•˜ì‹­ì‹œì˜¤.{*B*}{*B*}
{*T2*}건설 ë° ì±„ê´‘ 가능{*ETW*}{*B*}
ì´ ì˜µì…˜ì€ "플레ì´ì–´ 신뢰"를 ê»ì„ 때만 사용할 수 있습니다. ì´ ì˜µì…˜ì„ ì¼œë©´ 플레ì´ì–´ëŠ” 월드ì—서 ì¼ë°˜ì ì¸ í–‰ë™ì„ ëª¨ë‘ í•  수 있습니다. ì´ ì˜µì…˜ì„ ë„ë©´ 플레ì´ì–´ëŠ” 블ë¡ì„ 놓거나 파괴하지 못합니다.{*B*}{*B*}
@@ -340,27 +361,29 @@ Xbox 360 본체용 Minecraft는 멀티 í”Œë ˆì´ ê²Œìž„ì´ ê¸°ë³¸ê°’ìœ¼ë¡œ ë˜ì–
ì´ ì˜µì…˜ì€ "플레ì´ì–´ 신뢰"를 ê»ì„ 때만 사용할 수 있습니다. ì´ ì˜µì…˜ì„ ë„ë©´ 플레ì´ì–´ëŠ” ë™ë¬¼ì—게 피해를 줄 수 없습니다.{*B*}{*B*}
{*T2*}관리ìž{*ETW*}{*B*}
- ì´ ì˜µì…˜ì„ ì¼œë©´ 플레ì´ì–´ëŠ” 다른 플레ì´ì–´ì˜ íŠ¹ê¶Œì„ ë³€ê²½í•  수 있습니다(호스트 제외). “플레ì´ì–´ 신뢰â€ë¥¼ ë„ë©´ 플레ì´ì–´ë¥¼ 추방하거나 불 확산과 TNT í­ë°œì„ 켜거나 ëŒ ìˆ˜ 있습니다.{*B*}{*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*}
- 플레ì´ì–´ê°€ 플레ì´ì–´ ìžì‹  ë˜ëŠ” 다른 플레ì´ì–´ë¥¼ 월드 ë‚´ 다른 곳으로 ì´ë™ì‹œí‚¬ 수 있습니다.
+
+ {*T2*}순간ì´ë™ 가능{*ETW*}{*B*}
+ 플레ì´ì–´ê°€ 플레ì´ì–´ ìžì‹  ë˜ëŠ” 다른 플레ì´ì–´ë¥¼ 월드 ë‚´ 다른 곳으로 ì´ë™ì‹œí‚¬ 수 있습니다.
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>호스트 플레ì´ì–´ì™€ ê°™ì€ {*PLATFORM_NAME*} 본체로 플레ì´í•˜ëŠ” 플레ì´ì–´ë¥¼ 제외하고, ì´ ì˜µì…˜ì„ ì„ íƒí•˜ë©´ 다른 {*PLATFORM_NAME*} 본체로 ì ‘ì†í•˜ëŠ” 플레ì´ì–´ë¥¼ 추방할 수 있습니다. 추방당한 플레ì´ì–´ëŠ” ê²Œìž„ì´ ìƒˆë¡œ 시작ë˜ê¸° 전까지 다시 참가할 수 없습니다.</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>ë‹¤ìŒ íŽ˜ì´ì§€</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>ì´ì „ 페ì´ì§€</value>
@@ -426,61 +449,95 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
{*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*}
+- 새로운 ì•„ì´í…œ 추가 - 단단한 ì°°í™, ìƒ‰ìƒ ì°°í™, ì„탄 블ë¡, ê±´ì´ˆ ë”미, ìž‘ë™ê¸° ë ˆì¼, 레드스톤 블ë¡, ì¼ê´‘ 센서, 드로í¼, 호í¼, 호í¼ê°€ ë¶€ì°©ëœ ê´‘ë¬¼ 수레, TNTê°€ 실린 광물 수레, 레드스톤 ë¹„êµ íšŒë¡œ, ì••ë ¥íŒ, 신호기, 함정 ìƒìž, í­ì£½ 로켓, í­ì£½ 별, ì§€ì˜¥ì˜ ë³„, ëˆ, ë§ ë°©ì–´êµ¬, ì´ë¦„ 태그, ë§ ìƒì„± 알{*B*}
+- 새로운 괴물 추가 - 위ë”, ë§ë¼ë¹„틀어진 해골, 마녀, ë°•ì¥, ë§, 당나귀 ë° ë…¸ìƒˆ{*B*}
+- 새로운 지역 ìƒì„± 기능 추가 - 마녀 오ë‘막{*B*}
+- 신호기 ì¸í„°íŽ˜ì´ìŠ¤ê°€ 추가ë©ë‹ˆë‹¤.{*B*}
+- ë§ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 추가ë©ë‹ˆë‹¤.{*B*}
+- í˜¸í¼ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 추가ë©ë‹ˆë‹¤.{*B*}
+- í­ì£½ 추가 - í­ì£½ 별ì´ë‚˜ í­ì£½ 로켓 재료를 가지고 있으면 작업대ì—서 í­ì£½ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 활성화ë©ë‹ˆë‹¤.{*B*}
+- '모험 모드' 추가 - 올바른 ë„구로만 블ë¡ì„ ê¹° 수 있습니다.{*B*}
+- 새로운 사운드가 다수 추가ë©ë‹ˆë‹¤.{*B*}
+- ì´ì œ 괴물 ë° ë™ë¬¼, ì•„ì´í…œ, 발사체가 ì°¨ì›ë¬¸ì„ 통과할 수 있습니다.{*B*}
+- ì´ì œ íƒì§€ê¸° ì˜†ì— ë‹¤ë¥¸ íƒì§€ê¸°ë¡œ ë™ë ¥ì„ 공급해 잠글 수 있습니다.{*B*}
+- 좀비와 í•´ê³¨ì´ ë‹¤ë¥¸ 무기와 방어구를 가지고 ìƒì„±ë  수 있습니다.{*B*}
+- 새로운 ì‚¬ë§ ë©”ì‹œì§€ê°€ 추가ë©ë‹ˆë‹¤.{*B*}
+- ì´ë¦„ 태그로 괴물 ë° ë™ë¬¼ì— ì´ë¦„ì„ ë¶™ì¼ ìˆ˜ 있으며, 보관함 ì´ë¦„ì„ ë³€ê²½í•˜ì—¬ 메뉴를 ì—´ì—ˆì„ ë•Œ 표시ë˜ëŠ” ì œëª©ì„ ë°”ê¿€ 수 있습니다.{*B*}
+- 뼛가루는 ë” ì´ìƒ 모든 ê²ƒì„ ìµœëŒ€ í¬ê¸°ë¡œ 즉시 성장시키지 않으며, 무작위로 여러 ë‹¨ê³„ì— ê±¸ì³ ì„±ìž¥ì‹œí‚µë‹ˆë‹¤.{*B*}
+- 레드스톤 ë¹„êµ íšŒë¡œë¥¼ ì§ì ‘ 부착해서 ìƒìž, 양조대, 디스펜서, 주í¬ë°•스 ë‚´ìš©ë¬¼ì„ ì•Œë ¤ì£¼ëŠ” 레드스톤 신호를 ê°ì§€í•  수 있습니다.{*B*}
+- 디스펜서를 아무 방향으로나 향하게 할 수 있습니다.{*B*}
+- 황금 사과를 먹으면 플레ì´ì–´ê°€ 잠시 ë™ì•ˆ 추가로 'í¡ìˆ˜' ì²´ë ¥ì„ ì–»ìŠµë‹ˆë‹¤.{*B*}
+- ì§€ì—­ì— ì˜¤ëž˜ ë¨¸ë¬¼ìˆ˜ë¡ ì§€ì—­ì—서 ìƒì„±ë˜ëŠ” ê´´ë¬¼ì´ ê°•í•´ì§‘ë‹ˆë‹¤.{*B*}
</value>
</data>
<data name="IDS_TITLEUPDATE"><value>{*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*}
+새로운 ê¸°ëŠ¥ì´ ë§Žì´ ì¶”ê°€ë습니다. ì¶”ê°€ëœ ì£¼ìš” 기능 ì¼ë¶€ë¥¼ 소개해 드리니 ì½ì–´ë³´ê³  ì‹  나는 ê²Œìž„ì˜ ì„¸ê³„ë¡œ ì—¬í–‰ì„ ë– ë‚˜ì‹­ì‹œì˜¤!{*B*}{*B*}
+{*T1*}New Items{*ETB*} - 단단한 ì°°í™, ìƒ‰ìƒ ì°°í™, ì„탄 블ë¡, ê±´ì´ˆ ë”미, ìž‘ë™ê¸° ë ˆì¼, 레드스톤 블ë¡, ì¼ê´‘ 센서, 드로í¼, 호í¼, 호í¼ê°€ ë¶€ì°©ëœ ê´‘ë¬¼ 수레, TNTê°€ 실린 광물 수레, 레드스톤 ë¹„êµ íšŒë¡œ, ì••ë ¥íŒ, 신호기, 함정 ìƒìž, í­ì£½ 로켓, í­ì£½ 별, ì§€ì˜¥ì˜ ë³„, ëˆ, ë§ ë°©ì–´êµ¬, ì´ë¦„ 태그, ë§ ìƒì„± 알{*B*}{*B*}
+{*T1*} 새로운 괴물 ë° ë™ë¬¼ {*ETB*} - 위ë”, ë§ë¼ë¹„틀어진 해골, 마녀, ë°•ì¥, ë§, 당나귀 ë° ë…¸ìƒˆ{*B*}{*B*}
+{*T1*} 새로운 기능 {*ETB*} - ë§ ê¸¸ë“¤ì´ê¸° ë° íƒ€ê¸°, í­ì£½ 만들어 터뜨리기, ì´ë¦„ 태그로 ë™ë¬¼ ë° ê´´ë¬¼ì— ì´ë¦„ ë¶™ì´ê¸°, 보다 ê³ ì„±ëŠ¥ì˜ ë ˆë“œìŠ¤í†¤ 회로 만들기, ì†ë‹˜ì´ ìžì‹ ì˜ 월드ì—서 í•  수 있는 í–‰ë™ì„ 제어하는 새로운 호스트 옵션 {*B*}{*B*}
+{*T1*} 새로운 튜토리얼 월드 {*ETB*} – 기존 ë° ìƒˆ ê¸°ëŠ¥ì˜ ì‚¬ìš©ë²•ì„ íŠœí† ë¦¬ì–¼ 월드ì—서 배우십시오. ë˜í•œ ì›”ë“œì— ìˆ¨ê²¨ì§„ 모든 비밀 ìŒë°˜ 찾기ì—ë„ ë„ì „í•´ 보십시오!{*B*}{*B*}
</value>
</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>ë§</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}í”Œë ˆì´ ë°©ë²•: ë§{*ETW*}{*B*}{*B*}
+ë§ê³¼ 당나귀는 주로 íƒ íŠ¸ì¸ í‰ì›ì—서 ì°¾ì„ ìˆ˜ 있습니다. 노새는 당나귀와 ë§ì˜ 새ë¼ì´ì§€ë§Œ ë²ˆì‹ ëŠ¥ë ¥ì´ ì—†ìŠµë‹ˆë‹¤.{*B*}
+다 ìžëž€ ë§ê³¼ 당나귀, 노새는 타고 ë‹¤ë‹ ìˆ˜ 있습니다. 하지만 방어구는 ë§ì—게만 ìž…íž ìˆ˜ 있으며, ì•„ì´í…œ ìš´ë°˜ì— í•„ìš”í•œ 안장 ê°€ë°©ì€ ë‹¹ë‚˜ê·€ì™€ 노새ì—게만 착용시킬 수 있습니다.{*B*}{*B*}
+ë§ê³¼ 당나귀, 노새는 ê¸¸ì„ ë“¤ì—¬ì•¼ 사용할 수 있습니다. ë§ì€ 타려고 시ë„í•¨ìœ¼ë¡œì¨ ê¸¸ì„ ë“¤ì¼ ìˆ˜ 있지만, ì´ ê³¼ì •ì—서 ë§ì€ 기수를 떨어트리려고 í•  것ì´ë¯€ë¡œ ë§ë“±ì— 잘 타고 있어야 합니다.{*B*}
+ê¸¸ì´ ë“¤ë©´ ì£¼ë³€ì— í•˜íŠ¸ 표시가 나타나며, ë” ì´ìƒ 기수를 떨어트리려고 하지 않습니다. ë§ì˜ ë°©í–¥ì„ ì¡°ì •í•˜ë ¤ë©´ ì•ˆìž¥ì„ ì°©ìš©ì‹œì¼œì•¼ 합니다.{*B*}{*B*}
+ì•ˆìž¥ì€ ë§ˆì„ ì£¼ë¯¼ìœ¼ë¡œë¶€í„° 구매하거나 ê³³ê³³ì— ìˆ¨ê²¨ì§„ ìƒìžì— 들어 있습니다.{*B*}
+ê¸¸ì´ ë“  당나귀와 ë…¸ìƒˆì— ìƒìžë¥¼ 부착하면 안장 ê°€ë°©ì„ ë‹¬ì•„ì¤„ 수 있습니다. ì´ ê°€ë°©ì€ ë‹¹ë‚˜ê·€ ë˜ëŠ” 노새를 타거나 수그린 ìƒíƒœì—서 사용 가능합니다.{*B*}{*B*}
+ë§ê³¼ 당나귀(노새 제외)는 황금 사과나 황금 ë‹¹ê·¼ì„ ì‚¬ìš©í•´ 다른 ë™ë¬¼ë“¤ì²˜ëŸ¼ êµë°°í•  수 있습니다.{*B*}
+ë§ì•„지는 ì‹œê°„ì´ ì§€ë‚˜ë©´ 성장하여 ë§ì´ ë˜ë©°, ë°€ì´ë‚˜ 건초를 먹ì´ë©´ 성장 ì‹œê°„ì´ ë‹¨ì¶•ë©ë‹ˆë‹¤.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>신호기</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}í”Œë ˆì´ ë°©ë²•: 신호기{*ETW*}{*B*}{*B*}
+ìž‘ë™í•˜ëŠ” 신호기는 하늘로 ë°ì€ ê´‘ì„ ì„ ì˜ì•„ 올리고 주변 플레ì´ì–´ì—게 ëŠ¥ë ¥ì„ ë¶€ì—¬í•©ë‹ˆë‹¤.{*B*}
+신호기는 위ë”를 잡고 ì–»ì„ ìˆ˜ 있는 유리와 í‘ìš”ì„, ì§€ì˜¥ì˜ ë³„ë¡œ 만듭니다.{*B*}{*B*}
+신호기는 ë‚®ì— í–‡ë¹›ì„ ë°›ì„ ìˆ˜ ìž¥ì†Œì— ë†“ì•„ì•¼ 하며, 반드시 ì² , 황금, ì—메랄드 ë° ë‹¤ì´ì•„몬드 ë“±ì˜ í”¼ë¼ë¯¸ë“œ ìœ„ì— ì„¤ì¹˜í•´ì•¼ 합니다.{*B*}
+하지만 ì–´ë–¤ 재료를 ì„ íƒí•´ë„ ì‹ í˜¸ê¸°ì˜ ëŠ¥ë ¥ì—는 ì˜í–¥ì„ 주지 않습니다.{*B*}{*B*}
+신호기 메뉴ì—서 ì‹ í˜¸ê¸°ì˜ ì£¼ 능력 1개를 ì„ íƒí•  수 있습니다. 피ë¼ë¯¸ë“œì˜ 층수가 ë§Žì„ìˆ˜ë¡ ëŠ¥ë ¥ ì„ íƒì˜ í­ì´ ë” ë„“ì–´ì§‘ë‹ˆë‹¤.{*B*}
+4층 ì´ìƒ ë˜ëŠ” 피ë¼ë¯¸ë“œ ìœ„ì˜ ì‹ í˜¸ê¸°ëŠ” ë³´ì¡° ëŠ¥ë ¥ì¸ '재ìƒ'ì´ë‚˜ 주 능력 ê°•í™” 중 한 가지를 추가로 ì„ íƒí•  수 있습니다.{*B*}{*B*}
+ì‹ í˜¸ê¸°ì˜ ëŠ¥ë ¥ì„ ì„¤ì •í•˜ë ¤ë©´ 지불 ìŠ¬ë¡¯ì— ì—메랄드, 다ì´ì•„몬드, 황금 ë˜ëŠ” ì²  주괴를 넣어야 합니다.{*B*}
+재료를 넣으면 신호기ì—서 ëŠ¥ë ¥ì´ ë¬´ê¸°í•œìœ¼ë¡œ ë°œë™ë©ë‹ˆë‹¤.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>í­ì£½</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}í”Œë ˆì´ ë°©ë²•: í­ì£½{*ETW*}{*B*}{*B*}
+í­ì£½ì€ ì†ì´ë‚˜ 디스펜서로 발사할 수 있는 ìž¥ì‹ ì•„ì´í…œì´ë©°, 기본 ìž¬ë£Œì¸ ì¢…ì´ì™€ í™”ì•½ì— í­ì£½ ë³„ì„ ë¶€ê°€ì ìœ¼ë¡œ ë”í•´ 만들 수 있습니다.{*B*}
+í­ì£½ ë³„ì„ ë§Œë“¤ 때 추가 재료를 넣으면 색ìƒê³¼ 사ë¼ì§€ëŠ” 형태, 모양, í¬ê¸°, 효과(궤ì ì´ë‚˜ ë°˜ì§ìž„ 등)를 ì›í•˜ëŠ” 대로 바꿀 수 있습니다.{*B*}{*B*}
+í­ì£½ì„ 만들려면 소지품 위 3x3 ì œìž‘ì¹¸ì— í™”ì•½ê³¼ 종ì´ë¥¼ 넣으십시오.{*B*}
+ì œìž‘ì¹¸ì— í­ì£½ 별 여러 개를 추가로 넣어 í­ì£½ì— ì¡°í•©í•  수 있습니다.{*B*}
+제작칸 ìŠ¬ë¡¯ì— í™”ì•½ì„ ë” ë§Žì´ ì±„ìš°ë©´ í­ì£½ ë³„ì´ í­ë°œí•˜ëŠ” 높ì´ê°€ ì¦ê°€í•©ë‹ˆë‹¤.{*B*}{*B*}
+그런 ë‹¤ìŒ ê²°ê³¼ë¬¼ 슬롯 밖으로 ì™„ì„±ëœ í­ì£½ì„ 꺼낼 수 있습니다.{*B*}{*B*}
+í­ì£½ ë³„ì€ í™”ì•½ê³¼ 염료를 ì œìž‘ì¹¸ì— ë„£ì–´ 만들 수 있습니다.{*B*}
+ – 염료는 í­ì£½ ë³„ì´ í­ë°œí•  ë•Œì˜ ìƒ‰ìƒì„ 결정합니다.{*B*}
+ – í­ì£½ ë³„ì˜ ëª¨ì–‘ì€ ë¶ˆì˜ì‹œê°œ, 금ë©ì´, 깃털, 괴물 머리를 추가해 바꿀 수 있습니다.{*B*}
+ – 다ì´ì•„몬드나 ë°œê´‘ì„ ê°€ë£¨ë¥¼ 사용하면 궤ì ì´ë‚˜ ë°˜ì§ìž„ 효과가 추가ë©ë‹ˆë‹¤.{*B*}{*B*}
+í­ì£½ ë³„ì„ ë§Œë“  후ì—는 염료와 함께 ì¡°í•©í•´, í­ë°œ 후 사ë¼ì§ˆ ë•Œì˜ ìƒ‰ìƒì„ 조절할 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>호í¼</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}í”Œë ˆì´ ë°©ë²•: 호í¼{*ETW*}{*B*}{*B*}
+호í¼ëŠ” ë³´ê´€í•¨ì— ì•„ì´í…œì„ 넣거나 빼고, 보관함 ì•ˆì— ë“¤ì–´ê°„ ì•„ì´í…œì„ ìžë™ìœ¼ë¡œ 집습니다.{*B*}
+호í¼ëŠ” 양조대, ìƒìž, 디스펜서, 드로í¼, ìƒìžê°€ ë“  광물 수레, 호í¼ê°€ ë¶€ì°©ëœ ê´‘ë¬¼ 수레, 다른 호í¼ì— ì˜í–¥ì„ 줄 수 있습니다.{*B*}{*B*}
+호í¼ëŠ” ê·¸ ìœ„ì— ì„¤ì¹˜ëœ ì ì ˆí•œ 보관함으로부터 ê³„ì† ì•„ì´í…œì„ 빨아들ì´ë ¤ê³  시ë„합니다. ë˜í•œ ë³´ê´€ëœ ì•„ì´í…œì„ 배출구 쪽 ë³´ê´€í•¨ì— ë„£ìœ¼ë ¤ê³  합니다.{*B*}
+호í¼ì— ë ˆë“œìŠ¤í†¤ì˜ ë™ë ¥ì´ 공급ë˜ë©´ ìž‘ë™ì„ 멈추고 ì•„ì´í…œ 빨아들ì´ê¸°ì™€ 넣기를 중지합니다.{*B*}{*B*}
+호í¼ëŠ” ì•„ì´í…œì„ 내보내려는 ë°©í–¥ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. 호í¼ê°€ 특정 블ë¡ì„ 가리키게 하려면 호í¼ë¥¼ 해당 블ë¡ê³¼ 대치ë˜ëŠ” ë°©í–¥ì— ì„¤ì¹˜í•˜ì‹­ì‹œì˜¤.{*B*}
+
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>드로í¼</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}í”Œë ˆì´ ë°©ë²•: 드로í¼{*ETW*}{*B*}{*B*}
+드로í¼ì— ë ˆë“œìŠ¤í†¤ì˜ ë™ë ¥ì´ 주입ë˜ë©´ ê·¸ ì•ˆì— ë“  ì•„ì´í…œ 하나를 무작위로 ë•…ì— ë–¨ì–´íŠ¸ë¦½ë‹ˆë‹¤. {*CONTROLLER_ACTION_USE*}ì„(를) 눌러 드로í¼ë¥¼ ì—´ë©´ ì†Œì§€í’ˆì˜ ì•„ì´í…œì„ 드로í¼ì— ë„£ì„ ìˆ˜ 있습니다.{*B*}
+드로í¼ê°€ ìƒìžë‚˜ 다른 ì¢…ë¥˜ì˜ ë³´ê´€í•¨ì„ í–¥í•´ 놓였다면 ì•„ì´í…œì€ ë•…ì´ ì•„ë‹ˆë¼ í•´ë‹¹ ìƒìž ì•ˆì— ë“¤ì–´ê°‘ë‹ˆë‹¤. ë“œë¡œí¼ ì—¬ëŸ¬ 개를 길게 연결하면 먼 거리로 ì•„ì´í…œì„ 보낼 수 있으며, ì´ ê¸°ëŠ¥ì„ ìž‘ë™ì‹œí‚¤ë ¤ë©´ ê° ë“œë¡œí¼ì— 별ë„로 ë™ë ¥ì„ 공급하거나 차단해야 합니다.
+ </value>
+</data>
<data name="IDS_DESC_SWORD"><value>ë§¨ì† ê³µê²©ë³´ë‹¤ ìœ„ë ¥ì´ ê°•í•©ë‹ˆë‹¤.</value>
</data>
<data name="IDS_DESC_SHOVEL"><value>ì†ì„ 사용하는 것보다 í™, 잡초, 모래, ìžê°ˆ, ëˆˆì„ ë” ë¹¨ë¦¬ 파냅니다. 눈ë©ì´ë¥¼ 파내려면 ì‚½ì´ í•„ìš”í•©ë‹ˆë‹¤.</value>
@@ -606,10 +663,36 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_DESC_MAP"><value>ì§€ë„를 들고 ìžˆì„ ë™ì•ˆ íƒí—˜í•œ ì§€ì—­ì˜ ì´ë¯¸ì§€ë¥¼ 만들어냅니다. ê¸¸ì„ ì°¾ëŠ” ë° ì‚¬ìš©í•  수 있습니다.</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>사용하면 현재 ì†í•œ ì›”ë“œì˜ ì§€ë„ ì¼ë¶€ê°€ ë˜ë©°, ì§€ì—­ì„ íƒí—˜í•˜ë©´ 나머지 ë¶€ë¶„ì´ ì±„ì›Œì§‘ë‹ˆë‹¤.</value>
+ </data>
<data name="IDS_DESC_BOW"><value>화살과 함께 사용하여 ì›ê±°ë¦¬ ê³µê²©ì„ í•©ë‹ˆë‹¤.</value>
</data>
<data name="IDS_DESC_ARROW"><value>í™œì— ìž¥ì „í•˜ì—¬ 사용합니다.</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>위ë”ì—게서 ì–»ì„ ìˆ˜ 있으며 ì‹ í˜¸ê¸°ì˜ ìž¬ë£Œë¡œ 사용합니다.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>ìž‘ë™í•˜ë©´ 화려한 ìƒ‰ì˜ í­ë°œì„ ì¼ìœ¼í‚µë‹ˆë‹¤. 색ìƒê³¼ 효과, 모양과 사ë¼ì§€ëŠ” íŒ¨í„´ì€ í­ì£½ì„ 만들 때 사용한 í­ì£½ ë³„ì— ë”°ë¼ ê²°ì •ë©ë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>í­ì£½ì˜ 색ìƒ, 효과, ëª¨ì–‘ì„ ê²°ì •í•˜ëŠ” 재료입니다.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>레드스톤 íšŒë¡œì— ì‚¬ìš©í•˜ì—¬ 신호 ê°•ë„를 유지, 비êµ, 낮추거나 특정 ë¸”ë¡ ìƒíƒœë¥¼ 측정합니다.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>움ì§ì´ëŠ” TNT 블ë¡ì²˜ëŸ¼ ìž‘ë™í•˜ëŠ” 광물 ìˆ˜ë ˆì˜ í•œ 종류입니다.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>í–‡ë¹›ì´ ìžˆê±°ë‚˜ ì—†ìŒì— ë”°ë¼ ë ˆë“œìŠ¤í†¤ 신호를 발산하는 블ë¡ìž…니다.</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>호í¼ì™€ 비슷하게 ìž‘ë™í•˜ëŠ” 특별한 광물 수레입니다. íŠ¸ëž™ì— ìžˆëŠ” ì•„ì´í…œì„ 주워 담거나 수레 ìœ„ì— ìžˆëŠ” 보관함ì—서 ì•„ì´í…œì„ 빼냅니다.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>ë§ì— ìž…íž ìˆ˜ 있는 특별한 방어구입니다. ë°©ì–´ë ¥ì´ 5 ì¦ê°€í•©ë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>ë§ì— ìž…íž ìˆ˜ 있는 특별한 방어구입니다. ë°©ì–´ë ¥ì´ 7 ì¦ê°€í•©ë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>ë§ì— ìž…íž ìˆ˜ 있는 특별한 방어구입니다. ë°©ì–´ë ¥ì´ 11 ì¦ê°€í•©ë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>괴물 ë° ë™ë¬¼ì„ 플레ì´ì–´ë‚˜ ìš¸íƒ€ë¦¬ì— ë§¤ì–´ë‘¡ë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>괴물 ë° ë™ë¬¼ ì´ë¦„ ì§“ê¸°ì— ì‚¬ìš©ë©ë‹ˆë‹¤.</value>
+</data>
<data name="IDS_DESC_BREAD"><value>{*ICON_SHANK_01*}를 2.5ë§Œí¼ íšŒë³µí•©ë‹ˆë‹¤.</value>
</data>
<data name="IDS_DESC_CAKE"><value>{*ICON_SHANK_01*}를 1ë§Œí¼ íšŒë³µí•©ë‹ˆë‹¤. 효과가 6번까지 중복ë©ë‹ˆë‹¤.</value>
@@ -934,100 +1017,158 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_DESC_SKULL"><value>괴물 머리는 장ì‹ìš©ìœ¼ë¡œ 놓아둘 ìˆ˜ë„ ìžˆê³ , 투구 ìŠ¬ë¡¯ì— ë†“ì•„ 마스í¬ë¡œ 쓸 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>ëª…ë ¹ì„ ì‹¤í–‰í•˜ëŠ” ë° ì‚¬ìš©í•©ë‹ˆë‹¤.</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>하늘로 ê´‘ì„ ì„ ë°œì‚¬í•˜ê³  주변 플레ì´ì–´ì—게 ìƒíƒœ 효과를 부여합니다.</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>ì•ˆì— ë¸”ë¡ê³¼ ì•„ì´í…œì„ 보관합니다. ìƒìž 2개를 나란히 ë¶™ì´ë©´ ìš©ëŸ‰ì´ 2ë°°ì¸ í° ìƒìžê°€ 만들어집니다. 함정 ìƒìžëŠ” ì—´ì—ˆì„ ë•Œ 레드스톤 ì „ê¸°ë„ ë°œìƒì‹œí‚µë‹ˆë‹¤.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>레드스톤 전기를 ë°œìƒì‹œí‚µë‹ˆë‹¤. ì•„ì´í…œì´ ë§Žì´ ì˜¬ë ¤ì ¸ 있으면 전기가 강해집니다.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>레드스톤 전기를 ë°œìƒì‹œí‚µë‹ˆë‹¤. ì•„ì´í…œì´ ë§Žì´ ì˜¬ë ¤ì ¸ 있으면 전기가 강해집니다. 가벼운 ë°œíŒë³´ë‹¤ 무거운 무게를 필요로 합니다.</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>ë ˆë“œìŠ¤í†¤ì˜ ë™ë ¥ì›ìœ¼ë¡œ 사용ë©ë‹ˆë‹¤. 다시 레드스톤으로 변환할 수 있습니다.</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>ì•„ì´í…œì„ 잡거나 보관함 안으로 ë˜ëŠ” 밖으로 ì•„ì´í…œì„ 옮기는 ë° ì‚¬ìš©í•©ë‹ˆë‹¤.</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>호í¼ê°€ ë¶€ì°©ëœ ê´‘ë¬¼ 수레를 사용 가능 ë˜ëŠ” 불가능하게 하고 TNTê°€ 실린 광물 수레를 ìž‘ë™ì‹œí‚¬ 수 있는 ë ˆì¼ìž…니다.</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>레드스톤 전기를 í˜ë¦¬ë©´ ì•„ì´í…œì„ 잡고 있거나, 떨어트리거나, 다른 보관함으로 ì•„ì´í…œì„ 밀어보냅니다.</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>단단한 ì°°í™ìœ¼ë¡œ 만든 ìƒ‰ì´ í™”ë ¤í•œ 블ë¡ìž…니다.</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>ë§, 당나귀, 노새ì—게 먹여 ì²´ë ¥ì„ 10 회복시킵니다. ë§ì•„지가 ë” ë¹¨ë¦¬ 성장하게 합니다.</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>화로ì—서 ì°°í™ì„ 제련해서 만듭니다.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>유리와 염료로 만듭니다.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>스테ì¸ë“œê¸€ë¼ìŠ¤ë¡œë¶€í„° 만듭니다.</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>ì„íƒ„ì„ ë³´ê´€í•  수 있는 편리한 방법입니다. 화로ì—서 연료로 사용할 수 있습니다.</value>
+ </data>
<data name="IDS_SQUID"><value>오징어</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>잡으면 먹물 주머니를 ì–»ì„ ìˆ˜ 있습니다.</value>
- </data>
+ </data>
<data name="IDS_COW"><value>소</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>잡으면 ê°€ì£½ì„ ì–»ì„ ìˆ˜ 있습니다. ë˜í•œ 우유를 짜서 ì–‘ë™ì´ì— ë‹´ì„ ìˆ˜ 있습니다.</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>ì–‘</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>가위를 사용하면 ì–‘í„¸ì„ ì–»ì„ ìˆ˜ 있습니다. ì´ë¯¸ í„¸ì„ ê¹Žì•˜ë‹¤ë©´ ì–‘í„¸ì´ ë‚˜ì˜¤ì§€ 않습니다. í„¸ì„ ì—¼ìƒ‰í•˜ì—¬ ìƒ‰ì„ ë°”ê¿€ 수 있습니다.</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>ë‹­</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>잡으면 ê¹ƒí„¸ì´ ë‚˜ì˜µë‹ˆë‹¤. ê°€ë” ì•Œì„ ë‚³ìŠµë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>ë¼ì§€</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>잡으면 ë¼ì§€ê³ ê¸°ë¥¼ ì–»ì„ ìˆ˜ 있습니다. ì•ˆìž¥ì„ ì‚¬ìš©í•˜ë©´ 타고 ë‹¤ë‹ ìˆ˜ 있습니다.</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>늑대</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>공격받기 전까지는 위협ì ì´ì§€ 않으며, 공격하면 뒤를 습격합니다. 뼈를 ì´ìš©í•´ì„œ 길들ì´ë©´ ë°ë¦¬ê³  ë‹¤ë‹ ìˆ˜ 있으며, 플레ì´ì–´ë¥¼ 공격하는 대ìƒì„ 공격합니다.</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>ê°€ê¹Œì´ ë‹¤ê°€ê°€ë©´ í­ë°œí•©ë‹ˆë‹¤!</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>해골</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>플레ì´ì–´ì—게 í™”ì‚´ì„ ì©ë‹ˆë‹¤. 처치하면 í™”ì‚´ì„ ë–¨ì–´ëœ¨ë¦½ë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>거미</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>ê°€ê¹Œì´ ë‹¤ê°€ê°€ë©´ 공격합니다. ë²½ì„ íƒ€ê³  오를 수 있으며, 처치하면 ì‹¤ì„ ë–¨ì–´ëœ¨ë¦½ë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>좀비</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>ê°€ê¹Œì´ ë‹¤ê°€ê°€ë©´ 공격합니다.</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>Pigman 좀비</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>먼저 공격하지 않지만, ê³µê²©ì„ ë°›ìœ¼ë©´ 무리를 지어 달려듭니다.</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>닿으면 í­ë°œí•˜ëŠ” 불ë©ì–´ë¦¬ë¥¼ ë˜ì§‘니다.</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>슬ë¼ìž„</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>피해를 입으면 ìž‘ì€ ìŠ¬ë¼ìž„으로 분리ë©ë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>플레ì´ì–´ê°€ ë°”ë¼ë³´ë©´ 공격합니다. 블ë¡ì„ 들어 옮길 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Sliverfish</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>공격하면 ê·¼ì²˜ì˜ Sliverfish를 ëŒì–´ë“¤ìž…니다. ëŒ ë¸”ë¡ì— 숨어 있습니다.</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>ë™êµ´ 거미</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>ë…ì´ ìžˆìŠµë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Mooshroom</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>그릇과 함께 사용하면 ë²„ì„¯ì£½ì„ ë§Œë“¤ 수 있습니다. 가위를 사용하면 ë²„ì„¯ì„ ë–¨ì–´ëœ¨ë¦¬ê³  보통 소가 ë©ë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>눈 골렘</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>플레ì´ì–´ëŠ” 눈 블ë¡ê³¼ í˜¸ë°•ì„ ì‚¬ìš©í•´ 눈 ê³¨ë ˜ì„ ë§Œë“¤ 수 있습니다. 눈 ê³¨ë ˜ì€ í”Œë ˆì´ì–´ì˜ ì ì—게 눈ë©ì´ë¥¼ ë˜ì§‘니다.</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>Ender 드래곤</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>Enderì—서 찾아볼 수 있는 거대한 ê²€ì€ìƒ‰ 드래곤입니다.</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Blaze</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>주로 지하 요새ì—서 찾아볼 수 있는 ì ìž…니다. 죽으면 Blaze 막대를 떨어뜨립니다.</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>마그마 í브</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>지하ì—서 찾아볼 수 있습니다. 슬ë¼ìž„처럼 죽으면 분열하여 여러 ê°œì˜ ì¡°ê·¸ë§Œ í브가 ë©ë‹ˆë‹¤.</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>ë§ˆì„ ì‚¬ëžŒ</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>오셀롯</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>정글ì—서 ì°¾ì„ ìˆ˜ 있으며 ë‚ ìƒì„ ì„ 먹여서 ì¡°ë ¨ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤. ì´ë•Œ ê°‘ìžê¸° 움ì§ì´ë©´ ì˜¤ì…€ë¡¯ì´ ê²ì„ 먹고 ë„ë§ì¹˜ê¸° 때문ì—, ì˜¤ì…€ë¡¯ì´ ë‹¤ê°€ì˜¤ê²Œ 만들어야 합니다.</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>철 골렘</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>마ì„ì„ ë³´í˜¸í•˜ê¸° 위해 나타납니다. ì²  블ë¡ê³¼ 호박으로 만들 수 있습니다.</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>ë°•ì¥</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>ì´ ë‚ ì•„ë‹¤ë‹ˆëŠ” ë™ë¬¼ì€ ë™êµ´ì´ë‚˜ ê·¸ ì™¸ì˜ ë„“ê³  íì‡„ëœ ê³µê°„ì—서 발견ë©ë‹ˆë‹¤.</value>
+ </data>
+<data name="IDS_WITCH"><value>마녀</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>늪ì—서 만날 수 있는 ì´ ì ì€ ë¬¼ì•½ì„ ë˜ì§€ë©° 공격합니다. 처치하면 ë¬¼ì•½ì„ ë–¨ì–´íŠ¸ë¦½ë‹ˆë‹¤.</value>
+ </data>
+<data name="IDS_HORSE"><value>ë§</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>ì´ ë™ë¬¼ì€ 길들여서 타고 ë‹¤ë‹ ìˆ˜ 있습니다.</value>
+ </data>
+<data name="IDS_DONKEY"><value>당나귀</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>ì´ ë™ë¬¼ì€ 길들여서 타고 ë‹¤ë‹ ìˆ˜ 있으며, ìƒìžë¥¼ 달아줄 수 있습니다.</value>
+ </data>
+<data name="IDS_MULE"><value>노새</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>ë§ê³¼ 당나귀를 êµë°°ì‹œì¼œ 낳습니다. ì´ ë™ë¬¼ì€ 길들여서 타고 ë‹¤ë‹ ìˆ˜ 있으며 ìƒìžë¥¼ 달아줄 수 있습니다.</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>좀비 ë§</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>해골 ë§</value>
+ </data>
+<data name="IDS_WITHER"><value>위ë”</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>위ë”ì˜ í•´ê³¨ê³¼ ì˜í˜¼ 모래로 만듭니다. 플레ì´ì–´ë¥¼ 향해 í­ë°œí•˜ëŠ” í•´ê³¨ì„ ë°œì‚¬í•©ë‹ˆë‹¤.</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1042,7 +1183,7 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_CREDITS_RESTOFMOJANG"><value>Rest of Mojang Office</value>
</data>
-<data name="IDS_CREDITS_LEADPC"><value>리드 게임 프로그래머 Minecraft PC</value>
+<data name="IDS_CREDITS_LEADPC"><value>Lead Game Programmer Minecraft PC</value>
</data>
<data name="IDS_CREDITS_CODENINJA"><value>Code Ninja</value>
</data>
@@ -1374,6 +1515,8 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_ITEM_MAP"><value>ì§€ë„</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>빈 ì§€ë„</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>ìŒì•… ë””ìŠ¤í¬ - "13"</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>ìŒì•… ë””ìŠ¤í¬ - "cat"</value>
@@ -1476,6 +1619,28 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Creeper 머리</value>
</data>
+<data name="IDS_NETHER_STAR"><value>ì§€ì˜¥ì˜ ë³„</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>í­ì£½ 로켓</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>í­ì£½ 별</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>레드스톤 ë¹„êµ íšŒë¡œ</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>TNT가 실린 광물 수레</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>호í¼ê°€ ë¶€ì°©ëœ ê´‘ë¬¼ 수레</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>ì² ì œ ë§ ë°©ì–´êµ¬</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>황금 ë§ ë°©ì–´êµ¬</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>다ì´ì•„몬드 ë§ ë°©ì–´êµ¬</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>ëˆ</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>ì´ë¦„ 태그</value>
+ </data>
<data name="IDS_TILE_STONE"><value>ëŒ</value>
</data>
<data name="IDS_TILE_GRASS"><value>잡초 블ë¡</value>
@@ -1492,6 +1657,8 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>정글 나무 íŒìž</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>나무 íŒìž(종류 무관)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>묘목</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>참나무 묘목</value>
@@ -1828,6 +1995,190 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_TILE_SKULL"><value>ë‘개골</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>명령 블ë¡</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>신호기</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>함정 ìƒìž</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>가벼운 ì••ë ¥íŒ</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>무거운 ì••ë ¥íŒ</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>레드스톤 ë¹„êµ íšŒë¡œ</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>ì¼ê´‘ 센서</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>레드스톤 블ë¡</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>호í¼</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>ìž‘ë™ê¸° ë ˆì¼</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>드로í¼</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>ìƒ‰ìƒ ì°°í™</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>ê±´ì´ˆ ë”미</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>단단한 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>ì„탄 블ë¡</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>ê²€ì€ìƒ‰ ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>빨간색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>녹색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>갈색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>파란색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>ìžì£¼ìƒ‰ ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>ì²­ë¡ìƒ‰ ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>ë°ì€ 회색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>회색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>ë¶„í™ìƒ‰ ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>ë¼ìž„색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>노란색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>ë°ì€ 파란색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>ìží™ìƒ‰ ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>주황색 ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>í°ìƒ‰ ì°°í™</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>ê²€ì€ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>빨간색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>녹색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>갈색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>파란색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>ìžì£¼ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>ì²­ë¡ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>ë°ì€ 회색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>회색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>ë¶„í™ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>ë¼ìž„색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>노란색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>ë°ì€ 파란색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>ìží™ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>주황색 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>í°ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>ê²€ì€ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>빨간색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>녹색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>갈색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>파란색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>ìžì£¼ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>ì²­ë¡ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>ë°ì€ 회색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>회색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>ë¶„í™ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>ë¼ìž„색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>노란색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>ë°ì€ 파란색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>ìží™ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>주황색 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>í°ìƒ‰ 스테ì¸ë“œê¸€ë¼ìФ íŒìœ ë¦¬</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>ìž‘ì€ ê³µ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>í° ê³µ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>별 모양</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Creeper 모양</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>í­ë°œ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>알 수 없는 모양</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>ê²€ì€ìƒ‰</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>빨간색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>녹색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>갈색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>파란색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>ìžì£¼ìƒ‰</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>ì²­ë¡ìƒ‰</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>ë°ì€ 회색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>회색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>ë¶„í™ìƒ‰</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>ë¼ìž„색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>노란색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>ë°ì€ 파란색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>ìží™ìƒ‰</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>주황색</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>í°ìƒ‰</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>ì‚¬ìš©ìž ì§€ì •</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>사ë¼ì§€ëŠ” 패턴:</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>ë°˜ì§ìž„</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>궤ì </value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>효과 시간:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>현재 컨트롤</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>배치</value>
@@ -1854,9 +2205,9 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_CONTROLS_DROP"><value>버리기</value>
</data>
-<data name="IDS_CONTROLS_SNEAK"><value>살금살금 걷기</value>
+<data name="IDS_CONTROLS_SNEAK"><value>조용히 걷기</value>
</data>
-<data name="IDS_CONTROLS_SNEAKFLY"><value>살금살금 걷기/아래로 비행</value>
+<data name="IDS_CONTROLS_SNEAKFLY"><value>조용히 걷기/아래로 비행</value>
</data>
<data name="IDS_CONTROLS_THIRDPERSON"><value>ì¹´ë©”ë¼ ëª¨ë“œ 변경</value>
</data>
@@ -2005,8 +2356,7 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
ì´ê³³ì€ 소지품입니다. ì´ í™”ë©´ì—는 ì†ì— 들고 쓸 수 있는 ì•„ì´í…œê³¼ 가지고 ë‹¤ë‹ ìˆ˜ 있는 ì•„ì´í…œì´ ëª¨ë‘ í‘œì‹œë©ë‹ˆë‹¤. ë°©ì–´ë ¥ ë˜í•œ ì´ í™”ë©´ì—서 확ì¸í•  수 있습니다.
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
계ì†í•˜ë ¤ë©´ {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
소지품 ì‚¬ìš©ë²•ì„ ì´ë¯¸ 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
@@ -2027,7 +2377,7 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- ì•„ì´í…œ 정보를 ë” ë³´ë ¤ë©´ í¬ì¸í„°ë¡œ ì•„ì´í…œì„ 가리킨 ë‹¤ìŒ {*CONTROLLER_VK_RT*}를 누르십시오.
+ ì•„ì´í…œ 정보를 ë” ë³´ë ¤ë©´ í¬ì¸í„°ë¡œ ì•„ì´í…œì„ 가리킨 ë‹¤ìŒ {*CONTROLLER_ACTION_MENU_PAGEDOWN*}ì„ ëˆ„ë¥´ì‹­ì‹œì˜¤.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2061,7 +2411,7 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- ì•„ì´í…œ 정보를 ë” ë³´ë ¤ë©´ í¬ì¸í„°ë¡œ ì•„ì´í…œì„ 가리킨 ë‹¤ìŒ {*CONTROLLER_VK_RT*}를 누르십시오.
+ ì•„ì´í…œ 정보를 ë” ë³´ë ¤ë©´ í¬ì¸í„°ë¡œ ì•„ì´í…œì„ 가리킨 ë‹¤ìŒ {*CONTROLLER_ACTION_MENU_PAGEDOWN*}ì„ ëˆ„ë¥´ì‹­ì‹œì˜¤.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2608,6 +2958,211 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
ìŒì‹ 막대와 ìŒì‹ 먹는 ë²•ì— ëŒ€í•´ ì´ë¯¸ 알고 있다면{*CONTROLLER_VK_B*} 단추를 누르십시오.
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ 여기는 ë§ ì†Œì§€í’ˆ ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}계ì†í•˜ë ¤ë©´ {*CONTROLLER_VK_A*}를 누르십시오.
+ {*B*}ë§ ì†Œì§€í’ˆì— ëŒ€í•´ 알고 있다면 {*CONTROLLER_VK_B*}를 누르십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ ë§ ì†Œì§€í’ˆì€ ë§, 당나귀, ë…¸ìƒˆì— ì•„ì´í…œì„ 옮기거나 착용시킬 수 있게 í•´ì¤ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ 안장 ìŠ¬ë¡¯ì— ì•ˆìž¥ì„ ë„£ì–´ ë§ì— ì•ˆìž¥ì„ ì±„ìš¸ 수 있습니다. 방어구 ìŠ¬ë¡¯ì— ë°©ì–´êµ¬ë¥¼ 넣으면 ë§ì´ 방어구를 착용해 ë°©ì–´ë ¥ì´ ì˜¤ë¦…ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ ì´ ë©”ë‰´ì—서 ìžì‹ ì˜ 소지품과, 당나귀 ë˜ëŠ” ë…¸ìƒˆì— ë‹¬ë¦° 안장 ê°€ë°©ì˜ ì•„ì´í…œì„ êµí™˜í•  수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>ë§ì„ 찾았습니다.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>당나귀를 찾았습니다.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>노새를 찾았습니다.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}{*CONTROLLER_VK_A*}를 누르면 ë§ê³¼ 당나귀, ë…¸ìƒˆì— ëŒ€í•´ ë” ì•Œì•„ë³¼ 수 있습니다.
+ {*B*}ë§ê³¼ 당나귀, ë…¸ìƒˆì— ëŒ€í•´ ì´ë¯¸ 알고 있다면 {*CONTROLLER_VK_B*}를 누르십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ ë§ê³¼ 당나귀는 주로 ë„“ì€ í‰ì§€ì—서 발견ë©ë‹ˆë‹¤. 노새는 ë§ê³¼ 당나귀를 êµë°°ì‹œì¼œ ì–»ì„ ìˆ˜ 있지만, 노새 ìžì²´ëŠ” êµë°° ëŠ¥ë ¥ì´ ì—†ìŠµë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ 다 ìžëž€ ë§ê³¼ 당나귀, 노새는 타고 ë‹¤ë‹ ìˆ˜ 있습니다. 하지만 방어구는 ë§ì—게만 ìž…íž ìˆ˜ 있으며, ì•„ì´í…œ ìš´ë°˜ì— í•„ìš”í•œ 안장 ê°€ë°©ì€ ë‹¹ë‚˜ê·€ì™€ 노새ì—게만 착용시킬 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ ë§ê³¼ 당나귀, 노새는 ê¸¸ì„ ë“¤ì—¬ì•¼ 사용할 수 있습니다. ë§ì€ 타려고 시ë„하면서, 기수를 떨어트리려는 ë§ì— 대항해 단단히 ë¶™ìž¡ì€ ì±„ 타고 있으면 ê¸¸ì„ ë“¤ì¼ ìˆ˜ 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ ê¸¸ì´ ë“¤ë©´ ì£¼ë³€ì— í•˜íŠ¸ 표시가 나타나며, ë” ì´ìƒ 기수를 떨어트리려고 하지 않습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ 지금 ë§íƒ€ê¸°ë¥¼ 시ë„í•´ 보십시오. ì†ì— ì•„ì´í…œì´ë‚˜ ë„구를 들지 ì•Šì€ ì±„ë¡œ {*CONTROLLER_ACTION_USE*}ì„ ì¡°ìž‘í•˜ë©´ 올ë¼íƒ‘니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ ë§ì˜ ë°©í–¥ì„ ì¡°ì •í•˜ë ¤ë©´ ì•ˆìž¥ì„ ì°©ìš©ì‹œì¼œì•¼ 합니다. ì•ˆìž¥ì€ ë§ˆì„ ì£¼ë¯¼ìœ¼ë¡œë¶€í„° 구매하거나 ê³³ê³³ì— ìˆ¨ê²¨ì§„ ìƒìžì— 들어 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ ê¸¸ì´ ë“  당나귀와 ë…¸ìƒˆì— ìƒìžë¥¼ 부착하면 안장 ê°€ë°©ì„ ë‹¬ì•„ì¤„ 수 있습니다. ì´ ê°€ë°©ì€ ë‹¹ë‚˜ê·€ ë˜ëŠ” 노새를 타거나 ëª¸ì„ ìˆ˜ê·¸ë¦° ìƒíƒœì—서 사용 가능합니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ ë§ê³¼ 당나귀(노새 제외)는 황금 사과나 황금 ë‹¹ê·¼ì„ ì‚¬ìš©í•´ 다른 ë™ë¬¼ë“¤ì²˜ëŸ¼ êµë°°í•  수 있습니다. ë§ì•„지는 ì‹œê°„ì´ ì§€ë‚˜ë©´ 성장하여 ë§ì´ ë˜ë©°, ë°€ì´ë‚˜ 건초를 먹ì´ë©´ 성장 ì‹œê°„ì´ ë‹¨ì¶•ë©ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ ì´ê³³ì—서 ë§ê³¼ 당나귀 길들ì´ê¸°ë¥¼ 시ë„í•  수 있으며, ì£¼ë³€ì˜ ìƒìžì—는 안장과 ë§ ë°©ì–´êµ¬ë¥¼ 비롯해 ë§ì—게 사용할 수 있는 유용한 ì•„ì´í…œë„ 들어있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ ì´ê²ƒì€ 신호기 ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤. 여기서 ì‹ í˜¸ê¸°ì˜ ëŠ¥ë ¥ì„ ì„ íƒí•  수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}계ì†í•˜ë ¤ë©´ {*CONTROLLER_VK_A*}를 누르십시오.
+ {*B*}신호기 ì¸í„°íŽ˜ì´ìФ 사용 ë°©ë²•ì„ ì•Œê³  있다면 {*CONTROLLER_VK_B*}를 누르십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ 신호기 메뉴ì—서 ì‹ í˜¸ê¸°ì˜ ì£¼ 능력 1개를 ì„ íƒí•  수 있습니다. 피ë¼ë¯¸ë“œì˜ 층수가 ë§Žì„ìˆ˜ë¡ ëŠ¥ë ¥ ì„ íƒì˜ í­ì´ ë” ë„“ì–´ì§‘ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ 4층 ì´ìƒ ë˜ëŠ” 피ë¼ë¯¸ë“œ ìœ„ì˜ ì‹ í˜¸ê¸°ëŠ” ë³´ì¡° ëŠ¥ë ¥ì¸ '재ìƒ'ì´ë‚˜ 주 능력 ê°•í™” 중 한 가지를 추가로 ì„ íƒí•  수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ ì‹ í˜¸ê¸°ì˜ ëŠ¥ë ¥ì„ ì„¤ì •í•˜ë ¤ë©´ 지불 ìŠ¬ë¡¯ì— ì—메랄드, 다ì´ì•„몬드, 황금 ë˜ëŠ” ì²  주괴를 넣어야 합니다. 재료를 넣으면 신호기ì—서 ëŠ¥ë ¥ì´ ë¬´ê¸°í•œìœ¼ë¡œ ë°œë™ë©ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>ì´ í”¼ë¼ë¯¸ë“œ 꼭대기ì—는 정지한 신호기가 있습니다.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}ì‹ í˜¸ê¸°ì— ëŒ€í•´ ë” ì•Œì•„ë³´ë ¤ë©´ {*CONTROLLER_VK_A*}를 누르십시오.
+ {*B*}ì‹ í˜¸ê¸°ì— ëŒ€í•´ ì´ë¯¸ 알고 있다면 {*CONTROLLER_VK_B*}를 누르십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ ìž‘ë™í•˜ëŠ” 신호기는 하늘로 ë°ì€ ê´‘ì„ ì„ ì˜ì•„올리고 주변 플레ì´ì–´ì—게 ëŠ¥ë ¥ì„ ë¶€ì—¬í•©ë‹ˆë‹¤. 신호기는 위ë”를 잡고 ì–»ì„ ìˆ˜ 있는 유리와 í‘ìš”ì„, ì§€ì˜¥ì˜ ë³„ë¡œ 만듭니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ 신호기는 ë‚®ì— í–‡ë¹›ì„ ë°›ì„ ìˆ˜ ìž¥ì†Œì— ë†“ì•„ì•¼ 하며, 반드시 ì² , 황금, ì—메랄드 ë° ë‹¤ì´ì•„몬드 ë“±ì˜ í”¼ë¼ë¯¸ë“œ ìœ„ì— ì„¤ì¹˜í•´ì•¼ 합니다. 하지만 ì–´ë–¤ 재료를 ì„ íƒí•´ë„ ì‹ í˜¸ê¸°ì˜ ëŠ¥ë ¥ì—는 ì˜í–¥ì„ 주지 않습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ 신호기를 사용해 ëŠ¥ë ¥ì„ ì„¤ì •í•´ 보십시오. 제공ë˜ëŠ” ì²  주괴를 대가로 지불할 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>여기ì—는 호í¼ê°€ 있습니다.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}호í¼ì— 대해 ë” ì•Œì•„ë³´ë ¤ë©´ {*CONTROLLER_VK_A*}를 누르십시오.
+ {*B*}호í¼ì— 대해 ì´ë¯¸ 알고 있다면 {*CONTROLLER_VK_B*}를 누르십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ 호í¼ëŠ” ë³´ê´€í•¨ì— ì•„ì´í…œì„ 넣거나 빼고, 보관함 ì•ˆì— ë“¤ì–´ê°„ ì•„ì´í…œì„ ìžë™ìœ¼ë¡œ 집습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ 호í¼ëŠ” 양조대, ìƒìž, 디스펜서, 드로í¼, ìƒìžê°€ ë“  광물 수레, 호í¼ê°€ ë¶€ì°©ëœ ê´‘ë¬¼ 수레, 다른 호í¼ì— ì˜í–¥ì„ 줄 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ 호í¼ëŠ” ê·¸ ìœ„ì— ì„¤ì¹˜ëœ ì ì ˆí•œ 보관함으로부터 ê³„ì† ì•„ì´í…œì„ 빨아들ì´ë ¤ê³  시ë„합니다. ë˜í•œ ë³´ê´€ëœ ì•„ì´í…œì„ 배출구 쪽 ë³´ê´€í•¨ì— ë„£ìœ¼ë ¤ê³  합니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ 하지만 호í¼ì— ë ˆë“œìŠ¤í†¤ì˜ ë™ë ¥ì´ 공급ë˜ë©´ ìž‘ë™ì„ 멈추고 ì•„ì´í…œ 빨아들ì´ê¸°ì™€ 넣기를 중지합니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ 호í¼ëŠ” ì•„ì´í…œì„ 내보내려는 ë°©í–¥ì„ ê°€ë¦¬í‚µë‹ˆë‹¤. 호í¼ê°€ 특정 블ë¡ì„ 가리키게 하려면 호í¼ì— ì•„ì´í…œì´ ë“¤ì–´ìžˆì„ ë•Œ 해당 블ë¡ê³¼ 대치ë˜ëŠ” ë°©í–¥ì— ì„¤ì¹˜í•˜ì‹­ì‹œì˜¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ ì´ê³³ì—서 í˜¸í¼ ë°°ì—´ì„ í™•ì¸í•˜ê³  실험해볼 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ ì´ê²ƒì€ í­ì£½ ì¸í„°íŽ˜ì´ìŠ¤ìž…ë‹ˆë‹¤. 여기ì—서 í­ì£½ê³¼ í­ì£½ ë³„ì„ ë§Œë“¤ 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}계ì†í•˜ë ¤ë©´ {*CONTROLLER_VK_A*}를 누르십시오.
+ {*B*} í­ì£½ ì¸í„°íŽ˜ì´ìФ 사용 ë°©ë²•ì„ ì•Œê³  있다면 {*CONTROLLER_VK_B*}를 누르십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ í­ì£½ì„ 만들려면 소지품 위 3x3 ì œìž‘ì¹¸ì— í™”ì•½ê³¼ 종ì´ë¥¼ 넣으십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ ì œìž‘ì¹¸ì— í­ì£½ 별 여러 개를 추가로 넣어 í­ì£½ì— ì„žì„ ìˆ˜ 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ 제작칸 ìŠ¬ë¡¯ì— í™”ì•½ì„ ë” ë§Žì´ ì±„ìš°ë©´ í­ì£½ ë³„ì´ í­ë°œí•˜ëŠ” 높ì´ê°€ ì¦ê°€í•©ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ 그런 ë‹¤ìŒ ê²°ê³¼ë¬¼ 슬롯 밖으로 ì™„ì„±ëœ í­ì£½ì„ 꺼낼 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ í­ì£½ ë³„ì€ í™”ì•½ê³¼ 염료를 ì œìž‘ì¹¸ì— ë„£ì–´ 만들 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ 염료는 í­ì£½ ë³„ì´ í­ë°œí•  ë•Œì˜ ìƒ‰ìƒì„ 결정합니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ í­ì£½ ë³„ì˜ ëª¨ì–‘ì€ ë¶ˆì˜ì‹œê°œ, 금ë©ì´, 깃털, 괴물 머리를 추가해 바꿀 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ 다ì´ì•„몬드나 ë°œê´‘ì„ ê°€ë£¨ë¥¼ 사용하면 궤ì ì´ë‚˜ ë°˜ì§ìž„ 효과가 추가ë©ë‹ˆë‹¤.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ í­ì£½ ë³„ì„ ë§Œë“  후ì—는 염료와 함께 ì¡°í•©í•´, í­ë°œ 후 사ë¼ì§ˆ ë•Œì˜ ìƒ‰ìƒì„ 조절할 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ ì´ ìƒìžë“¤ì—는 í­ì£½ì„ 만드는 ë° ì“¸ 수 있는 다양한 ì•„ì´í…œì´ 들어있습니다!
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}í­ì£½ì— 대해 ë” ì•Œì•„ë³´ë ¤ë©´ {*CONTROLLER_VK_A*}를 누르십시오.
+ {*B*}í­ì£½ì— 대해 ì´ë¯¸ 알고 있다면 {*CONTROLLER_VK_B*}를 누르십시오.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ í­ì£½ì€ ì†ì´ë‚˜ 디스펜서로 발사할 수 있는 ìž¥ì‹ ì•„ì´í…œì´ë©°, 기본 ìž¬ë£Œì¸ ì¢…ì´ì™€ í™”ì•½ì— í­ì£½ ë³„ì„ ë¶€ê°€ì ìœ¼ë¡œ ë”í•´ 만들 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ í­ì£½ ë³„ì„ ë§Œë“¤ 때 추가 재료를 넣으면 색ìƒê³¼ 사ë¼ì§€ëŠ” 형태, 모양, í¬ê¸°, 효과(궤ì ì´ë‚˜ ë°˜ì§ìž„ 등)를 ì›í•˜ëŠ” 대로 바꿀 수 있습니다.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ 작업대ì—서 ìƒìžì— ë“  ìž¬ë£Œë“¤ì„ ì´ìš©í•´ í­ì£½ì„ 만들어 보십시오.
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>ì„ íƒ</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>사용</value>
@@ -2812,9 +3367,9 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_TOOLTIPS_BLOCK"><value>블ë¡</value>
</data>
-<data name="IDS_TOOLTIPS_PAGEUP"><value>페ì´ì§€ 위로</value>
+<data name="IDS_TOOLTIPS_PAGEUP"><value>페ì´ì§€ 올림</value>
</data>
-<data name="IDS_TOOLTIPS_PAGEDOWN"><value>페ì´ì§€ 아래로</value>
+<data name="IDS_TOOLTIPS_PAGEDOWN"><value>페ì´ì§€ 내림</value>
</data>
<data name="IDS_TOOLTIPS_LOVEMODE"><value>사랑 모드</value>
</data>
@@ -2830,6 +3385,22 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Xbox One 저장 ë°ì´í„° 업로드</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>타기</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>내리기</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>ìƒìž 달기</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>발사</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>줄 묶기</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>놓기</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>부착</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>ì´ë¦„</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>확ì¸</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>취소</value>
@@ -3144,6 +3715,20 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_DISPENSER"><value>디스펜서</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>ë§</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>드로í¼</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>호í¼</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>신호기</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>주 능력</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>보조 능력</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>광물 수레</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>현재 ì´ ê²Œìž„ì—서 구매할 수 있는 해당 ìœ í˜•ì˜ ë‹¤ìš´ë¡œë“œ 콘í…츠가 없습니다.</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%së‹˜ì´ ê²Œìž„ì— ì°¸ê°€í–ˆìŠµë‹ˆë‹¤.</value>
@@ -3303,10 +3888,14 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>게임 모드: 창작</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>게임 모드: 모험</value>
+ </data>
<data name="IDS_SURVIVAL"><value>ìƒì¡´</value>
</data>
<data name="IDS_CREATIVE"><value>창작</value>
</data>
+<data name="IDS_ADVENTURE"><value>모험</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>ìƒì¡´ 모드ì—서 ìƒì„±</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>창작 모드ì—서 ìƒì„±</value>
@@ -3327,6 +3916,8 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>완전í‰ë©´</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>시드를 입력해서 ê°™ì€ ì§€ì—­ì„ ë§Œë“œì‹­ì‹œì˜¤. 공백으로 ë‘ë©´ 무작위 월드가 ìƒì„±ë©ë‹ˆë‹¤.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>ì´ ì˜µì…˜ì„ ì¼œë©´ 온ë¼ì¸ 게임으로 플레ì´í•©ë‹ˆë‹¤.</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>ì´ ì˜µì…˜ì„ ì¼œë©´ ì´ˆëŒ€ë°›ì€ í”Œë ˆì´ì–´ë§Œ ê²Œìž„ì— ì°¸ê°€í•  수 있습니다.</value>
@@ -3351,6 +3942,20 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>ì´ ì˜µì…˜ì„ ì¼œë©´ 쓸모있는 ì•„ì´í…œì´ ë“  ìƒìžê°€ 플레ì´ì–´ ìƒì„± ì§€ì  ê·¼ì²˜ì— ë‚˜íƒ€ë‚©ë‹ˆë‹¤.</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>비활성화하면 몬스터와 ë™ë¬¼ì´ 블ë¡ì„ êµì²´í•˜ê±°ë‚˜ ì•„ì´í…œì„ ì§‘ì§€ 못하게 합니다. 예를 들어 Creeperê°€ í­ë°œí•´ë„ 블ë¡ì´ 파괴ë˜ì§€ 않으며, ì–‘ì€ í’€ì„ ì œê±°í•˜ì§€ 못합니다.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>활성화하면 플레ì´ì–´ê°€ ì£½ì–´ë„ ì†Œì§€í’ˆì˜ ì•„ì´í…œì„ 잃지 않습니다.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>비활성화하면 괴물ì´ë‚˜ ë™ë¬¼ì´ ìžì—°ì ìœ¼ë¡œ ìƒì„±ë˜ì§€ 않습니다.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>비활성화하면 괴물과 ë™ë¬¼ì´ ì „ë¦¬í’ˆì„ ë–¨ì–´íŠ¸ë¦¬ì§€ 않습니다. 예를 들어 Creeperê°€ í™”ì•½ì„ ë–¨ì–´íŠ¸ë¦¬ì§€ 않습니다.</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>비활성화하면 블ë¡ì´ 파괴ë¼ë„ ì•„ì´í…œì„ 떨어트리지 않습니다. 예를 들어 ëŒ ë¸”ë¡ì—서 조약ëŒì„ ì–»ì„ ìˆ˜ 없습니다.</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>비활성화하면 플레ì´ì–´ì˜ ì²´ë ¥ì´ ìžì—°ì ìœ¼ë¡œ 재ìƒë˜ì§€ 않습니다.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>비활성화하면 시간대가 변하지 않습니다.</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>스킨 팩</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>테마</value>
@@ -3399,7 +4004,49 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} {*SOURCE*}ì— íƒ€ê²©ì— ì˜í•´ 사ë§</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*}ë‹˜ì´ {*SOURCE*}ì— ì˜í•´ 살해당했습니다.</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì˜ ë§ˆë²•ì— ì‚´í•´ë‹¹í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} ë‹˜ì´ ì‚¬ë‹¤ë¦¬ì—서 떨어졌습니다.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} ë‹˜ì´ ë©êµ´ì—서 떨어졌습니다.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} ë‹˜ì´ ë¬¼ 밖으로 떨어졌습니다.</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} ë‹˜ì´ ë†’ì€ ê³³ì—서 떨어졌습니다.</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì— ì˜í•´ 떨어져 사ë§í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì— ì˜í•´ 떨어져 사ë§í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì˜ {*ITEM*}ì— ì˜í•´ 떨어져 사ë§í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>{*PLAYER*} ë‹˜ì´ ë„ˆë¬´ 멀리 떨어져 {*SOURCE*}ì— ì˜í•´ 사ë§í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>{*PLAYER*} ë‹˜ì´ ë„ˆë¬´ 멀리 떨어져 {*SOURCE*}ì˜ {*ITEM*}ì— ì˜í•´ 사ë§í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ê³¼(와) ì‹¸ìš°ë˜ ì¤‘ 불 ì†ìœ¼ë¡œ 걸어 들어갔습니다.</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ê³¼(와) ì‹¸ìš°ë˜ ì¤‘ 까맣게 타버렸습니다.</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì„(를) 피하다 용암ì—서 수ì˜ì„ 했습니다.</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì„(를) 피하려다 ìµì‚¬í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì„(를) 피하려다 ì„ ì¸ìž¥ì— 찔렸습니다.</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì— ì˜í•´ 날아갔습니다.</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} ë‹˜ì´ ë§ë¼ 죽었습니다.</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì˜ {*ITEM*}ì— ì˜í•´ 사ë§í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì˜ {*ITEM*}ì— ë§žì•„ 사ë§í–ˆìŠµë‹ˆë‹¤.</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì˜ {*ITEM*}ì— ì˜í•´ 불ë©ì–´ë¦¬ë¥¼ 맞았습니다.</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì˜ {*ITEM*}ì— ì˜í•´ 찌부러졌습니다.</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} ë‹˜ì´ {*SOURCE*}ì˜ {*ITEM*}ì— ì‚´í•´ë‹¹í–ˆìŠµë‹ˆë‹¤.</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>기반암 안개</value>
</data>
@@ -3564,9 +4211,9 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_DONT_RESET_NETHER"><value>지하 초기화를 하지 않습니다.</value>
</data>
-<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Mooshroomì˜ í„¸ì„ ìžë¥¼ 수 없습니다. ë¼ì§€, ì–‘, 소, ê³ ì–‘ì´ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
+<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>Mooshroomì˜ í„¸ì„ ìžë¥¼ 수 없습니다. ë¼ì§€, ì–‘, 소, ê³ ì–‘ì´, ë§ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>ë‚³ì€ ì•Œì„ ì‚¬ìš©í•  수 없습니다. ë¼ì§€, ì–‘, 소, ê³ ì–‘ì´ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>ë‚³ì€ ì•Œì„ ì‚¬ìš©í•  수 없습니다. ë¼ì§€, ì–‘, 소, ê³ ì–‘ì´, ë§ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED"><value>ë‚³ì€ ì•Œì„ ì‚¬ìš©í•  수 없습니다. Mooshroomì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
@@ -3576,6 +4223,8 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>ë‚³ì€ ì•Œì„ ì‚¬ìš©í•  수 없습니다. ì˜¤ì§•ì–´ì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>ë‚³ì€ ì•Œì„ ì‚¬ìš©í•  수 없습니다. ë§ˆì„ ì‚¬ëžŒì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>ë‚³ì€ ì•Œì„ ì‚¬ìš©í•  수 없습니다. ì ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>ë‚³ì€ ì•Œì„ ì‚¬ìš©í•  수 없습니다. ë§ˆì„ ì‚¬ëžŒì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
@@ -3584,12 +4233,14 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>ë‚™ì› ëª¨ë“œì—서는 ì ì„ ìƒì„±í•  수 없습니다.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>ì´ ë™ë¬¼ì€ 사랑 모드로 만들 수 없습니다. êµë°°í•  수 있는 ë¼ì§€, ì–‘, 소, ê³ ì–‘ì´ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>ì´ ë™ë¬¼ì€ 사랑 모드로 만들 수 없습니다. êµë°°í•  수 있는 ë¼ì§€, ì–‘, 소, ê³ ì–‘ì´, ë§ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>ì´ ë™ë¬¼ì€ 사랑 모드로 만들 수 없습니다. êµë°°í•  수 있는 ëŠ‘ëŒ€ì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>ì´ ë™ë¬¼ì€ 사랑 모드로 만들 수 없습니다. êµë°°í•  수 있는 ë‹­ì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>ì´ ë™ë¬¼ì€ 사랑 모드로 만들 수 없습니다. êµë°°í•  수 있는 ë§ì˜ 수가 ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>ì´ ë™ë¬¼ì€ 사랑 모드로 만들 수 없습니다. êµë°°í•  수 있는 Mooshroomì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
</data>
<data name="IDS_MAX_BOATS"><value>ë°°ì˜ ìˆ˜ê°€ ìµœëŒ€ì¹˜ì— ë„달했습니다.</value>
@@ -3617,27 +4268,43 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
<data name="IDS_CREDITS"><value>제작진</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>콘í…츠 재설치</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>디버그 설정</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>불 확산</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>TNT í­ë°œ</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>플레ì´ì–´ 대 플레ì´ì–´</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>플레ì´ì–´ 신뢰</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>호스트 특권</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>건물 ìƒì„±</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>완전í‰ë©´ 월드</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>보너스 ìƒìž</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>월드 옵션</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>게임 옵션</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>ê´´ë¬¼ì— ì˜í•œ 괴롭힘</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>소지품 유지</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>괴물 ìƒì„±</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>괴물 전리품</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>íƒ€ì¼ ì•„ì´í…œ</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>ìžì—° 재ìƒ</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>시간대 전환</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>건설 ë° ì±„ê´‘ 가능</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>문과 스위치 사용 가능</value>
@@ -3824,6 +4491,14 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_POTION_POISON"><value>ë…</value>
</data>
+<data name="IDS_POTION_WITHER"><value>위ë”</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>ì²´ë ¥ ê°•í™”</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>í¡ìˆ˜</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>í¬ë§Œ</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>- ì‹ ì†</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>- ì†ë„ 저하</value>
@@ -3862,6 +4537,14 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>- ë…</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>ë§Œí¼ ë¶€íŒ¨</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>ë§Œí¼ ì²´ë ¥ ê°•í™”</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>ë§Œí¼ í¡ìˆ˜</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>ë§Œí¼ í¬ë§Œ</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3958,6 +4641,22 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_POTION_DESC_POISON"><value>효과 ëŒ€ìƒ í”Œë ˆì´ì–´, ë™ë¬¼ ë° ê´´ë¬¼ì˜ ì²´ë ¥ì´ ì„œì„œížˆ ê°ì†Œí•©ë‹ˆë‹¤.</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>복용 시:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>ë§ ì í”„ ê°•í™”</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>좀비 ì¦ì›</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>최대 체력</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>괴물 ë”°ë¼ì˜¤ê¸° 거리</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>밀치기 저항</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>ì†ë„</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>공격력</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>예리</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>강타</value>
@@ -4048,7 +4747,7 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>{*ICON_SHANK_01*}를 3ë§Œí¼ íšŒë³µí•©ë‹ˆë‹¤. 화로ì—서 ê°ìžë¥¼ 조리하여 만듭니다.</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>먹어서 {*ICON_SHANK_01*}를 1ë§Œí¼ íšŒë³µí•˜ê±°ë‚˜ 화로ì—서 조리할 수 있습니다. ë†ì§€ì— ì‹¬ì„ ìˆ˜ 있으며 먹으면 중ë…ë  ìˆ˜ 있습니다.</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>먹어서 {*ICON_SHANK_01*}를 1ë§Œí¼ íšŒë³µí•©ë‹ˆë‹¤. 먹으면 중ë…ë  ìˆ˜ 있습니다.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>{*ICON_SHANK_01*}를 3ë§Œí¼ íšŒë³µí•©ë‹ˆë‹¤. 당근과 금ë©ì´ë¥¼ 사용해 만듭니다.</value>
</data>
@@ -4278,7 +4977,7 @@ Enderì— ë“¤ì–´ì„œë©´ 친구가 ê·¸ë“¤ì˜ ì§€ë„ì—서 요새 ë‚´ë¶€ì— ìžˆëŠ” E
</data>
<data name="IDS_TUTORIAL_PROMPT_TRADING_MENU_OVERVIEW"><value>
{*B*}
- 거래 ì¸í„°íŽ˜ì´ìŠ¤ì— ëŒ€í•´ ë” ì•Œì•„ë³´ë ¤ë©´ {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 거래 ì¸í„°íŽ˜ì´ìŠ¤ì— ëŒ€í•´ 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
거래 ì¸í„°íŽ˜ì´ìŠ¤ì— ëŒ€í•´ ì´ë¯¸ 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
</value>
</data>
diff --git a/Minecraft.Client/Common/Media/movies1080.txt b/Minecraft.Client/Common/Media/movies1080.txt
index f72fa4cf..782dd5bc 100644
--- a/Minecraft.Client/Common/Media/movies1080.txt
+++ b/Minecraft.Client/Common/Media/movies1080.txt
@@ -7,6 +7,7 @@ skinHDHud.swf
skinHDLabels.swf
skinHDInGame.swf
AnvilMenu1080.swf
+BeaconMenu1080.swf
BrewingStandMenu1080.swf
ChestMenu1080.swf
ChestLargeMenu1080.swf
@@ -31,9 +32,12 @@ DispenserMenu1080.swf
EnchantingMenu1080.swf
EndPoem1080.swf
EULA1080.swf
+FireworksMenu1080.swf
FullscreenProgress1080.swf
FurnaceMenu1080.swf
HelpAndOptionsMenu1080.swf
+HopperMenu1080.swf
+HorseInventoryMenu1080.swf
HowToPlay1080.swf
HowToPlayMenu1080.swf
HUD1080.swf
@@ -44,6 +48,8 @@ InGameTeleportMenu1080.swf
Intro1080.swf
InventoryMenu1080.swf
JoinMenu1080.swf
+LanguagesMenu1080.swf
+LanguagesMenuSplit1080.swf
LoadOrJoinMenu1080.swf
LaunchMoreOptionsMenu1080.swf
LeaderboardMenu1080.swf
@@ -72,6 +78,7 @@ ToolTips1080.swf
TradingMenu1080.swf
TutorialPopup1080.swf
AnvilMenuSplit1080.swf
+BeaconMenuSplit1080.swf
BrewingStandMenuSplit1080.swf
ChestMenuSplit1080.swf
ChestLargeMenuSplit1080.swf
@@ -82,9 +89,12 @@ CreativeMenuSplit1080.swf
DeathMenuSplit1080.swf
DispenserMenuSplit1080.swf
EnchantingMenuSplit1080.swf
+FireworksMenuSplit1080.swf
FurnaceMenuSplit1080.swf
FullscreenProgressSplit1080.swf
HelpAndOptionsMenuSplit1080.swf
+HopperMenuSplit1080.swf
+HorseInventoryMenuSplit1080.swf
HowToPlaySplit1080.swf
HowToPlayMenuSplit1080.swf
HUDSplit1080.swf
diff --git a/Minecraft.Client/Common/Media/movies480.txt b/Minecraft.Client/Common/Media/movies480.txt
index a3ab2ec6..bbc4f2a5 100644
--- a/Minecraft.Client/Common/Media/movies480.txt
+++ b/Minecraft.Client/Common/Media/movies480.txt
@@ -1,4 +1,5 @@
AnvilMenu480.swf
+BeaconMenu480.swf
BrewingStandMenu480.swf
ChestLargeMenu480.swf
ChestMenu480.swf
@@ -15,9 +16,12 @@ DLCMainMenu480.swf
EnchantingMenu480.swf
EndPoem480.swf
EULA480.swf
+FireworksMenu480.swf
FullscreenProgress480.swf
FurnaceMenu480.swf
HelpAndOptionsMenu480.swf
+HopperMenu480.swf
+HorseInventoryMenu480.swf
HowToPlay480.swf
HowToPlayMenu480.swf
HUD480.swf
@@ -27,6 +31,7 @@ InGamePlayerOptions480.swf
Intro480.swf
InventoryMenu480.swf
JoinMenu480.swf
+LanguagesMenu480.swf
LaunchMoreOptionsMenu480.swf
LeaderboardMenu480.swf
LoadMenu480.swf
diff --git a/Minecraft.Client/Common/Media/movies720.txt b/Minecraft.Client/Common/Media/movies720.txt
index ee89748b..524fcee0 100644
--- a/Minecraft.Client/Common/Media/movies720.txt
+++ b/Minecraft.Client/Common/Media/movies720.txt
@@ -7,6 +7,7 @@ skinHud.swf
skinLabels.swf
skinInGame.swf
AnvilMenu720.swf
+BeaconMenu720.swf
BrewingStandMenu720.swf
ChestMenu720.swf
ChestLargeMenu720.swf
@@ -29,9 +30,12 @@ DispenserMenu720.swf
EnchantingMenu720.swf
EndPoem720.swf
EULA720.swf
+FireworksMenu720.swf
FullscreenProgress720.swf
FurnaceMenu720.swf
HelpAndOptionsMenu720.swf
+HopperMenu720.swf
+HorseInventoryMenu720.swf
HowToPlay720.swf
HowToPlayMenu720.swf
HUD720.swf
@@ -42,6 +46,8 @@ InGameTeleportMenu720.swf
Intro720.swf
InventoryMenu720.swf
JoinMenu720.swf
+LanguagesMenu720.swf
+LanguagesMenuSplit720.swf
LoadOrJoinMenu720.swf
LaunchMoreOptionsMenu720.swf
LeaderboardMenu720.swf
@@ -69,6 +75,7 @@ ToolTips720.swf
TradingMenu720.swf
TutorialPopup720.swf
AnvilMenuSplit720.swf
+BeaconMenuSplit720.swf
BrewingStandMenuSplit720.swf
ChestMenuSplit720.swf
ChestLargeMenuSplit720.swf
@@ -80,10 +87,13 @@ CreativeMenuSplit720.swf
DeathMenuSplit720.swf
DispenserMenuSplit720.swf
EnchantingMenuSplit720.swf
+FireworksMenuSplit720.swf
FurnaceMenuSplit720.swf
FullscreenProgressSplit720.swf
GamertagSplit720.swf
HelpAndOptionsMenuSplit720.swf
+HopperMenuSplit720.swf
+HorseInventoryMenuSplit720.swf
HowToPlaySplit720.swf
HowToPlayMenuSplit720.swf
HUDSplit720.swf
diff --git a/Minecraft.Client/Common/Media/moviesVita.txt b/Minecraft.Client/Common/Media/moviesVita.txt
index 7a05e006..97627ca6 100644
--- a/Minecraft.Client/Common/Media/moviesVita.txt
+++ b/Minecraft.Client/Common/Media/moviesVita.txt
@@ -7,6 +7,7 @@ skinHud.swf
skinLabels.swf
skinInGame.swf
AnvilMenuVita.swf
+BeaconMenuVita.swf
BrewingStandMenuVita.swf
ChestLargeMenuVita.swf
ChestMenuVita.swf
@@ -24,9 +25,12 @@ DLCMainMenuVita.swf
EnchantingMenuVita.swf
EndPoemVita.swf
EULAVita.swf
+FireworksMenuVita.swf
FullscreenProgressVita.swf
FurnaceMenuVita.swf
HelpAndOptionsMenuVita.swf
+HopperMenuVita.swf
+HorseInventoryMenuVita.swf
HowToPlayMenuVita.swf
HowToPlayVita.swf
HUDVita.swf
@@ -37,6 +41,7 @@ InGameTeleportMenuVita.swf
IntroVita.swf
InventoryMenuVita.swf
JoinMenuVita.swf
+LanguagesMenuVita.swf
LaunchMoreOptionsMenuVita.swf
LeaderboardMenuVita.swf
LoadMenuVita.swf
diff --git a/Minecraft.Client/Common/Media/pt-BR/strings.resx b/Minecraft.Client/Common/Media/pt-BR/strings.resx
index 0fd411ec..67369181 100644
--- a/Minecraft.Client/Common/Media/pt-BR/strings.resx
+++ b/Minecraft.Client/Common/Media/pt-BR/strings.resx
@@ -147,29 +147,29 @@
</data>
<data name="IDS_HOW_TO_PLAY_BASICS"><value>{*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.</value>
+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.</value>
</data>
<data name="IDS_HOW_TO_PLAY_HUD"><value>{*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.</value>
+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.</value>
</data>
<data name="IDS_HOW_TO_PLAY_INVENTORY"><value>{*T3*}COMO JOGAR: INVENTÃRIO{*ETW*}{*B*}{*B*}
-Use {*CONTROLLER_ACTION_INVENTORY*}para ver seu inventário.{*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.
- </value>
+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.{*B*}{*B*}
+É 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.
+ </value>
</data>
<data name="IDS_HOW_TO_PLAY_CHEST"><value>{*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*}
+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.
</value>
@@ -180,20 +180,20 @@ Dois baús colocados lado a lado serão combinados para formar um Baú Grande. E
</value>
</data>
<data name="IDS_HOW_TO_PLAY_CRAFTING"><value>{*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.
+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.
</value>
</data>
<data name="IDS_HOW_TO_PLAY_CRAFT_TABLE"><value>{*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*}
+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.
</value>
</data>
<data name="IDS_HOW_TO_PLAY_FURNACE"><value>{*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*}
+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.
@@ -201,7 +201,7 @@ Se o item que você estiver examinando for um ingrediente ou combustível para a
</data>
<data name="IDS_HOW_TO_PLAY_DISPENSER"><value>{*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*}
+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.
</value>
</data>
@@ -229,11 +229,11 @@ Você deve experimentar todas as combinações de ingredientes para descobrir to
</data>
<data name="IDS_HOW_TO_PLAY_ENCHANTMENT"><value>{*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*}
+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}
+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*}
</value>
</data>
@@ -257,28 +257,28 @@ Exemplos de construção de portais são mostrados na figura à direita.
</data>
<data name="IDS_HOW_TO_PLAY_MULTIPLAYER"><value>{*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).
+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).{*B*}
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.
</value>
</data>
<data name="IDS_HOW_TO_PLAY_SOCIALMEDIA"><value>{*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*}
+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.
</value>
</data>
<data name="IDS_HOW_TO_PLAY_BANLIST"><value>{*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.
+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.</value>
</data>
<data name="IDS_HOW_TO_PLAY_CREATIVE"><value>{*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.</value>
+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.</value>
</data>
<data name="IDS_HOW_TO_PLAY_HOSTOPTIONS"><value>{*T3*}COMO JOGAR: OPÇÕES DE HOST E JOGADOR{*ETW*}{*B*}{*B*}
@@ -300,6 +300,27 @@ Ao carregar ou criar um mundo, você pode pressionar o botão "Mais Opções" pa
{*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*}
+ {*T2*}Ciclo do dia{*ETW*}{*B*}
+ Quando desativado, a hora do dia não muda.{*B*}{*B*}
+
+ {*T2*}Manter inventário{*ETW*}{*B*}
+ Quando ativada, jogadores vão manter o inventário ao morrer.{*B*}{*B*}
+
+ {*T2*}Surgimento de criaturas{*ETW*}{*B*}
+ Quando desativado, criaturas não aparecerão naturalmente.{*B*}{*B*}
+
+ {*T2*}Assédio por criaturas{*ETW*}{*B*}
+ Quando desativado,impede monstros e animais de mudar blocos (por exemplo, explosões de Creepers não destróem blocos e ovelhas não removem grama) ou pegar itens.{*B*}{*B*}
+
+ {*T2*}Itens de criaturas{*ETW*}{*B*}
+ Quando desativado, monstros e animais não derrubam itens (por exemplo, Creepers não derrubam pólvora).{*B*}{*B*}
+
+ {*T2*}Itens de blocos{*ETW*}{*B*}
+ Quando desativado, blocos não derrubam itens ao serem destruídos (por exemplo, blocos de pedra não derrubam paralelepípedos).{*B*}{*B*}
+
+ {*T2*}Regeneração natural{*ETW*}{*B*}
+ Quando desativada, jogadores não regeneram vida naturalmente.{*B*}{*B*}
+
{*T1*}Opções de Geração de Mundo{*ETW*}{*B*}
Ao criar um novo mundo, há algumas opções adicionais.{*B*}{*B*}
@@ -316,7 +337,7 @@ Ao criar um novo mundo, há algumas opções adicionais.{*B*}{*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*}
+ Durante o jogo, várias opções podem ser acessadas pressionando {*BACK_BUTTON*} 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*}
@@ -325,13 +346,13 @@ Ao criar um novo mundo, há algumas opções adicionais.{*B*}{*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*}
+ Esta opção só está disponível quando "Confiar nos Jogadores" está desativada. 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 abrir recipientes{*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 recipientes, 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*}
@@ -343,7 +364,7 @@ Para modificar os privilégios de um jogador, selecione o nome dele e pressione
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*}
+ {*KICK_PLAYER_DESCRIPTION*}{*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*}
@@ -353,14 +374,16 @@ Se "Privilégios do Host" estiver habilitado, o jogador host poderá modificar a
{*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*}
+
+ {*T2*}É possível Teleportar{*ETW*}{*B*}
Isto permite que o jogador mova a si mesmo ou outros jogadores para outros jogadores no mundo.
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>Para jogadores que não estão no mesmo console {*PLATFORM_NAME*} que o host, selecionar esta opção vai expulsá-los junto com qualquer jogador conectado em seu console {*PLATFORM_NAME*}. Este jogador não poderá se juntar novamente ao jogo até que seja reiniciado.</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>Próxima Página</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>Página Anterior</value>
@@ -424,56 +447,93 @@ portanto, poderão facilmente se juntar a você.
</data>
<data name="IDS_HOW_TO_PLAY_MENU_WHATSNEW"><value>O Que Há de Novo</value>
</data>
-<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
-{*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*}
+<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>{*T3*}Alterações e adições{*ETW*}{*B*}{*B*}
+- Novos itens adicionados - Argila endurecida, Argila colorida, Bloco de carvão, fardo de feno, trilho ativador, bloco de redstone, sensor de luz solar, monólito, tremonha, carrinho com tremonha, carrinho com TNT, comparador Redstone, placa de pressão ponderada, farol, baú preso, foguete de artifício, estrela de artifício, estrela do submundo, chumbo, armadura para cavalo, crachá, ovo de surgimento de cavalos{*B*}
+- Novas criaturas adicionadas - Wither, esqueletos murchos, bruxas, morcegos, cavalos, burros e mulas{*B*}
+- Adicionados novos recursos de geração de terreno - cabanas de bruxas.{*B*}
+- Adicionada interface de farol.{*B*}
+- Adicionada interface de cavalo.{*B*}
+- Adicionada interface de tremonha.{*B*}
+- Adicionados fogos de artifício - A interface dos fogos de artifício pode ser acessada na bancada quando tem os ingredientes para fazer uma estrela ou foguete de artifício.{*B*}
+- Adicionado 'modo de aventura' - Você só pode quebrar blocos com as ferramentas corretas.{*B*}
+- Adicionados muitos sons novos.{*B*}
+- Criaturas, itens e projéteis agora podem passar pelos portais.{*B*}
+- Repetidores agora podem ser trancados alimentando suas laterais com outro repetidor.{*B*}
+- Agora zumbis e esqueletos podem surgir com armas e armaduras diferentes.{*B*}
+- Novas mensagens de morte.{*B*}
+- Nomeie criaturas com um crachá, e renomeie recipientes para mudar o título quando o menu está aberto.{*B*}
+- Farelo de osso não mais faz tudo crescer imediatamente, agora cresce aleatoriamente em estágios.{*B*}
+- Um sinal de redstone descrevendo o conteúdo de baús, barracas de poções, distribuidores e jukeboxes podem ser detectados colocando um comparador redstone diretamente contra eles.{*B*}
+- Distribuidores podem ser colocados em qualquer direção.{*B*}
+- Comer uma maçã dourada dá ao jogador vida "de absorção" extra por um curto período.{*B*}
+- Quanto mais você fica em uma área, mais difíceis são as criaturas que surgem naquela área.{*B*}</value>
+</data>
+<data name="IDS_TITLEUPDATE"><value>{*ETB*}Bem-vindo(a) 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*} - Argila endurecida, argila colorida, bloco de carvão, fardo de feno, trilho ativador, bloco de redstone, sensor de luz do dia, distribuidor, tremonha, carrinho com tremonha, carrinho com TNT, comparador redstone, placa de pressão ponderada, farol, baú preso, estrela e foguete de artifício, estrela do Submundo, chumbo, armadura de cavalos, crachá, ovo de surgimento de cavalos{*B*}{*B*}
+{*T1*}Novas criaturas{*ETB*} - Wither, esqueletos murchos, bruxas, morcegos, cavalos, burros e mulas{*B*}{*B*}
+{*T1*}Novos recursos{*ETB*} - Dome e cavalgue um cavalo, faça fogos de artifício e dê um show, nomeie animais e monstros com um crachá, crie circuitos redstone mais avançados, e novas opções de anfitrião para ajudar a controlar o que os convidados podem fazer no seu mundo!{*B*}{*B*}
+{*T1*}Novo mundo tutorial{*ETB*} – Aprenda a usar os recursos novos e velhos no mundo tutorial. Veja se consegue encontrar todos os discos de música secretos escondidos no mundo!{*B*}{*B*}
</value>
</data>
-<data name="IDS_TITLEUPDATE"><value>{*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</value>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>Cavalos</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}COMO JOGAR: CAVALOS{*ETW*}{*B*}{*B*}
+Cavalos e burros são encontrados principalmente em planícies. Mulas são o fruto de um burro e um cavalo, mas são estéreis.{*B*}
+Todos os cavalos, burros e mulas adultos são animais de montaria. No entanto, apenas os cavalos podem usar armadura, ao passo que só as mulas e os burros podem portar alforjes para transportar itens.{*B*}{*B*}
+Cavalos, burros e mulas devem ser domesticados antes que possam ser usados. Para domesticar um cavalo, basta tentar montá-lo e permanecer montado enquanto ele tenta arremessar o montador.{*B*}
+Quando aparecem coraçõezinhos em volta do cavalo, ele terá sido domesticado e não tentará mais se livrar do(a) jogador(a). Para guiar um cavalo, o jogador deve equipar uma sela sobre o animal.{*B*}{*B*}
+As selas podem ser compradas de aldeões ou encontradas dentro de Baús no mundo.{*B*}
+Você pode equipar alforjes em burros e mulas domesticados ao amarrar um Baú. Esses alforjes podem, então, ser acessados enquanto você monta ou se esgueira.{*B*}{*B*}
+Cavalos e burros (mas não mulas) podem ser criados como os outros animais utilizando-se Maçãs Douradas ou Cenouras Douradas.{*B*}
+Potros se tornarão cavalos adultos com o tempo, embora alimentá-los com Trigo ou Feno acelere o processo.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>Faróis</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}COMO JOGAR: FARÓIS{*ETW*}{*B*}{*B*}
+Faróis ativos projetam um feixe de luz clara no céu e concedem poderes aos jogadores próximos.{*B*}
+Eles podem ser produzidos com Vidro, Obsidiana e Estrelas do Submundo, obtidas ao derrotar-se o Wither.{*B*}{*B*}
+Os faróis devem ser posicionados de forma a receberem luz solar durante o dia. Eles devem ser colocados em pirâmides de ferro, ouro, esmeralda ou diamante.{*B*}
+O material sobre o qual é posicionado não afeta o poder do farol.{*B*}{*B*}
+No menu do Farol, você pode selecionar o poder principal deste farol. Quanto mais níveis sua pirâmide tiver, maior será o número de opções de poderes disponível para escolha.{*B*}
+Um farol em uma pirâmide com pelo menos quatro níveis também concede a opção de Regenerar o segundo poder ou aumentar o poder do primeiro.{*B*}{*B*}
+Para definir os poderes do seu farol, sacrifique uma esmeralda, um diamante, um ouro ou um lingote de ferro no espaço de pagamento.{*B*}
+Quando tudo estiver montado, os poderes emanarão do farol indefinidamente.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>Fogos de artifício</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}COMO JOGAR : FOGOS DE ARTIFÃCIO{*ETW*}{*B*}{*B*}
+Fogos de artifício são itens decorativos que podem ser lançaodos à mão ou de distribuidores. Eles são criados usando papel, pólvora e opcionalmente um número de estrelas de artifício.{*B*}
+As cores, desvanecimento, forma, tamanho e efeitos (como trilhas e brilho) das estrelas de artifício podem ser customizados incluindo ingredientes adicionais na criação.{*B*}{*B*}
+Para criar um fogo de artifício coloque pólvora e papel na grade de criação 3x3 que é mostrada acima do seu inventário.{*B*}
+Opcionalmente, você pode colocar várias estrelas de artifício na grade de criação para adicioná-los ao fogo de artifício.{*B*}
+Encher mais vagas na grade de criação com pólvora aumenta a altura na qual as estrelas de artifício explodem.{*B*}{*B*}
+Depois você pode tirar o fogo de artifício do espaço de resultado.{*B*}{*B*}
+Estrelas de artifício podem ser criadas colocando pólvora e corante na grade de criação.{*B*}
+ - O corante ajusta a cor da explosão da estrela de artifício.{*B*}
+ - A forma da estrela de artifício é configurada adicionando uma carga de fogo, barra de ouro, pena ou cabeça de criatura.{*B*}
+ - Uma trilha ou um brilho podem ser adicionados usando diamantes ou pó de glowstone.{*B*}{*B*}
+Depois que uma estrela de fogos de artifício foi criada, você pode ajustar a cor de desvanecimento da estrela de artifício combinando-a com um corante.
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>Tremonhas</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}COMO JOGAR: TREMONHAS{*ETW*}{*B*}{*B*}
+Tremonhas são usadas para inserir ou remover itens de recipientes e para pegar automaticamente os itens lançados dentro delas.{*B*}
+Elas afetam Barraca de Poções, Baús, Distribuidor, Monólitos, Carrinhos com Baús, Carrinhos com Tremonhas, assim como outras Tremonhas.{*B*}{*B*}
+Tremonhas farão tentativas contínuas de sugar os itens de recipientes convenientes que estejam acima delas. Além disso, também tentarão inserir itens depositados em um recipiente de saída.{*B*}
+Se uma Tremonha for movida a Redstone, ela se tornará inativa e deixará de sugar e inserir itens.{*B*}{*B*}
+Uma Tremonha aponta na direção que tenta retirar os itens. Para fazer uma Tremonha apontar para um bloco específico, coloque-a em frente a este bloco enquanto se esgueira.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>Monólitos</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}COMO JOGAR : MONÓLITOS{*ETW*}{*B*}{*B*}
+Quando alimentado com um sinal de Redstone, monólitos derrubam aleatoriamente um dos itens armazenados. Use {*CONTROLLER_ACTION_USE*} para abrir o monólito e então carregá-lo com itens do seu inventário.{*B*}
+Se o monólito estiver de frente para um baú ou outro tipo de recipiente, o item será colocado ali ao invés de cair no chão. Longas correntes de monólitos podem ser construídos para carregar itens. Para que isso funcione, eles devem ser ativados e desativados alternadamente.
+ </value>
</data>
<data name="IDS_DESC_SWORD"><value>Causa mais danos que à mão.</value>
</data>
@@ -600,10 +660,36 @@ As cores da cama são sempre as mesmas, independentemente da cor da lã usada.</
</data>
<data name="IDS_DESC_MAP"><value>Cria uma imagem da área explorada enquanto você o segura. Pode ser usado para encontrar caminhos.</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>Quando usado, vira um mapa da parte do mundo onde você está, sendo preenchido conforme você explora.</value>
+ </data>
<data name="IDS_DESC_BOW"><value>Permite ataques à distância usando flechas.</value>
</data>
<data name="IDS_DESC_ARROW"><value>Usada como munição para arcos.</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>Derrubados pelo Wither, utilizado na produção de Faróis.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>Quando ativado, cria explosões coloridas. Determina-se a cor, o efeito, o formato e o desvanecimento pela Estrela de Artifício usada na criação do Fogo de Artifício.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>Usado para determinar a cor, efeito e formato do Fogo de Artifício.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>Usados em circuito de Redstone para manter, comparar e subtrair a força do sinal ou para medir os estados de determinados blocos.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>Um tipo de Carrinho de Minas que funciona como um bloco de TNT móvel.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>É um bloco que produz um sinal Redstone derivado de luz do sol (ou a falta dela).</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>Tipo especial de Carrinho de Minas que funciona de forma similar a uma Tremonha. Ele coletará os itens deixados nos trilhos e nos recipientes acima dele.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>Tipo especial de armadura que pode ser equipada em um cavalo. Oferece 5 de Armadura.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>Tipo especial de armadura que pode ser equipada em um cavalo. Oferece 7 de Armadura.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>Tipo especial de armadura que pode ser equipada em um cavalo. Oferece 11 de Armadura.</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>Usado para amarrar criaturas ao jogador ou postes de cercas</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>Usado para nomear criaturas no mundo.</value>
+</data>
<data name="IDS_DESC_BREAD"><value>Restaura 2,5{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_CAKE"><value>Restaura 1{*ICON_SHANK_01*}. Pode ser usado 6 vezes.</value>
@@ -655,7 +741,7 @@ Também pode ser usado para pouca iluminação.</value>
</data>
<data name="IDS_DESC_POWEREDRAIL"><value>Quando ativado, acelera os carrinhos de minas que passam sobre ele. Quando desativado, faz os carrinhos pararem nele.</value>
</data>
-<data name="IDS_DESC_DETECTORRAIL"><value>Funciona como uma chapa de pressão (envia um sinal Redstone quando ativado), mas só pode ser ativado por um carrinho de minas.</value>
+<data name="IDS_DESC_DETECTORRAIL"><value>Funciona como uma chapa de pressão (envia um sinal Redstone quando ativado), mas só pode ser ativado por um Carrinho de Minas.</value>
</data>
<data name="IDS_DESC_MINECART"><value>Usado para transportar você, um animal ou um monstro sobre trilhos.</value>
</data>
@@ -928,100 +1014,158 @@ Também pode ser usado para pouca iluminação.</value>
</data>
<data name="IDS_DESC_SKULL"><value>As Cabeças de multidão podem ser colocadas como decoração, ou usadas como máscara na abertura do capacete.</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>Usado para executar comandos.</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>Projeta um feixe de luz no céu e pode oferecer efeitos de status para os jogadores próximos.</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>Armazena blocos e itens dentro. Coloque dois baús, lado a lado, para criar um baú maior com o dobro de capacidade. Além disso, o baú preso cria uma carga Redstone quando aberto.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>Oferece uma carga Redstone. A carga será mais forte se houver mais itens na chapa.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>Oferece uma carga Redstone. A carga será mais forte se houver mais itens na chapa. Exige mais peso que uma chapa leve.</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>Usado como fonte de energia redstone. Redstones podem ser criadas a partir dele.</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>Usado para capturar itens, transferi-los ou retirá-los de recipientes.</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>Um tipo de corrimão que habilita ou desabilita Carrinhos de Minas com Tremonhas e aciona Carrinhos de Minas com TNT.</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>Usado para segurar e derrubar itens ou empurrá-los em outros recipientes quando recebem carga Redstone.</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>Blocos coloridos produzidos ao tingir-se a argila endurecida.</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>Pode alimentar Cavalos, Burros e Mulas para curar até 10 Corações. Acelera o crescimento de potros.</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>Criado ao cozinhar a argila no forno.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>Criado a partir de vidro e um corante.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>Criado a partir de um vitral</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>Uma forma compacta de armazenar carvão. Pode ser usado como combustível em fornalhas.</value>
+ </data>
<data name="IDS_SQUID"><value>Lula</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>Solta sacos de tinta quando morta.</value>
- </data>
+ </data>
<data name="IDS_COW"><value>Vaca</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>Solta couro quando morta. Pode ser ordenhada com um balde.</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>Ovelha</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>Solta lã quando tosquiada (se já não tiver sido tosquiada). Pode ser tingida para produzir lã de cores diferentes.</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>Galinha</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>Solta penas quando morta e põe ovos aleatoriamente.</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>Porco</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>Solta costeletas quando morto. Pode ser montado usando uma sela.</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>Lobo</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>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ê.</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>Explode se você chegar muito perto!</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>Esqueleto</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>Dispara flechas em você. Solta flechas quando morto.</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>Aranha</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>Ataca quando você chega perto. Escala paredes. Solta fio quando morta.</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>Zumbi</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>Ataca quando você chega perto.</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>Homem-porco zumbi</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>Inicialmente dócil, mas ataca em grupos se você ataca um deles.</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>Atira bolas de fogo em você, que explodem ao contato.</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>Slime</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>Divide-se em slimes menores quando atingido.</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>Atacará se você olhar para ele. Também pode mover blocos.</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Traça</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>Atrai as Traças próximas quando atacada. Esconde-se em blocos de pedra.</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>Aranha de Caverna</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>Tem uma mordida venenosa.</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Vacogumelo</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>Faz sopa de cogumelo quando usada com uma vasilha. Derruba cogumelos e torna-se uma vaca normal depois de tosquiada.</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>Golem de Neve</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>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.</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>Dragão Ender</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>Este é um grande dragão negro encontrado no Final.</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Chama</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>Estes são inimigos encontrados no Submundo, geralmente dentro das Fortalezas do Submundo. Derrubam Varas de Chamas quando são mortos.</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>Cubo de Magma</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>Eles são encontrados no Submundo. Similares aos Slimes, dividem-se em versões menores quando são mortos.</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>Aldeão</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>Ocelote</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>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.</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>Golem de Ferro</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>Aparece em vilas para protegê-las e podem ser criados usando blocos de ferro e abóboras.</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>Morcego</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>Estas criaturas voadoras são encontradas nas cavernas ou em outros espaços fechados.</value>
+ </data>
+<data name="IDS_WITCH"><value>Bruxa</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>Estas inimigas podem ser encontradas em pântanos e atacam atirando Poções. Derrubam Poções quando mortas.</value>
+ </data>
+<data name="IDS_HORSE"><value>Cavalo</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>Estes animais podem ser domesticados e então montados.</value>
+ </data>
+<data name="IDS_DONKEY"><value>Burro</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>Estes animais podem ser domesticados e então montados. Podem portar baús amarrados.</value>
+ </data>
+<data name="IDS_MULE"><value>Mula</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>Fruto do cruzamento entre um cavalo e um burro. Estes animais podem ser domesticados e então montados, e podem carregar baús.</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>Cavalo Zumbi</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>Cavalo Esqueleto</value>
+ </data>
+<data name="IDS_WITHER"><value>Wither</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>Estes são criados a partir de Caveiras Murchas ou Areia Movediça. Atiram caveiras explosivas em você.</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1368,6 +1512,8 @@ Também pode ser usado para pouca iluminação.</value>
</data>
<data name="IDS_ITEM_MAP"><value>Mapa</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>Mapa vazio</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>Disco - "13"</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>Disco de Música - "cat"</value>
@@ -1470,6 +1616,28 @@ Também pode ser usado para pouca iluminação.</value>
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Cabeça de creeper</value>
</data>
+<data name="IDS_NETHER_STAR"><value>Estrela do Submundo</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>Foguete de Artifício</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>Estrela de Artifício</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>Comparador Redstone</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>Carrinho com TNT</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>Carrinho com Tremonha</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>Armadura de Ferro para Cavalo</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>Armadura de Ouro para Cavalo</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>Armadura de Diamante para Cavalo</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>Chumbo</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>Crachá</value>
+ </data>
<data name="IDS_TILE_STONE"><value>Pedra</value>
</data>
<data name="IDS_TILE_GRASS"><value>Bloco de Grama</value>
@@ -1486,6 +1654,8 @@ Também pode ser usado para pouca iluminação.</value>
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>Tábua de madeira de floresta</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>Tábuas (qualquer tipo)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>Muda</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>Muda de Carvalho</value>
@@ -1822,6 +1992,190 @@ Também pode ser usado para pouca iluminação.</value>
</data>
<data name="IDS_TILE_SKULL"><value>Caveira</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>Bloco de Comando</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>Farol</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>Baú Preso</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>Chapa de Pressão Ponderada (Leve)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>Chapa de Pressão Ponderada (Pesada)</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>Comparador Redstone</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>Sensor de Luz Solar</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>Bloco de Redstone</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>Tremonha</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>Trilho Ativador</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>Monólito</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>Argila colorida</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>Fardo de Feno</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>Argila endurecida</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>Bloco de carvão</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>Argila colorida preta</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>Argila colorida vermelha</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>Argila colorida verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>Argila colorida marrom</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>Argila colorida azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>Argila colorida roxa</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>Argila colorida ciano</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>Argila colorida cinza claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>Argila colorida cinza</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>Argila colorida rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>Argila colorida verde-limão</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>Argila colorida amarela</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>Argila colorida azul claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>Argila colorida magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>Argila colorida laranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>Argila colorida branca</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>Vitral</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>Vitral preto</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>Vitral vermelho</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>Vitral verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>Vitral marrom</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>Vitral azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>Vitral roxo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>Vitral ciano</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>Vitral cinza claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>Vitral cinza escuro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>Vitral rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>Vitral verde-limão</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>Vitral amarelo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>Vitral azul claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>Vitral magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>Vitral laranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>Vitral branco</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>Painel de vitral</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>Painel de vitral preto</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>Painel de vitral vermelho</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>Painel de vitral verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>Painel de vitral marrom</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>Painel de vitral azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>Painel de vitral roxo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>Painel de vitral ciano</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>Painel de vitral cinza claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>Painel de vitral cinza</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>Painel de vitral rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>Painel de vitral verde-limão</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>Painel de vitral amarelo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>Painel de vitral azul claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>Painel de vitral magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>Painel de vitral laranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>Painel de vitral branco</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>Bola pequena</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>Bola grande</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>Forma Estelar</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Forma de Creeper</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>Explosão</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>Formato desconhecido</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>Preto</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>Vermelho</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>Verde</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>Marrom</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>Azul</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>Roxo</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>Ciano</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>Cinza claro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>Cinza</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>Rosa</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>Verde-limão</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>Amarelo</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>Azul claro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>Magenta</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>Laranja</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>Branco</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>Personalizado</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>Desbotado</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>Brilho</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>Trilho</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>Duração do voo:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>Controles Atuais</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>Estilo</value>
@@ -1999,8 +2353,7 @@ Também pode ser usado para pouca iluminação.</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
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.
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
Pressione{*CONTROLLER_VK_A*} para continuar.{*B*}
Pressione {*CONTROLLER_VK_B*} se já souber usar o inventário.
@@ -2021,7 +2374,7 @@ Também pode ser usado para pouca iluminação.</value>
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- Para obter mais informações sobre um item, passe o ponteiro do mouse sobre ele e pressione {*CONTROLLER_VK_RT*}.
+ Para obter mais informações sobre um item, passe o ponteiro do mouse sobre ele e pressione {*CONTROLLER_ACTION_MENU_PAGEDOWN*} .
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2055,7 +2408,7 @@ Também pode ser usado para pouca iluminação.</value>
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- Para obter mais informações sobre um item, passe o ponteiro do mouse sobre ele e pressione {*CONTROLLER_VK_RT*}.
+ Para obter mais informações sobre um item, passe o ponteiro do mouse sobre ele e pressione {*CONTROLLER_ACTION_MENU_PAGEDOWN*} .
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2602,6 +2955,211 @@ No modo de voo, mantenha pressionado {*CONTROLLER_ACTION_JUMP*}para se mover par
Pressione {*CONTROLLER_VK_B*}se já souber usar a barra de alimentos e como comer.
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ Esta é a interface do inventário do cavalo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}Pressione{*CONTROLLER_VK_A*} para continuar.
+ {*B*}Pressione{*CONTROLLER_VK_B*} se você já sabe usar o inventário do cavalo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ O inventário do cavalo permite a você transferir ou equipar itens no seu Cavalo, Burro ou Mula.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ Sele o cavalo posicionando a sela em seu respectivo espaço. Cavalos podem receber armadura ao se posicionar a Armadura de Cavalo em seu respectivo espaço.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ Você também pode transferir os itens entre o seu inventário e os alforjes amarrados aos burros e mulas neste menu.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>Você encontrou um Cavalo.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>Você encontrou um Burro.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>Você encontrou uma Mula.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}Pressione{*CONTROLLER_VK_A*} para saber mais sobre Cavalos, Burros e Mulas.
+ {*B*}Pressione{*CONTROLLER_VK_B*} se você já sabe sobre Cavalos, Burros e Mulas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ Cavalos e burros são encontradas principalmente em planícies abertas. Mulas são o fruto de um burro e um cavalo, mas são estéreis.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ Todos os cavalos, burros e mulas adultos são animais de montaria. No entanto, apenas os cavalos podem usar armadura, ao passo que só as mulas e os burros podem portar alforjes para transportar itens.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ Cavalos, burros e mulas devem ser domesticados antes que possam ser usados. Para domesticar um cavalo, basta tentar montá-lo e permanecer montado enquanto ele tenta tenta arremessar quem o monta.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ \Quando aparecem coraçõezinhos em volta do cavalo, ele terá sido domesticado e não tentará mais se livrar do(a) jogador(a).
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ Tente montar agora neste cavalo. Use {*CONTROLLER_ACTION_USE*} sem itens ou ferramentas na mão para montar.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ Para guiar um cavalo, o jogador deve equipar uma sela sobre o animal, que pode ser comprada de aldeões, pescada ou encontrada dentro de baús no mundo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ Você pode equipar alforjes em burros e mulas domesticados ao amarrar um Baú. Estes alforjes podem então ser acessados enquanto você monta ou se esgueira.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ Cavalos e burros (mas não mulas) podem ser criados como outros animais utilizando-se Maçãs Douradas ou Cenouras Douradas. Potros se tornarão cavalos adultos com o tempo, embora alimentá-los com Trigo ou Feno acelere o processo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ Você pode tentar domesticar cavalos e burros aqui; além disso, há selas, armaduras de cavalos e outros itens úteis para cavalos nos baús pelas redondezas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ Esta é a interface do Farol, que você pode usar para escolher os poderes que o seu farol vai conceder.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}Pressione{*CONTROLLER_VK_A*} para continuar.
+ {*B*}Pressione{*CONTROLLER_VK_B*} se você já sabe usar a interface do Farol.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ No menu do Farol, você pode selecionar o poder principal deste farol. Quanto mais níveis sua pirâmide tiver, maior será o número de opções de poderes disponível para escolha.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ Um farol em uma pirâmide com pelo menos 4 níveis também concede a opção de Regenerar o segundo poder ou aumentar o poder do primeiro.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ Para definir os poderes do seu farol, sacrifique uma Esmeralda, Diamante, Ouro ou Lingote de Ferro no espaço de pagamento. Quando tudo estiver montado, os poderes emanarão do farol indefinidamente.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>Há um farol inativo no topo desta pirâmide.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}Pressione{*CONTROLLER_VK_A*} para saber mais sobre os Faróis.
+ {*B*}Pressione{*CONTROLLER_VK_B*} se você já sabe sobre os Faróis.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ Faróis ativos projetam um feixe de luz clara no céu e concedem poderes aos jogadores próximos. Eles podem ser produzidos com vidro, obsidiana e estrelas do Submundo, obtidas ao derrotar o Wither.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ Os faróis devem ser posicionados de forma a receberem luz solar durante o dia. Eles devem ser colocados em pirâmides de ferro, ouro, esmeralda ou diamante. No entanto, o material sobre o qual um farol é posicionado não afeta o poder do farol.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ Tente usar o Farol para definir os poderes que ele concede. Você pode usar lingotes de ferro concedidos como o pagamento necessário.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>Esta sala contém Tremonhas</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}Pressione{*CONTROLLER_VK_A*} para saber mais sobre as Tremonhas.
+ {*B*}Press{*CONTROLLER_VK_B*} se você já sabe sobre as Tremonhas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ Tremonhas são usadas para inserir ou remover itens de recipientes e para pegar itens lançados dentro delas automaticamente.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ Elas afetam as Barraca de Poções, Baús, Distribuidor, Monólitos, Carrinhos com Baús, Carrinhos com Tremonhas, assim como outras Tremonhas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ Tremonhas farão tentativas contínuas de sugar os itens de recipientes apropriados acima delas. Além disso, também tentarão inserir itens depositados em um recipiente de saída.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ Se uma Tremonha for movida a Redstone, ela se tornará inativa e deixará de sugar e inserir itens.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ Uma Tremonha aponta na direção que tenta retirar os itens. Para fazer uma Tremonha apontar para um bloco específico, coloque-a em frente a este bloco enquanto se esgueira.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ Há diversos modelos de Tremonhas para você ver e experimentar nesta sala.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ Essa é a interface de fogos de artifício, que você pode usar para fazer fogos de artifício e estrelas de fogos de artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}Pressione{*CONTROLLER_VK_A*} para continuar.
+ {*B*}Pressione{*CONTROLLER_VK_B*} se você já sabe usar a interface do Farol.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ Para fazer fogos de artifício coloque pólvora e papel na grade de fabricação 3x3 acima do seu inventário.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ Opcionalmente, você pode colotar múltiplas estrelas de fogos de artifício na grade de fabricação, para adicioná-las ao fogo de artifício sendo fabricado.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ Encher mais espaços na grade de fabricação com pólvora aumenta a altura na qual as estrelas de fogos de artifício explodem.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ Depois você pode remover o fogo de artifício do espaço de resultado, quando quiser criá-lo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ Estrelas de fogo de artifício podem ser feitas colocando pólvora e corante na grade de fabricação.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ O corante define a cor da explosão na estrela de fogos de artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ A forma da estrela de fogos de artifício é definida ao adicionar uma carga de fogo, barra de ouro, pena or cabeça.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ Uma trilha ou brilho pode ser adicionado usando diamantes e pó de glowstone.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ Depois da criação de uma estrela de fogos de artifício, você pode ajustar a cor de desvanecimento combinando-a com um corante.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ Contido nos baús aqui estão vários itens usados na criação de FOGOS DE ARTIFÃCIO!
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}Pressione{*CONTROLLER_VK_A*} para aprender mais sobre fogos de artifício.
+ {*B*}Pressione{*CONTROLLER_VK_B*} se você já sabe sobre fogos de artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ Fogos de artifício são itens decorativos que podem ser lançados à mão ou de distribuidores. Eles podem ser criados com papel, pólvora e opcionalmente um punhado de estrelas de fogos de artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ As cores, desvanecimento, forma, tamanho e efeitos (como trilhas e brilhos) das estrelas de fogos de artifício podem ser customizados usando ingredientes extras na criação.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ Tente criar um fogo de artifício na bancada usando um sortimento de ingredientes dos baús.
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>Selecionar</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>Usar</value>
@@ -2824,6 +3382,22 @@ No modo de voo, mantenha pressionado {*CONTROLLER_ACTION_JUMP*}para se mover par
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Carregar jogo salvo para o Xbox One</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>Montar</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>Desmontar</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>Baú amarrado</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>Lançar</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>Rédea</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>Soltar</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>Amarrar</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>Nomear</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>OK</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>Cancelar</value>
@@ -3134,6 +3708,20 @@ Deseja desbloquear a versão integral do jogo?</value>
</data>
<data name="IDS_DISPENSER"><value>Distribuidor</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>Cavalo</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>Monólito</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>Tremonha</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>Farol</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>Poder Principal</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>Poder Secundário</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>Carrinho de Minas</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>Não há ofertas de conteúdo para baixar desse tipo disponíveis para este título no momento.</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s entrou no jogo.</value>
@@ -3293,10 +3881,14 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>Modo Jogo Criativo</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>Modo de Jogo: Aventura</value>
+ </data>
<data name="IDS_SURVIVAL"><value>Sobrevivência</value>
</data>
<data name="IDS_CREATIVE"><value>Criativo</value>
</data>
+<data name="IDS_ADVENTURE"><value>Aventura</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>Criado em Sobrevivência</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>Criado em Criativo</value>
@@ -3317,6 +3909,8 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>Superplano</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>Insira uma semente para gerar novamente o mesmo terreno. Deixe vazio para um mundo aleatório.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>Quando habilitado, o jogo será um jogo online.</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>Quando habilitado, apenas jogadores convidados poderão entrar.</value>
@@ -3333,7 +3927,7 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_GAMEOPTION_HOST_PRIVILEGES"><value>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.</value>
</data>
-<data name="IDS_GAMEOPTION_RESET_NETHER"><value>Quando ativado, o Submundo é recriado. É útil quando se tem um jogo salvo mais antigo em que as Fortalezas do Submundo não estavam presentes.</value>
+<data name="IDS_GAMEOPTION_RESET_NETHER"><value>Ao ativar, recria o Submundo. Útil para mundos criados quando Fortalezas do Submundo ainda não existiam.</value>
</data>
<data name="IDS_GAMEOPTION_STRUCTURES"><value>Quando habilitado, estruturas como Vilas e Fortalezas serão geradas no mundo.</value>
</data>
@@ -3341,6 +3935,20 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>Quando habilitado, um baú contendo alguns itens úteis será criado perto do ponto de criação do jogador.</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>Quando desativada, impede que monstros e animais alterem os bloco (por exemplo, as explosões dos Creepers não destroem os blocos e as Ovelhas não removem a Grama) ou peguem itens.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>Quando ativada, os jogadores manterão o inventário ao morrer.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>Quando desativada, as criaturas não aparecerão naturalmente.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>Quando desativada, monstros e animais não deixarão itens (por exemplo, os Creepers não vão deixar cair pólvora).</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>Quando desativada, os blocos vão parar de derrubar itens ao serem destruídos (por exemplo, blocos de pedra não derrubarão mais paralelepípedos).</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>Quando desativada, os jogadores não regenerarão a saúde naturalmente.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>Quando desativada, a hora do dia não sofrerá alteração.</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>Pacotes de Capas</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>Temas</value>
@@ -3389,7 +3997,49 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} foi esmurrado por {*SOURCE*}</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} foi morto por {*SOURCE*}</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} foi morto por {*SOURCE*} usando magia</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} caiu da escada</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} caiu de algumas videiras</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} caiu para fora da água</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} caiu de um lugar alto</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*PLAYER*} foi condenado(a) a cair por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*PLAYER*} foi condenado(a) a cair por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*PLAYER*} foi condenado(a) a cair por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>{*PLAYER*} caiu muito longe e foi eliminado(a) por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>{*PLAYER*} caiu muito longe e foi eliminado(a) por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} andou sobre as chamas enquanto lutava {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} virou cinzas enquanto lutava {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} tentou nadar na lava para escapar{*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} afogou-se enquanto tentava escapar{*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} pisou no cacto enquanto tentava escapar {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*PLAYER*} foi explodido(a) por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} secou até morrer</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*PLAYER*} foi assassinado por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*PLAYER*} foi baleado(a) {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*PLAYER*} levou uma bola de fogo de {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*PLAYER*} foi socado(a) por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} foi morto(a) por {*SOURCE*} usando {*ITEM*}</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>Neblina Base</value>
</data>
@@ -3566,6 +4216,8 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>Não é possível usar o ovo spawn no momento. O número máximo de lulas em um mundo foi alcançado.</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>Não pode usar um Ovo de Criação no momento. O número máximo de Morcegos em um mundo foi alcançado.</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>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.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>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.</value>
@@ -3574,12 +4226,14 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>Você não pode gerar inimigos no Modo Paz.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>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.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Este animal não pode entrar no Modo do Amor. O número máximo de Porcos, Ovelhas, Vacas e Gatos de criação foi alcançado.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>Este animal não pode entrar em Modo Amor. O número máximo de lobos foi alcançado.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>Este animal não pode entrar em Modo Amor. O número máximo de frangos foi alcançado.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>Este animal não pode entrar no Modo do Amor. O número máximo de cavalos reprodutores foi alcançado.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>Este animal não pode entrar em Modo Amor. O número máximo de vacogumelos foi alcançado.</value>
</data>
<data name="IDS_MAX_BOATS"><value>O número máximo de barcos em um mundo foi alcançado.</value>
@@ -3607,27 +4261,43 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
<data name="IDS_CREDITS"><value>Créditos</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>Reinstalar Conteúdo</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>Configurações de Depuração</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>Fogo Espalha</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>TNT Explode</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>Jogador x Jogador</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>Confiar nos Jogadores</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>Privilégios do Host</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>Gerar Estruturas</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>Mundo Superplano</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>Baú de Bônus</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>Opções de Mundo</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>Opções de Jogo</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>Assédio por criatura</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>Manter inventário</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>Surgimento de criaturas</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>Itens de criaturas</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>Itens de Espaços</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>Regeneração Natural</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>Ciclo da Luz do Dia</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>Pode Construir e Minerar</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>Pode Usar Portas e Acionadores</value>
@@ -3666,7 +4336,7 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_CREATE_NEW_WORLD_SEED"><value>Semente para Criação de Mundo</value>
</data>
-<data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED"><value>Deixar em branco para semente aleatória</value>
+<data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED"><value>Deixar livre p/ uma semente aleatória</value>
</data>
<data name="IDS_PLAYERS"><value>Jogadores</value>
</data>
@@ -3700,7 +4370,7 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_LABEL_LEVEL_TYPE"><value>Tipo de Nível:</value>
</data>
-<data name="IDS_LABEL_PvP"><value>JxJ:</value>
+<data name="IDS_LABEL_PvP"><value>JvJ:</value>
</data>
<data name="IDS_LABEL_TRUST"><value>Confiar Jogadores:</value>
</data>
@@ -3732,7 +4402,7 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_RESET_TO_DEFAULTS"><value>Restaurar Padrões</value>
</data>
-<data name="IDS_VIEW_BOBBING"><value>Exibir Oscilação</value>
+<data name="IDS_VIEW_BOBBING"><value>Oscilação da visão</value>
</data>
<data name="IDS_HINTS"><value>Dicas</value>
</data>
@@ -3754,7 +4424,7 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_SOCIAL_LABEL_DESCRIPTION"><value>Editar mensagem da placa:</value>
</data>
-<data name="IDS_SOCIAL_DEFAULT_DESCRIPTION"><value>Vejam o que fiz no Minecraft: Xbox 360 Edition!</value>
+<data name="IDS_SOCIAL_DEFAULT_DESCRIPTION"><value>Olha o que eu fiz no Minecraft: Xbox 360 Edition!</value>
</data>
<data name="IDS_DEFAULT_TEXTUREPACK"><value>Texturas, ícones e interface do usuário clássicos do Minecraft!</value>
</data>
@@ -3814,6 +4484,14 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_POTION_POISON"><value>Veneno</value>
</data>
+<data name="IDS_POTION_WITHER"><value>Wither</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>Reforço de Saúde</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>Absorção</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>Saturação</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>de Rapidez</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>de Lentidão</value>
@@ -3852,6 +4530,14 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>de Veneno</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>da Decadência</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>do Reforço de Saúde</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>da Absorção</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>da Saturação</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3948,6 +4634,22 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_POTION_DESC_POISON"><value>Reduz a saúde dos jogadores, animais e monstros afetados com o tempo.</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>Quando aplicado:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>Força de pulo para o cavalo</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>Reforços Zumbis</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>Saúde Máxima</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>Limite de acomp. pelas criaturas</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>Resistência a empurrão</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>Velocidade</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>Dano de ataque</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>Nitidez </value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>Atacar</value>
@@ -4038,7 +4740,7 @@ Deseja instalar o pacote de combinações ou o pacote de texturas agora?</value>
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>Restaura 3{*ICON_SHANK_01*}. Criado ao cozinhar uma batata na fornalha.</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>Restaura 1{*ICON_SHANK_01*}, ou pode ser cozinhado em uma fornalha. Pode ser plantado na fazenda. Comer isso pode te envenenar.</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>Restaura 1{*ICON_SHANK_01*} Comer isso pode te envenenar.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>Restaura 3{*ICON_SHANK_01*}. Criado com uma cenoura e barras de ouro.</value>
</data>
diff --git a/Minecraft.Client/Common/Media/pt-PT/4J_strings.resx b/Minecraft.Client/Common/Media/pt-PT/4J_strings.resx
index a612c335..ab38c1c5 100644
--- a/Minecraft.Client/Common/Media/pt-PT/4J_strings.resx
+++ b/Minecraft.Client/Common/Media/pt-PT/4J_strings.resx
@@ -73,11 +73,11 @@
</data>
<data name="IDS_PRO_NOTONLINE_TITLE"><value>Perfil de jogador offline</value>
</data>
-<data name="IDS_PRO_NOTONLINE_TEXT"><value>O jogo tem algumas funcionalidades que requerem um perfil de jogador ativo no Xbox Live, mas de momento estás offline.</value>
+<data name="IDS_PRO_NOTONLINE_TEXT"><value>O jogo tem algumas funcionalidades que requerem um perfil de jogador ativo no Xbox LIVE, mas de momento estás offline.</value>
</data>
-<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>Esta funcionalidade requer um perfil de jogador ligado ao Xbox Live.</value>
+<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"><value>Esta funcionalidade requer um perfil de jogador ligado ao Xbox LIVE.</value>
</data>
-<data name="IDS_PRO_NOTONLINE_ACCEPT"><value>Ligar ao Xbox Live</value>
+<data name="IDS_PRO_NOTONLINE_ACCEPT"><value>Ligar ao Xbox LIVE</value>
</data>
<data name="IDS_PRO_NOTONLINE_DECLINE"><value>Continuar a jogar offline</value>
</data>
@@ -100,7 +100,7 @@
<data name="IDS_PRO_UNLOCKGAME_TITLE"><value>Desbloquear Jogo Completo</value>
</data>
<data name="IDS_PRO_UNLOCKGAME_TEXT"><value>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.
+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?</value>
</data>
<data name="IDS_PRO_PROFILEPROBLEM_TEXT"><value>Estás a ser reencaminhado para o menu principal devido a um problema de leitura do teu perfil.</value>
diff --git a/Minecraft.Client/Common/Media/pt-PT/strings.resx b/Minecraft.Client/Common/Media/pt-PT/strings.resx
index 132c30f2..6fee7199 100644
--- a/Minecraft.Client/Common/Media/pt-PT/strings.resx
+++ b/Minecraft.Client/Common/Media/pt-PT/strings.resx
@@ -156,7 +156,7 @@ Se estiveres a segurar um objeto, usa{*CONTROLLER_ACTION_USE*} para o utilizares
</data>
<data name="IDS_HOW_TO_PLAY_HUD"><value>{*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*}
+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*}{*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.</value>
</data>
<data name="IDS_HOW_TO_PLAY_INVENTORY"><value>{*T3*}INSTRUÇÕES DE JOGO : INVENTÃRIO{*ETW*}{*B*}{*B*}
@@ -233,7 +233,7 @@ Quando é colocada uma Espada, Arco, Machado, Picareta, Pá, Armadura ou Livro n
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*}
+Todos os ingredientes para uma Mesa de Feitiços podem ser encontrados nas aldeias de um mundo, ou escavando ou cultivando no mundo.{*B*}{*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*}
</value>
</data>
@@ -282,7 +282,7 @@ No modo de voo, podes manter premido{*CONTROLLER_ACTION_JUMP*} para subires e{*C
</data>
<data name="IDS_HOW_TO_PLAY_HOSTOPTIONS"><value>{*T3*}INSTRUÇÕES DE JOGO : OPÇÕES DE ANFITRIÃO E JOGADOR{*ETW*}{*B*}{*B*}
-{*T1*}Opções de jogo{*ETW*}{*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*}
@@ -300,6 +300,27 @@ Ao carregar ou criar um mundo, prime o botão "Mais Opções" para abrir um menu
{*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*}
+ {*T2*}Ciclo da Luz do Dia{*ETW*}{*B*}
+ Quando desativada, a hora do dia não muda.{*B*}{*B*}
+
+ {*T2*}Manter Inventário{*ETW*}{*B*}
+ Quando ativada, os jogadores mantêm o inventário quando morrem.{*B*}{*B*}
+
+ {*T2*}Geração de Criaturas{*ETW*}{*B*}
+ Quando desativada, as criaturas não se geram naturalmente.{*B*}{*B*}
+
+ {*T2*}Perturbação de Criaturas{*ETW*}{*B*}
+ Quando desativada, impede que monstros e animais mudem blocos (por exemplo, explosões de Creeper não destroem blocos e as Ovelhas não comem Erva) ou apanhem objetos.{*B*}{*B*}
+
+ {*T2*}Saques de Criaturas{*ETW*}{*B*}
+ Quando desativada, os monstros e os animais não deixam cair saques (por exemplo, os Creepers não deixam cair pólvora).{*B*}{*B*}
+
+ {*T2*}Queda de Peças{*ETW*}{*B*}
+ Quando desativada, os blocos não deixam cair objetos quando são destruídos (por exemplo, os blocos de Pedra não deixam cair Pedra Arredondada).{*B*}{*B*}
+
+ {*T2*}Regeneração Natural{*ETW*}{*B*}
+ Quando desativada, os jogadores não regeneram naturalmente a sua saúde.{*B*}{*B*}
+
{*T1*}Opções de Criação de Mundos{*ETW*}{*B*}
Ao criar um novo mundo, existem opções adicionais.{*B*}{*B*}
@@ -343,24 +364,26 @@ Para modificar os privilégios de um jogador, seleciona o nome e prime{*CONTROLL
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*}
+ {*KICK_PLAYER_DESCRIPTION*}{*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*}
+
+ {*T2*}Pode Teletransportar{*ETW*}{*B*}
Permite que o jogador se transporte ou transporte outros jogadores até si ou até outros jogadores no mundo.
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>Selecionar esta opção fará com que os jogadores que não estão na mesma consola {*PLATFORM_NAME*} que o anfitrião sejam expulsos do jogo, juntamente com outros jogadores na sua consola {*PLATFORM_NAME*}. Este jogador não poderá voltar ao jogo até este ser reiniciado.</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>Página Seguinte</value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>Página Anterior</value>
@@ -383,7 +406,7 @@ Se "Privilégios de Anfitrião" estiver ativada, o jogador anfitrião pode modif
</data>
<data name="IDS_HOW_TO_PLAY_MENU_BREEDANIMALS"><value>Animais de Criação</value>
</data>
-<data name="IDS_HOW_TO_PLAY_MENU_BREWING"><value>Preparação de Poções</value>
+<data name="IDS_HOW_TO_PLAY_MENU_BREWING"><value>Poções</value>
</data>
<data name="IDS_HOW_TO_PLAY_MENU_ENCHANTMENT"><value>Feitiço</value>
</data>
@@ -426,60 +449,92 @@ pelo que facilmente se juntarão a ti.
</data>
<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>
{*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*}
+- Novos objetos adicionados - Barro Endurecido, Barro Manchado, Bloco de Carvão, Fardo de Palha, Carril Ativador, Bloco de Redstone, Sensor de Luz do Dia, Soltador, Funil, Vagoneta com Funil, Vagoneta com TNT, Comparador de Redstone, Placa de Pressão Ponderada, Farol, Baú Preso, Foguete de Fogo de Artifício, Estrela de Fogo de Artifício, Estrela do Submundo, Corda de Conduzir, Armadura de Cavalo, Etiqueta, Ovo de Geração de Cavalo{*B*}
+- Novas Criaturas adicionadas - Cérbero, Esqueletos de Cérbero, Bruxas, Morcegos, Cavalos, Burros e Mulas{*B*}
+- Novas funcionalidades de geração de terreno - Cabanas de Bruxa.{*B*}
+- Adicionada interface de Farol.{*B*}
+- Adicionada interface de Cavalo.{*B*}
+- Adicionada interface de Funil.{*B*}
+- Adicionado Fogo de Artifício - a interface de Fogo de Artifício pode ser acedida a partir da Mesa de Criação quando tens os ingredientes para criar uma Estrela de Fogo de Artifício ou um Foguete de Fogo de Artifício.{*B*}
+- Adicionado 'Modo Aventura' - Só podes quebrar blocos com as ferramentas corretas.{*B*}
+- Adicionados imensos sons novos.{*B*}
+- Habitantes, objetos e projéteis agora passam através de portais.{*B*}
+- Os Repetidores podem agora ser trancados alimentando a sua lateral com outro Repetidor.{*B*}
+- Mortos-vivos e Esqueletos podem agora gerar-se com diferentes armas e armaduras.{*B*}
+- Novas mensagens de morte.{*B*}
+- Nomeia as criaturas com uma Etiqueta, e dá novos nomes a contentores para mudar o título quando se abre o menu.{*B*}
+- O Pó de Ossos já não faz tudo crescer instantaneamente até ao tamanho máximo, e passa a fazê-lo por fases de forma aleatória.{*B*}
+- Um sinal de Redstone que descreve os conteúdos dos Baús, dos Postos de Poções, dos Distribuidores e das Jukeboxes pode ser detetado colocando um Comparador de Redstone diretamente contra eles.{*B*}
+- Os Distribuidores podem ficar virados em qualquer direção.{*B*}
+- Comer uma Maçã Dourada dá ao jogador uma saúde de "absorção" adicional durante um curto período.{*B*}
+- Quanto mais tempo permaneceres numa zona, mais difíceis serão os monstros que se geram nessa zona.{*B*}</value>
+</data>
+<data name="IDS_TITLEUPDATE"><value>{*ETB*}Bem-vindo de volta! Podes não ter reparado, mas o Minecraft foi atualizado.{*B*}{*B*}
+Há muitas funcionalidades novas para explorares com os teus amigos. Aqui ficam algumas. Lê e depois diverte-te!{*B*}{*B*}
+{*T1*}Novos Objetos{*ETB*} - Barro Endurecido, Barro Manchado, Bloco de Carvão, Fardo de Palha, Carril Ativador, Bloco de Redstone, Sensor de Luz do Dia, Soltador, Funil, Vagoneta com Funil, Vagoneta com TNT, Comparador de Redstone, Placa de Pressão Ponderada, Farol, Baú Preso, Foguete de Fogo de Artifício, Estrela de Fogo de Artifício, Estrela do Submundo, Corda de Conduzir, Armadura de Cavalo, Etiqueta, Ovo de Geração de Cavalo{*B*}{*B*}
+{*T1*}Novas Criaturas{*ETB*} - Cérbero, Esqueletos de Cérbero, Bruxas, Morcegos, Cavalos, Burros e Mulas{*B*}{*B*}
+{*T1*}Novas Funcionalidades{*ETB*} - Domestica e cavalga um cavalo, cria fogo de artifício e dá espetáculo, nomeia animais e monstros com uma Etiqueta, cria circuitos de Redstone mais avançados, e novas Opções de Anfitrião para ajudar a controlar aquilo que os convidados podem fazer no teu mundo!{*B*}{*B*}
+{*T1*}Novo Mundo Tutorial{*ETB*} – Aprende a usar as funcionalidades antigas e recentes no Mundo Tutorial. Vê se consegues descobrir todos os Discos de Música secretos escondidos no mundo!{*B*}{*B*}
</value>
</data>
-<data name="IDS_TITLEUPDATE"><value>{*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*}
-</value>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>Cavalos</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}INSTRUÇÕES DE JOGO: CAVALOS{*ETW*}{*B*}{*B*}
+Os Cavalos e os Burros estão sobretudo nas planícies. As Mulas são descendentes de um Burro e de um Cavalo, mas são inférteis.{*B*}
+Todos os Cavalos, Burros e Mulas adultos podem ser montados. Porém, só os Cavalos podem ter armadura, e só as Mulas e os Burros podem ser equipados com alforjes para transportar objetos.{*B*}{*B*}
+Os Cavalos, os Burros e as Mulas têm de ser domesticados antes de poderem ser usados. Para domesticar um cavalo, é preciso montá-lo e conseguir ficar em cima dele enquanto ele tenta atirar o jogador para o chão.{*B*}
+Quando surgem Corações de Amor à volta do cavalo, ele está domesticado e já não tentará atirar o jogador para o chão. Para guiar um cavalo, é preciso equipá-lo com uma Sela.{*B*}{*B*}
+Podes comprar Selas aos aldeões ou encontrá-las dentro de Baús escondidos pelo mundo.{*B*}
+Os Burros e Mulas domesticados podem receber alforjes se lhes prenderes um Baú. Poderás depois aceder aos alforjes enquanto montas ou quando te aproximas furtivamente do animal.{*B*}{*B*}
+Os Cavalos e os Burros (as Mulas não) podem ser procriados como os outros animais, usando Maçãs Douradas ou Cenouras Douradas.{*B*}
+Os potros tornam-se cavalos adultos ao fim de algum tempo, mas podes acelerar o processo alimentando-os com Trigo ou Feno.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>Faróis</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}INSTRUÇÕES DE JOGO: FARÓIS{*ETW*}{*B*}{*B*}
+Os Faróis Ativos projetam um feixe de luz brilhante para o céu e atribuem poderes a jogadores próximos.{*B*}
+São criados a partir de Vidro, Obsidiana e Estrelas do Submundo, que podem ser obtidos derrotando o Cérbero.{*B*}{*B*}
+Os Faróis têm de ser colocados de modo a apanhar sol durante o dia. Eles têm de ser colocados em Pirâmides de Ferro, Ouro, Esmeralda ou Diamante.{*B*}
+O material do Farol em cima do qual este é colocado não tem qualquer efeito na sua potência.{*B*}{*B*}
+No menu do Farol podes selecionar um poder principal para o teu Farol. Quantos mais camadas tiver a tua pirâmide, mais poderes terás à escolha.{*B*}
+Um Farol numa pirâmide com pelo menos quatro camadas também te permite escolher entre o poder secundário de Regeneração ou um poder principal mais forte.{*B*}{*B*}
+Para definir os poderes do teu Farol tens de sacrificar uma Esmeralda, um Diamante, Lingotes de Ferro ou Ouro na ranhura de pagamento.{*B*}
+Uma vez definidos, os poderes irão emanar indefinidamente do Farol.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>Fogo de artifício</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}INSTRUÇÕES DE JOGO: FOGO DE ARTIFÃCIO{*ETW*}{*B*}{*B*}
+O Fogo de Artifício é um objeto decorativo que pode ser lançado à mão ou a partir de Distribuidores. Pode ser criado usando Papel, Pólvora e, opcionalmente, algumas Estrelas de Fogo de Artifício.{*B*}
+As cores, o desaparecimento, a forma, o tamanho e os efeitos (como os rastos e a cintilância) das Estrelas de Fogo de Artifício podem ser personalizados incluindo ingredientes adicionais no momento da criação.{*B*}{*B*}
+Para criar um Fogo de Artifício, coloca Pólvora e Papel na grelha de criação de 3x3 que aparece acima do teu inventário.{*B*}
+Opcionalmente, podes colocar múltiplas Estrelas de Fogo de Artifício na grelha para as adicionar ao Fogo de Artifício.{*B*}
+Preencher mais ranhuras na grelha de criação com Pólvora aumenta a altura a que as Estrelas de Fogo de Artifício vão explodir.{*B*}{*B*}
+Podes então retirar o Fogo de Artifício criado da ranhura de saída.{*B*}{*B*}
+As Estrelas de Fogo de Artifício podem ser criadas colocando Pólvora e Tinta na grelha de criação.{*B*}
+ - A Tinta definirá a cor da explosão da Estrela de Fogo de Artifício.{*B*}
+ - A forma da Estrela de Fogo de Artifício é definida adicionando uma Carga de Fogo, uma Pepita de Ouro, uma Pena ou uma Cabeça de Criatura.{*B*}
+ - Um rasto ou uma cintilância podem ser adicionados usando Diamantes ou Pó de Glowstone.{*B*}{*B*}
+Depois de ser criada uma Estrela de Fogo de Artifício, podes definir a cor de desaparecimento da Estrela de Fogo de Artifício criando-a com Tinta.
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>Funis</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}INSTRUÇÕES DE JOGO: FUNIS{*ETW*}{*B*}{*B*}
+Os Funis são usados para inserir ou remover objetos de contentores, e para recolher automaticamente objetos atirados a eles.{*B*}
+Eles podem afetar Postos de Poções, Baús, Distribuidores, Soltadores, Vagonetas com Baús, Vagonetas com Funis, bem como outros Funis.{*B*}{*B*}
+Os Funis vão tentar continuamente sugar objetos de um contentor adequado colocado acima deles. Também vão tentar inserir objetos armazenados num contentor de destino.{*B*}
+Se um Funil for alimentado por Redstone tornar-se-á inativo e parará de sugar e de inserir objetos.{*B*}{*B*}
+Um Funil aponta na direção em que tenta colocar objetos. Para levar um Funil a apontar para um determinado bloco, coloca-o frente a esse bloco enquanto andas furtivamente.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>Soltadores</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}INSTRUÇÕES DE JOGO: SOLTADORES{*ETW*}{*B*}{*B*}
+Quando alimentados por Redstone, os Soltadores vão largar no chão um objeto ao acaso que contenham. Usa {*CONTROLLER_ACTION_USE*} para abrir o Soltador e depois podes carregar o Soltador com objetos do teu inventário.{*B*}
+Se o Soltador estiver perante um Baú ou outro tipo de Contentor, o objeto será colocado aí e não no chão. Podes criar longas cadeias de Soltadores para transportar objetos ao longo de um caminho. Para que isto funcione, eles terão de ser, alternadamente, ligados e desligados.
+ </value>
</data>
<data name="IDS_DESC_SWORD"><value>Provoca mais danos do que com a mão.</value>
</data>
@@ -553,7 +608,7 @@ Tarte de Abóbora, Poção de Visão Nocturna, Poção de Invisibilidade, Quartz
</data>
<data name="IDS_DESC_SLAB"><value>Utilizado para criar escadas compridas. Duas placas colocadas uma sobre a outra criam um bloco de placa dupla de tamanho normal.</value>
</data>
-<data name="IDS_DESC_HALFSLAB"><value>Utilizado como escadas longas. Duas placas colocadas uma sobre a outra irão criar um bloco de placas duplo de tamanho normal.</value>
+<data name="IDS_DESC_HALFSLAB"><value>Utilizado para criar escadas compridas. Duas placas colocadas uma sobre a outra criam um bloco de placa dupla de tamanho normal.</value>
</data>
<data name="IDS_DESC_TORCH"><value>Utilizadas para criar luz. As tochas também derretem a neve e o gelo.</value>
</data>
@@ -606,10 +661,36 @@ As cores da cama são sempre as mesmas, independentemente das cores da lã usada
</data>
<data name="IDS_DESC_MAP"><value>Quando seguras no mapa, poderás ver a imagem de uma área explorada. Pode ser utilizado para descobrir caminhos.</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>Quando se usa torna-se um mapa da parte do mundo em que estás, e vai-se preenchendo à medida que exploras.</value>
+ </data>
<data name="IDS_DESC_BOW"><value>Utilizado para ataques à distância com setas.</value>
</data>
<data name="IDS_DESC_ARROW"><value>Utilizadas como munição para os arcos.</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>Largado pelo Cérbero, usado no fabrico de Faróis.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>Quando ativados, criam explosões coloridas. Cor, efeito, forma e desaparecimento são determinados pela Estrela de Fogo de Artifício usada quando é criado o Fogo de Artifício.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>Usada para determinar cor, efeito e forma de um Fogo de Artifício.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>Usado em circuitos Redstone para manter, comparar ou subtrair a força do sinal, ou para medir determinados estados de blocos.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>É um tipo de Vagoneta que atua como bloco de TNT móvel.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>É um bloco que produz um sinal Redstone com base na luz solar (ou na ausência desta).</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>É um tipo de Vagoneta especial que funciona de modo similar a um Funil. Recolhe objetos que estão nos carris e nos contentores acima.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>Um tipo especial de Armadura que pode ser colocada num cavalo. Fornece 5 de Armadura.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>Um tipo especial de Armadura que pode ser colocada num cavalo. Fornece 7 de Armadura.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>Um tipo especial de Armadura que pode ser colocada num cavalo. Fornece 11 de Armadura.</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>Usado para atrelar criaturas ao jogador ou a postes de Vedação.</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>Utilizada para nomear criaturas no mundo.</value>
+</data>
<data name="IDS_DESC_BREAD"><value>Restitui 2,5{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_CAKE"><value>Restitui 1{*ICON_SHANK_01*}. Podes usar até 6 vezes.</value>
@@ -628,7 +709,7 @@ As cores da cama são sempre as mesmas, independentemente das cores da lã usada
</data>
<data name="IDS_DESC_BEEF_COOKED"><value>Restitui 4{*ICON_SHANK_01*}. Cria-se cozinhando bife cru numa fornalha.</value>
</data>
-<data name="IDS_DESC_PORKCHOP_RAW"><value>Restituem 1,5{*ICON_SHANK_01*} ou podem ser cozinhadas numa fornalha.</value>
+<data name="IDS_DESC_PORKCHOP_RAW"><value>Restitui 1,5{*ICON_SHANK_01*} ou pode ser cozinhado numa fornalha.</value>
</data>
<data name="IDS_DESC_PORKCHOP_COOKED"><value>Restituem 4{*ICON_SHANK_01*}. Criadas ao cozinhar costeletas de porco cruas numa fornalha.</value>
</data>
@@ -646,7 +727,7 @@ As cores da cama são sempre as mesmas, independentemente das cores da lã usada
</data>
<data name="IDS_DESC_LEVER"><value>Utilizada para enviar uma descarga elétrica ao ligar e desligar. Fica ligada ou desligada até ser premida novamente.</value>
</data>
-<data name="IDS_DESC_REDSTONETORCH"><value>Envia constantemente uma descarga elétrica ou pode ser utilizada como receptor/transmissor quando ligada ao lado de um bloco.
+<data name="IDS_DESC_REDSTONETORCH"><value>Envia constantemente uma descarga elétrica ou pode ser utilizada como recetor/transmissor quando ligada ao lado de um bloco.
Pode também ser utilizada para iluminação reduzida.</value>
</data>
<data name="IDS_DESC_REDSTONEREPEATER"><value>Utilizado em circuitos de Redstone como repetidor, retardador e/ou díodo.</value>
@@ -661,7 +742,7 @@ Pode também ser utilizada para iluminação reduzida.</value>
</data>
<data name="IDS_DESC_POWEREDRAIL"><value>Quando ativado, acelera as vagonetas que lhe passam por cima. Quando não está ativado, as vagonetas param.</value>
</data>
-<data name="IDS_DESC_DETECTORRAIL"><value>Funciona como uma Placa de Pressão (envia um sinal de Redstone quando ativado), mas só pode ser ativado por uma vagoneta.</value>
+<data name="IDS_DESC_DETECTORRAIL"><value>Funciona como uma Placa de Pressão (envia um sinal de Redstone quando ativado), mas só pode ser ativado por uma Vagoneta.</value>
</data>
<data name="IDS_DESC_MINECART"><value>Utilizada para te transportar a ti, um animal ou um monstro pelos carris.</value>
</data>
@@ -822,7 +903,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_DESC_BONE"><value>Recolhido ao matar um esqueleto. Pode ser usado para criar farinha de ossos e para domesticar lobos.</value>
</data>
-<data name="IDS_DESC_RECORD"><value>Recolhido quando um esqueleto mata um Creeper. Pode ser reproduzido numa jukebox.</value>
+<data name="IDS_DESC_RECORD"><value>Recolhido quando um Esqueleto mata um Creeper. Pode ser reproduzido numa jukebox.</value>
</data>
<data name="IDS_DESC_WATER"><value>Extingue incêndios e ajuda as plantações a crescer. Pode ser recolhida num balde.</value>
</data>
@@ -932,102 +1013,160 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_DESC_COCOA"><value>Pode ser colhido para recolher Grãos de Cacau.</value>
</data>
-<data name="IDS_DESC_SKULL"><value>As Cabeças de Mob podem ser colocadas como decoração ou usadas como máscara na ranhura de capacete.</value>
+<data name="IDS_DESC_SKULL"><value>As Cabeças de Criatura podem ser colocadas como decoração ou usadas como máscara na ranhura de capacete.</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>Utilizado para executar ordens.</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>Projeta um feixe de luz para o céu e pode fornecer Efeitos de Estado a jogadores próximos.</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>Armazena blocos e objetos lá dentro. Coloca dois baús lado a lado para criar um baú maior com o dobro da capacidade. O baú preso também cria uma carga de Redstone quando aberto.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>Fornece uma carga de Redstone. A carga será mais forte se houver mais objetos na placa.</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>Fornece uma carga de Redstone. A carga será mais forte se houver mais objetos na placa. Requer mais peso do que a placa leve.</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>Usado como fonte de poder de Redstone. Pode voltar a ser transformado em Redstone.</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>Usado para apanhar objetos ou para transferi-los para dentro e para fora de contentores.</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>Um tipo de carril que pode ativar ou desativar Vagonetas com Funis e despoletar Vagonetas com TNT.</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>Usado para agarrar e soltar objetos, ou para empurrar objetos para outro contentor, quando recebe uma carga de Redstone.</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>Blocos coloridos criados através da aplicação de tinta em Barro Endurecido.</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>Pode ser dado como alimento a Cavalos, Burros ou Mulas para curar até 10 Corações. Acelera o crescimento dos potros.</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>Criado através da fundição de Barro numa fornalha.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>Fabricado a partir de vidro e de uma tinta.</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>Fabricado a partir de Vidro Manchado.</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>Uma forma compacta de armazenar Carvão. Pode ser usado como combustível numa Fornalha.</value>
+ </data>
<data name="IDS_SQUID"><value>Lula</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>Solta sacos de tinta quando é morta.</value>
- </data>
+ </data>
<data name="IDS_COW"><value>Vaca</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>Solta cabedal quando é morta. Pode também ser ordenhada com um balde.</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>Ovelha</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>Solta lã quando é tosquiada (se ainda não tiver sido tosquiada). Pode ser pintada para que a sua lã ganhe uma cor diferente.</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>Galinha</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>Solta penas quando é morta e também põe ovos de forma aleatória.</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>Porco</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>Solta costeletas quando é morto. Pode ser montado utilizando uma sela.</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>Lobo</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>É 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.</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>Explode se te aproximares demasiado!</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>Esqueleto</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>Dispara setas contra ti. Solta setas quando é morto.</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>Aranha</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>Ataca-te quando te aproximas. Pode subir paredes. Solta fios quando é morta.</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>Morto-vivo</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>Ataca-te quando te aproximas.</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>Pastor Morto-vivo</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>Inicialmente dócil, ataca em grupos se for atacado.</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Medusa</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>Dispara bolas flamejantes que explodem quando entram em contacto.</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>Slime</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>Divide-se em Slimes mais pequenos quando sofre danos.</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>Ataca-te se olhares para ele. Consegue movimentar blocos.</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Peixe Prateado</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>Atrai os Peixes Prateados escondidos quando atacado. Esconde-se nos blocos de pedra.</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>Aranha da Caverna</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>A sua mordidela é venenosa.</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Vacogumelos</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>Usada com uma tigela para fazer guisado de cogumelos. Produz cogumelos e torna-se uma vaca normal quando tosquiada.</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>Golem de Neve</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>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.</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>Ender Dragon</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>Um grande dragão preto que se encontra no Fim.</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Blaze</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>Inimigos que podem ser encontrados no Submundo, principalmente dentro das Fortalezas do Submundo. Produzem Varinhas de Blaze quando são mortos.</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>Cubo de Magma</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>Podem ser encontrados no Submundo. Semelhantes aos Slimes, dividem-se em versões mais pequenas quando são mortos.</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>Aldeão</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>Ocelote</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>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.</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>Golem de Ferro</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>Aparece nas Aldeias para as proteger e pode ser criado usando Blocos de Ferro e Abóboras.</value>
- </data>
+ </data>
+<data name="IDS_BAT"><value>Morcego</value>
+ </data>
+<data name="IDS_DESC_BAT"><value>Estas criaturas voadoras estão em cavernas ou noutros grandes espaços fechados.</value>
+ </data>
+<data name="IDS_WITCH"><value>Bruxa</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>Estas inimigas estão nos pântanos e atacam-te atirando Poções. Largam Poções quando são mortas.</value>
+ </data>
+<data name="IDS_HORSE"><value>Cavalo</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>Estes animais podem ser domesticados e depois podem ser montados.</value>
+ </data>
+<data name="IDS_DONKEY"><value>Burro</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>Estes animais podem ser domesticados e depois podem ser montados. Têm um baú preso a eles.</value>
+ </data>
+<data name="IDS_MULE"><value>Mula</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>Nascem do cruzamento de um Cavalo com um Burro. Estes animais podem ser domesticados e depois podem ser montados e carregar baús.</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>Cavalo Morto-vivo</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>Cavalo Esqueleto</value>
+ </data>
+<data name="IDS_WITHER"><value>Cérbero</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>São criados a partir de Caveiras de Cérbero e Areia Movediça. Atiram caveiras explosivas contra ti.</value>
+ </data>
<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
</data>
<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
@@ -1374,6 +1513,8 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_ITEM_MAP"><value>Mapa</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>Mapa Vazio</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>Disco Música - "13"</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>Disco Música - "cat"</value>
@@ -1434,7 +1575,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_ITEM_SPIDER_EYE"><value>Olho de Aranha</value>
</data>
-<data name="IDS_ITEM_FERMENTED_SPIDER_EYE"><value>Olho de Aranha Fermentado</value>
+<data name="IDS_ITEM_FERMENTED_SPIDER_EYE"><value>Olho Aranha Ferment.</value>
</data>
<data name="IDS_ITEM_BLAZE_POWDER"><value>Pó de Blaze</value>
</data>
@@ -1452,7 +1593,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_ITEM_FIREBALL"><value>Carga de Fogo</value>
</data>
-<data name="IDS_ITEM_FIREBALLCHARCOAL"><value>Carga de Fogo (Carvão veg.)</value>
+<data name="IDS_ITEM_FIREBALLCHARCOAL"><value>Carga Fogo (Carv. veg.)</value>
</data>
<data name="IDS_ITEM_FIREBALLCOAL"><value>Carga de Fogo (Carvão)</value>
</data>
@@ -1476,6 +1617,28 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Cabeça de Creeper</value>
</data>
+<data name="IDS_NETHER_STAR"><value>Estrela do Submundo</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>Foguete Fogo de Art.</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>Estrela Fogo de Art.</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>Comparador de Redstone</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>Vagoneta com TNT</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>Vagoneta com Funil</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>Armadura de Cavalo em Ferro</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>Armadura de Cavalo em Ouro</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>Armadura de Cavalo em Diamante</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>Corda de Conduzir</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>Etiqueta</value>
+ </data>
<data name="IDS_TILE_STONE"><value>Pedra</value>
</data>
<data name="IDS_TILE_GRASS"><value>Bloco de Erva</value>
@@ -1492,6 +1655,8 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>Tábuas Madeira Selva</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>Placas de Madeira (qualquer)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>Rebento</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>Carvalho Jovem</value>
@@ -1606,7 +1771,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_TILE_STONESLAB_WOOD"><value>Placa Madeira Carvalho</value>
</data>
-<data name="IDS_TILE_STONESLAB_COBBLE"><value>Placa de Cobblestone</value>
+<data name="IDS_TILE_STONESLAB_COBBLE"><value>Placa Pedra Arredond.</value>
</data>
<data name="IDS_TILE_STONESLAB_BRICK"><value>Placa de Tijolo</value>
</data>
@@ -1828,6 +1993,190 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_TILE_SKULL"><value>Caveira</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>Bloco de Ordens</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>Farol</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>Baú Preso</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>Placa Pressão Pond. (Leve)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>Placa Press. Pond. (Pesada)</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>Comparador de Redstone</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>Sensor de Luz do Dia</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>Bloco de Redstone</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>Funil</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>Carril Ativador</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>Soltador</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>Barro Manchado</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>Fardo de Palha</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>Barro Endurecido</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>Bloco de Carvão</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>Barro Manchado Preto</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>Barro Manchado Vermelho</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>Barro Manchado Verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>Barro Manchado Castanho</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>Barro Manchado Azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>Barro Manchado Roxo</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>Barro Manchado Azul Ciano</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>Barro Manch. Cinz. Claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>Barro Manchado Cinzento</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>Barro Manchado Rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>Barro Manchado Lima</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>Barro Manchado Amarelo</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>Barro Manch. Azul Claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>Barro Manchado Magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>Barro Manchado Laranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>Barro Manchado Branco</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>Vidro Manchado</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>Vidro Manchado Preto</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>Vidro Manchado Vermelho</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>Vidro Manchado Verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>Vidro Manchado Castanho</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>Vidro Manchado Azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>Vidro Manchado Roxo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>Vidro Manchado Azul Ciano</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>Vidro Manchado Cinzento Claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>Vidro Manchado Cinzento</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>Vidro Manchado Rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>Vidro Manchado Lima</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>Vidro Manchado Amarelo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>Vidro Manchado Azul Claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>Vidro Manchado Magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>Vidro Manchado Laranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>Vidro Manchado Branco</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>Painel de Vidro Manchado</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>Painel de Vidro Manchado Preto</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>Painel de Vidro Manchado Vermelho</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>Painel de Vidro Manchado Verde</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>Painel de Vidro Manchado Castanho</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>Painel de Vidro Manchado Azul</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>Painel de Vidro Manchado Roxo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>Painel de Vidro Manchado Azul Ciano</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>Painel de Vidro Manchado Cinzento Claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>Painel de Vidro Manchado Cinzento</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>Painel de Vidro Manchado Rosa</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>Painel de Vidro Manchado Lima</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>Painel de Vidro Manchado Amarelo</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>Painel de Vidro Manchado Azul Claro</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>Painel de Vidro Manchado Magenta</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>Painel de Vidro Manchado Laranja</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>Painel de Vidro Manchado Branco</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>Bola Pequena</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>Bola Grande</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>Forma de Estrela</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Forma de Creeper</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>Explosão</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>Forma Desconhecida</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>Preto</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>Vermelho</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>Verde</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>Castanho</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>Azul</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>Roxo</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>Azul Ciano</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>Cinzento Claro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>Cinzento</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>Rosa</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>Lima</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>Amarelo</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>Azul Claro</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>Magenta</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>Laranja</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>Branco</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>Personalizado</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>Desaparecimento</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>Cintilância</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>Rasto</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>Duração do Voo:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>Controlos Atuais</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>Esquema</value>
@@ -2005,8 +2354,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
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.
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
Prime{*CONTROLLER_VK_A*} para continuar.{*B*}
Prime{*CONTROLLER_VK_B*} se já sabes utilizar o inventário.
@@ -2027,7 +2375,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- Se quiseres saber mais sobre um determinado objeto, coloca o ponteiro sobre o objeto e prime{*CONTROLLER_VK_RT*}.
+ Se quiseres saber mais sobre um determinado objeto, coloca o ponteiro sobre o objeto e prime{*CONTROLLER_ACTION_MENU_PAGEDOWN*}.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2061,7 +2409,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- Se quiseres saber mais sobre um determinado objeto, coloca o ponteiro sobre o objeto e prime{*CONTROLLER_VK_RT*}.
+ Se quiseres saber mais sobre um determinado objeto, coloca o ponteiro sobre o objeto e prime{*CONTROLLER_ACTION_MENU_PAGEDOWN*}.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2425,7 +2773,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</value>
</data>
<data name="IDS_TUTORIAL_TASK_TRY_IT"><value>
- 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.
+ 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. Há mais exemplos fora da área do tutorial.
</value>
</data>
<data name="IDS_TUTORIAL_PORTAL_OVERVIEW"><value>
@@ -2443,7 +2791,7 @@ A tinta pode também ser feita combinando tinta cinza com farinha de ossos, perm
</value>
</data>
<data name="IDS_TUTORIAL_TASK_ACTIVATE_PORTAL"><value>
- 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 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 através dos blocos.
</value>
</data>
<data name="IDS_TUTORIAL_TASK_USE_PORTAL"><value>
@@ -2608,6 +2956,211 @@ No modo de voo, podes manter premido{*CONTROLLER_ACTION_JUMP*} para subires e{*C
Prime{*CONTROLLER_VK_B*} se já souberes tudo sobre a barra de comida e a alimentação.
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ Esta é a interface de inventário do cavalo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}Prime {*CONTROLLER_VK_A*} para continuar.
+ {*B*}Prime {*CONTROLLER_VK_B*} se já souberes como usar o inventário do cavalo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ O inventário do cavalo permite-te equipar ou transferir objetos para o teu Cavalo, Burro ou Mula.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ Sela o teu Cavalo colocando-lhe uma Sela na ranhura para selas. Os Cavalos podem receber uma Armadura de Cavalo na ranhura para armaduras.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ Neste menu também podes transferir objetos entre o teu inventário e os alforjes presos aos Burros e Mulas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>Encontraste um Cavalo.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>Encontraste um Burro.</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>Encontraste uma Mula.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}Prime {*CONTROLLER_VK_A*} para saber mais sobre Cavalos, Burros e Mulas.
+ {*B*}Prime {*CONTROLLER_VK_B*} se já souberes o que precisas sobre Cavalos, Burros e Mulas.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ Os Cavalos e os Burros estão sobretudo nas planícies. As Mulas podem ser criadas cruzando um Burro com um Cavalo, mas são inférteis.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ Todos os Cavalos, Burros e Mulas adultos podem ser montados. Porém, só os Cavalos podem receber uma armadura, e só as Mulas e os Burros podem ser equipados com alforjes para transportar objetos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ Os Cavalos, os Burros e as Mulas têm de ser domesticados antes de poderem ser usados. Para domesticar um cavalo é preciso tentar montá-lo e conseguir permanecer em cima dele enquanto ele tenta sacudir o jogador para o chão.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ Quando ficam domesticados, surgem Corações de Amor à volta deles e deixam de tentar sacudir o jogador.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ Experimenta montar este cavalo agora. Usa {*CONTROLLER_ACTION_USE*} sem objetos ou ferramentas na mão para montá-lo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ Para guiar um cavalo, tens de equipá-lo com uma sela, que podes comprar aos aldeões ou encontrar dentro de baús escondidos no mundo.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ Burros e Mulas domesticados podem receber alforjes se lhes prenderes um baú. Podes aceder aos alforjes enquanto montas ou quando te aproximas furtivamente do animal.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ Os Cavalos e os Burros (as Mulas não) podem ser procriados como os outros animais, usando Maçãs Douradas ou Cenouras Douradas. Os potros tornam-se cavalos adultos ao fim de algum tempo, mas podes acelerar o processo alimentando-os com trigo ou feno.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ Podes tentar domesticar Cavalos e Burros aqui, e nos baús que por aqui andam também encontrarás Selas, Armaduras de Cavalo e outros objetos úteis para Cavalos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ Esta é a interface do Farol, que podes usar para escolher os poderes que o teu Farol concede.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}Prime {*CONTROLLER_VK_A*} para continuar.
+ {*B*}Prime {*CONTROLLER_VK_B*} se já sabes como usar a interface do Farol.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ No menu do Farol podes selecionar 1 poder principal para o teu Farol. Quanto mais camadas tiver a tua pirâmide, mais poderes terás à escolha.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ Um Farol numa pirâmide com pelo menos 4 camadas permite-te escolher entre o poder secundário de Regeneração ou um poder principal mais forte.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ Para definir os poderes do teu Farol tens de sacrificar uma Esmeralda, um Diamante, Lingotes de Ferro ou Ouro na ranhura de pagamento. Uma vez definidos, os poderes irão emanar indefinidamente do Farol.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>No topo desta pirâmide há um Farol inativo.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}Prime {*CONTROLLER_VK_A*} para saber mais sobre Faróis.
+ {*B*}Prime {*CONTROLLER_VK_B*} se já sabes o que precisas sobre Faróis.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ Os Faróis Ativos projetam um feixe de luz brilhante para o céu e atribuem poderes a jogadores próximos. São feitos com Vidro, Obsidiana e Estrelas do Submundo, que podem ser obtidas derrotando o Cérbero.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ Os Faróis têm de ser colocados de modo a captar a luz solar durante o dia. Os Faróis têm de ser colocados sobre Pirâmides de Ferro, Ouro, Esmeralda ou Diamante. Porém, o tipo de material não tem qualquer efeito na potência do farol.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ Experimenta usar o Farol para definir os poderes que ele concede. Podes usar os Lingotes de Ferro disponibilizados como forma de pagamento.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>Esta divisão contém Funis.</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}Prime {*CONTROLLER_VK_A*} para saber mais sobre Funis.
+ {*B*}Prime {*CONTROLLER_VK_B*} se já sabes o que precisas sobre Funis.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ Os Funis são usados para inserir ou remover objetos de contentores, e para recolher automaticamente os objetos que são atirados neles.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ Eles podem afetar Postos de Poções, Baús, Distribuidores, Soltadores, Vagonetas com Baús, Vagonetas com Funis, bem como outros Funis.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ Os Funis vão tentar sempre sugar objetos dos contentores adequados acima deles. Também vão tentar inserir objetos armazenados num contentor de destino.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ Porém, se um Funil for alimentado por Redstone tornar-se-á inativo e parará de sugar e de inserir objetos.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ Um Funil aponta na direção em que tenta colocar objetos. Para levar um Funil a apontar para um determinado bloco, coloca-o frente a esse bloco enquanto andas furtivamente.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ Há vários modelos de Funil para veres e experimentares nesta divisão.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ Esta é a interface do Fogo de Artifício, que podes usar para criar Fogo de Artifício e Estrelas de Fogo de Artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}Prime {*CONTROLLER_VK_A*} para continuar.
+ {*B*}Prime {*CONTROLLER_VK_B*} se já sabes como usar a interface do Farol.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ Para criar um Fogo de Artifício, coloca Pólvora e Papel na grelha de 3x3 que é apresentada acima do teu inventário.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ Opcionalmente, podes colocar várias Estrelas de Fogo de Artifício na grelha e adicioná-las ao Fogo de Artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ Preencher mais ranhuras na grelha com Pólvora aumentará a altura a que todas as Estrelas de Fogo de Artifício vão explodir.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ Podes então retirar o Fogo de Artifício criado da ranhura de saída.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ As Estrelas de Fogo de Artifício podem ser criadas colocando Pólvora e Tinta na grelha.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ A tinta definirá a cor da explosão da Estrela de Fogo de Artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ A forma da Estrela de Fogo de Artifício é definida adicionando um destes elementos: Carga de Fogo, Pepita de Ouro, Pena ou Cabeça de Criatura.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ Podes adicionar um rasto ou uma cintilância usando Diamantes ou Pó de Glowstone.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ Depois de criares uma Estrela de Fogo de Artifício, podes definir a cor de desaparecimento da Estrela de Fogo de Artifício criando-a com Tinta.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ Dentro dos baús há vários objetos que podem ser usados na criação de FOGO DE ARTIFÃCIO!
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}Prime{*CONTROLLER_VK_A*} para saber mais sobre Fogo de Artifício.
+ {*B*}Prime{*CONTROLLER_VK_B*} se já sabes o que queres sobre Fogo de Artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ O Fogo de Artifício é um objeto decorativo que pode ser lançado à mão ou a partir de Distribuidores. É feito usando Papel, Pólvora e, opcionalmente, uma série de Estrelas de Fogo de Artifício.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ As cores, o desaparecimento, a forma, a dimensão e os efeitos (como rastos e cintilâncias) das Estrelas de Fogo de Artifício podem ser personalizados através da inclusão de ingredientes extra aquando da criação.
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ Experimenta criar um Fogo de Artifício na Mesa de Criação usando um sortido de ingredientes dos baús.
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>Selecionar</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>Usar</value>
@@ -2646,25 +3199,25 @@ No modo de voo, podes manter premido{*CONTROLLER_ACTION_JUMP*} para subires e{*C
</data>
<data name="IDS_TOOLTIPS_PICKUP_GENERIC"><value>Retirar</value>
</data>
-<data name="IDS_TOOLTIPS_PICKUP_ALL"><value>Retirar tudo</value>
+<data name="IDS_TOOLTIPS_PICKUP_ALL"><value>Retirar Tudo</value>
</data>
-<data name="IDS_TOOLTIPS_PICKUP_HALF"><value>Retirar metade</value>
+<data name="IDS_TOOLTIPS_PICKUP_HALF"><value>Retirar Metade</value>
</data>
<data name="IDS_TOOLTIPS_PLACE_GENERIC"><value>Colocar</value>
</data>
-<data name="IDS_TOOLTIPS_PLACE_ALL"><value>Colocar tudo</value>
+<data name="IDS_TOOLTIPS_PLACE_ALL"><value>Colocar Tudo</value>
</data>
-<data name="IDS_TOOLTIPS_PLACE_ONE"><value>Colocar um</value>
+<data name="IDS_TOOLTIPS_PLACE_ONE"><value>Colocar Um</value>
</data>
<data name="IDS_TOOLTIPS_DROP_GENERIC"><value>Largar</value>
</data>
-<data name="IDS_TOOLTIPS_DROP_ALL"><value>Largar tudo</value>
+<data name="IDS_TOOLTIPS_DROP_ALL"><value>Largar Tudo</value>
</data>
-<data name="IDS_TOOLTIPS_DROP_ONE"><value>Largar um</value>
+<data name="IDS_TOOLTIPS_DROP_ONE"><value>Largar Um</value>
</data>
<data name="IDS_TOOLTIPS_SWAP"><value>Trocar</value>
</data>
-<data name="IDS_TOOLTIPS_QUICK_MOVE"><value>Mover rápido</value>
+<data name="IDS_TOOLTIPS_QUICK_MOVE"><value>Mover Rápido</value>
</data>
<data name="IDS_TOOLTIPS_CLEAR_QUICK_SELECT"><value>Limpar Seleção Rápida</value>
</data>
@@ -2830,6 +3383,22 @@ No modo de voo, podes manter premido{*CONTROLLER_ACTION_JUMP*} para subires e{*C
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>Carregar Gravação para Xbox One</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>Montar</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>Desmontar</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>Prender Baú</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>Lançar</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>Atrelar</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>Soltar</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>Prender</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>Nomear</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>OK</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>Cancelar</value>
@@ -2842,7 +3411,7 @@ No modo de voo, podes manter premido{*CONTROLLER_ACTION_JUMP*} para subires e{*C
</data>
<data name="IDS_TITLE_SAVE_GAME"><value>Guardar Jogo</value>
</data>
-<data name="IDS_TITLE_DECLINE_SAVE_GAME"><value>Sair sem guardar</value>
+<data name="IDS_TITLE_DECLINE_SAVE_GAME"><value>Sair Sem Guardar</value>
</data>
<data name="IDS_CONFIRM_SAVE_GAME"><value>Tens a certeza de que queres substituir os jogos guardados anteriormente pela versão atual deste mundo?</value>
</data>
@@ -3058,7 +3627,7 @@ Queres desbloquear o jogo completo?</value>
</data>
<data name="IDS_GROUPNAME_MISCELLANEOUS"><value>Vários</value>
</data>
-<data name="IDS_GROUPNAME_POTIONS"><value>Preparação de Poções</value>
+<data name="IDS_GROUPNAME_POTIONS"><value>Poções</value>
</data>
<data name="IDS_GROUPNAME_POTIONS_480"><value>Poções</value>
</data>
@@ -3140,6 +3709,20 @@ Queres desbloquear o jogo completo?</value>
</data>
<data name="IDS_DISPENSER"><value>Distribuidor</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>Cavalo</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>Soltador</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>Funil</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>Farol</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>Poder Principal</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>Poder Secundário</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>Vagoneta</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>De momento, não existem ofertas de conteúdo transferível deste tipo disponíveis para este título.</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s juntou-se ao jogo.</value>
@@ -3203,7 +3786,7 @@ Queres desbloquear o jogo completo?</value>
<data name="IDS_PLAYER_BANNED_LEVEL"><value>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.</value>
</data>
-<data name="IDS_ACTION_BAN_LEVEL_TITLE"><value>Excluir este nível?</value>
+<data name="IDS_ACTION_BAN_LEVEL_TITLE"><value>Excluir Este Nível?</value>
</data>
<data name="IDS_ACTION_BAN_LEVEL_DESCRIPTION"><value>Tens a certeza de que queres adicionar este nível à lista de níveis excluídos?
Se selecionares OK, irás sair do jogo.</value>
@@ -3225,7 +3808,7 @@ Não desligues a consola Xbox 360 enquanto este ícone estiver visível.</value
</data>
<data name="IDS_SLIDER_INTERFACEOPACITY"><value>Opacidade da Interface</value>
</data>
-<data name="IDS_PROGRESS_AUTOSAVING_LEVEL"><value>A preparar gravação automática do nível</value>
+<data name="IDS_PROGRESS_AUTOSAVING_LEVEL"><value>A Preparar Gravação Automática do Nível</value>
</data>
<data name="IDS_SLIDER_UISIZE"><value>Tamanho HUD</value>
</data>
@@ -3299,10 +3882,14 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>Modo Criativo</value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>Modo de Jogo: Aventura</value>
+ </data>
<data name="IDS_SURVIVAL"><value>Sobrevivência</value>
</data>
<data name="IDS_CREATIVE"><value>Criativo</value>
</data>
+<data name="IDS_ADVENTURE"><value>Aventura</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>Criado em Sobrevivência</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>Criado em Criativo</value>
@@ -3323,6 +3910,8 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>Superplano</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>Introduz uma semente para gerar novamente o mesmo terreno. Deixa em branco para um mundo aleatório.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>Quando ativado, o jogo ficará online.</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>Quando ativado, só os jogadores convidados podem aderir.</value>
@@ -3347,6 +3936,20 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>Quanto ativada, é criado um baú com objetos úteis junto ao ponto de regeneração do jogador.</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>Quando desativada, impede que monstros e animais mudem blocos (por exemplo, explosões de Creeper não destroem blocos e as Ovelhas não comem Erva) ou apanhem objetos.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>Quando ativado, os jogadores mantêm o inventário quando morrem.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>Quando desativada, as criaturas não se reproduzem naturalmente.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>Quando desativado, os monstros e animais não deixam cair saques (por exemplo, os Creepers não largam pólvora).</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>Quando desativada, os blocos não largam objetos quando são destruídos (por exemplo, os blocos de Pedra não deixam cair Pedra Arredondada).</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>Quando desativada, os jogadores não regeneram naturalmente a sua saúde.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>Quando desativado, a hora do dia não muda.</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>Pacotes de Skins</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>Temas</value>
@@ -3395,7 +3998,49 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} foi agredido por {*SOURCE*}</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} foi morto por {*SOURCE*}</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} foi morto por {*SOURCE*} usando magia</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} caiu de uma escada</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} caiu de umas videiras</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} caiu fora da água</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} caiu de um local elevado</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*PLAYER*} foi condenado a cair por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*PLAYER*} foi condenado a cair por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*PLAYER*} foi condenado a cair por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>{*PLAYER*} caiu demasiado longe e foi liquidado por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>{*PLAYER*} caiu demasiado longe e foi liquidado por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} entrou no fogo enquanto combatia {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} ficou esturricado enquanto combatia {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} tentou nadar em lava para fugir de {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} afogou-se enquanto tentava fugir de {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} foi de encontro a um cato enquanto tentava fugir de {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*PLAYER*} foi rebentado por {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} feneceu</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*PLAYER*} foi assassinado por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*PLAYER*} foi alvejado por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*PLAYER*} foi atingido por uma bola de fogo por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*PLAYER*} foi esmagado por {*SOURCE*} usando {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} foi morto por {*SOURCE*} usando {*ITEM*}</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>Rochas Enevoadas</value>
</data>
@@ -3427,9 +4072,9 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_PRIV_USE_CONTAINERS_TOGGLE_OFF"><value>Já não podes usar contentores (tais como baús)</value>
</data>
-<data name="IDS_PRIV_ATTACK_MOB_TOGGLE_ON"><value>Já não podes atacar habitantes</value>
+<data name="IDS_PRIV_ATTACK_MOB_TOGGLE_ON"><value>Já não podes atacar criaturas</value>
</data>
-<data name="IDS_PRIV_ATTACK_MOB_TOGGLE_OFF"><value>Já podes atacar habitantes</value>
+<data name="IDS_PRIV_ATTACK_MOB_TOGGLE_OFF"><value>Já podes atacar criaturas</value>
</data>
<data name="IDS_PRIV_ATTACK_PLAYER_TOGGLE_ON"><value>Já não podes atacar jogadores</value>
</data>
@@ -3560,9 +4205,9 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_DONT_RESET_NETHER"><value>Não Repor Submundo</value>
</data>
-<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>De momento, não é possível tosquiar este Vacogumelo. Foi alcançado o número máximo de Porcos, Ovelhas, Vacas e Gatos.</value>
+<data name="IDS_CANT_SHEAR_MOOSHROOM"><value>De momento, não é possível tosquiar este Vacogumelo. Foi alcançado o número máximo de Porcos, Ovelhas, Vacas, Gatos e Cavalos.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>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.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED"><value>De momento, não é possível usar o Ovo de Geração. O número máximo de Porcos, Ovelhas, Vacas, Gatos e Cavalos foi alcançado.</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED"><value>De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de Vacogumelos.</value>
</data>
@@ -3572,6 +4217,8 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de Lulas num mundo.</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>De momento, não é possível usar Ovo de Geração. Foi alcançado o número máximo de Morcegos num mundo.</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de inimigos num mundo.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>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.</value>
@@ -3580,17 +4227,19 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL"><value>Não podes produzir inimigos no modo Calmo.</value>
</data>
-<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>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.</value>
+<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED"><value>Este animal não pode entrar no Modo Amor. O número máximo de Porcos, Ovelhas, Vacas, Gatos e Cavalos de criação foi alcançado.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED"><value>Este animal não pode entrar no Modo Amor. Foi alcançado o número máximo de Lobos de criação.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>Este animal não pode entrar no Modo Amor. Foi alcançado o número máximo de Galinhas de criação.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>Este animal não pode entrar no Modo Amor. Foi alcançado o número máximo de cavalos de criação.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>Este animal não pode entrar no Modo Amor. Foi alcançado o número máximo de Vacogumelos de criação.</value>
</data>
<data name="IDS_MAX_BOATS"><value>Foi alcançado o número máximo de Barcos num mundo.</value>
</data>
-<data name="IDS_MAX_SKULL_TILES"><value>O número máximo de Cabeças de Mob num mundo foi alcançado.</value>
+<data name="IDS_MAX_SKULL_TILES"><value>O número máximo de Cabeças de Criatura num mundo foi alcançado.</value>
</data>
<data name="IDS_INVERT_LOOK"><value>Inverter</value>
</data>
@@ -3600,7 +4249,7 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_RESPAWN"><value>Regenerar</value>
</data>
-<data name="IDS_DOWNLOADABLE_CONTENT_OFFERS"><value>Conteúdo transferível</value>
+<data name="IDS_DOWNLOADABLE_CONTENT_OFFERS"><value>Conteúdo Transferível</value>
</data>
<data name="IDS_CHANGE_SKIN"><value>Alterar Skin</value>
</data>
@@ -3613,27 +4262,43 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
<data name="IDS_CREDITS"><value>Ficha técnica</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>Reinstalar Conteúdo</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>Definições de Depuração</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>Fogos Propagados</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>Explosões de TNT</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>Jogador vs. Jogador</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>Confiar nos Jogadores</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>Privilégios de Anfitrião</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>Gerar Estruturas</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>Mundo Superplano</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>Baú de Bónus</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>Opções de Mundo</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>Opções de Jogo</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>Perturbação de Criaturas</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>Manter Inventário</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>Geração de Criaturas</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>Saques de Criaturas</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>Queda de Peças</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>Regeneração Natural</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>Ciclo da Luz do Dia</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>Pode Construir e Escavar</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>Pode Usar Portas e Interruptores</value>
@@ -3672,7 +4337,7 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_CREATE_NEW_WORLD_SEED"><value>Semente para o Gerador de Mundos</value>
</data>
-<data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED"><value>Deixar livre para uma semente aleatória</value>
+<data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED"><value>Deixar livre p/ semente aleatória</value>
</data>
<data name="IDS_PLAYERS"><value>Jogadores</value>
</data>
@@ -3820,6 +4485,14 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_POTION_POISON"><value>Veneno</value>
</data>
+<data name="IDS_POTION_WITHER"><value>Cérbero</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>Aumento de Saúde</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>Absorção</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>Saturação</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>de Velocidade</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>de Lentidão</value>
@@ -3858,6 +4531,14 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>de Veneno</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>de Decadência</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>de Aumento de Saúde</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>de Absorção</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>de Saturação</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>II</value>
@@ -3954,6 +4635,22 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_POTION_DESC_POISON"><value>Reduz a saúde dos jogadores, animais e monstros afetados ao longo do tempo.</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>Quando se Aplica:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>Força de Salto de Cavalo</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>Reforços Mortos-vivos</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>Saúde Máx.</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>Alcance de Seguimento das Criaturas</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>Resistência a Ataques</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>Velocidade</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>Danos de Ataque</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>Precisão</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>Golpear</value>
@@ -4044,7 +4741,7 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>Restitui 3{*ICON_SHANK_01*}. Cria-se cozendo uma batata numa fornalha.</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>Restitui 1{*ICON_SHANK_01*} ou pode ser cozida numa fornalha. Pode ser plantada na terra. Se comeres isto podes ficar doente.</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>Restitui 1{*ICON_SHANK_01*}. Se comeres isto podes ficar envenenado.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>Restitui 3{*ICON_SHANK_01*}. Fabricada a partir de uma cenoura e de pepitas de ouro.</value>
</data>
@@ -4112,7 +4809,7 @@ Queres instalar o pacote de mistura ou pacote de texturas agora?</value>
</data>
<data name="IDS_TILE_QUARTZ_BLOCK"><value>Bloco de Quartzo</value>
</data>
-<data name="IDS_TILE_QUARTZ_BLOCK_CHISELED"><value>Bloco de Quartzo Esculpido</value>
+<data name="IDS_TILE_QUARTZ_BLOCK_CHISELED"><value>Bloc. Quartzo Esculpido</value>
</data>
<data name="IDS_TILE_QUARTZ_BLOCK_LINES"><value>Bloco Pilar de Quartzo</value>
</data>
@@ -4442,11 +5139,11 @@ Todos os Baús Ender de um mundo estão ligados. Os objetos colocados num Baú E
</data>
<data name="IDS_PLATFORM_NAME"><value>Xbox 360</value>
</data>
-<data name="IDS_BACK_BUTTON"><value>BACK</value>
+<data name="IDS_BACK_BUTTON"><value>Anterior</value>
</data>
<data name="IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS"><value>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.</value>
</data>
-<data name="IDS_SAVE_TRANSFER_TITLE"><value>Carregar Gravação para Xbox One</value>
+<data name="IDS_SAVE_TRANSFER_TITLE"><value>Carregar Grav. Xbox One</value>
</data>
<data name="IDS_UPLOAD_SAVE"><value>Carregar Gravação</value>
</data>
diff --git a/Minecraft.Client/Common/Media/skin.swf b/Minecraft.Client/Common/Media/skin.swf
index c4660d59..6206ca47 100644
--- a/Minecraft.Client/Common/Media/skin.swf
+++ b/Minecraft.Client/Common/Media/skin.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinGraphics.swf b/Minecraft.Client/Common/Media/skinGraphics.swf
index 8438f11d..f0482ec7 100644
--- a/Minecraft.Client/Common/Media/skinGraphics.swf
+++ b/Minecraft.Client/Common/Media/skinGraphics.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinGraphicsHud.swf b/Minecraft.Client/Common/Media/skinGraphicsHud.swf
index 55123e69..7f75f423 100644
--- a/Minecraft.Client/Common/Media/skinGraphicsHud.swf
+++ b/Minecraft.Client/Common/Media/skinGraphicsHud.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinGraphicsInGame.swf b/Minecraft.Client/Common/Media/skinGraphicsInGame.swf
index 6612beaf..639f5bda 100644
--- a/Minecraft.Client/Common/Media/skinGraphicsInGame.swf
+++ b/Minecraft.Client/Common/Media/skinGraphicsInGame.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHD.swf b/Minecraft.Client/Common/Media/skinHD.swf
index c80fa406..12d35caf 100644
--- a/Minecraft.Client/Common/Media/skinHD.swf
+++ b/Minecraft.Client/Common/Media/skinHD.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHDGraphics.swf b/Minecraft.Client/Common/Media/skinHDGraphics.swf
index 27e3798a..7ba08bc8 100644
--- a/Minecraft.Client/Common/Media/skinHDGraphics.swf
+++ b/Minecraft.Client/Common/Media/skinHDGraphics.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHDGraphicsHud.swf b/Minecraft.Client/Common/Media/skinHDGraphicsHud.swf
index 2c467474..bb51379e 100644
--- a/Minecraft.Client/Common/Media/skinHDGraphicsHud.swf
+++ b/Minecraft.Client/Common/Media/skinHDGraphicsHud.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHDGraphicsInGame.swf b/Minecraft.Client/Common/Media/skinHDGraphicsInGame.swf
index 7a39b099..d014d317 100644
--- a/Minecraft.Client/Common/Media/skinHDGraphicsInGame.swf
+++ b/Minecraft.Client/Common/Media/skinHDGraphicsInGame.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHDHud.swf b/Minecraft.Client/Common/Media/skinHDHud.swf
index fcdbe396..0e2a9ef2 100644
--- a/Minecraft.Client/Common/Media/skinHDHud.swf
+++ b/Minecraft.Client/Common/Media/skinHDHud.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHDInGame.swf b/Minecraft.Client/Common/Media/skinHDInGame.swf
index cfc91228..b9aaa068 100644
--- a/Minecraft.Client/Common/Media/skinHDInGame.swf
+++ b/Minecraft.Client/Common/Media/skinHDInGame.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHDLabels.swf b/Minecraft.Client/Common/Media/skinHDLabels.swf
index 5ed2b349..dd80d1e7 100644
--- a/Minecraft.Client/Common/Media/skinHDLabels.swf
+++ b/Minecraft.Client/Common/Media/skinHDLabels.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinHud.swf b/Minecraft.Client/Common/Media/skinHud.swf
index c98bf708..31b3ff00 100644
--- a/Minecraft.Client/Common/Media/skinHud.swf
+++ b/Minecraft.Client/Common/Media/skinHud.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinInGame.swf b/Minecraft.Client/Common/Media/skinInGame.swf
index bee85d33..fd3147b6 100644
--- a/Minecraft.Client/Common/Media/skinInGame.swf
+++ b/Minecraft.Client/Common/Media/skinInGame.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skinLabels.swf b/Minecraft.Client/Common/Media/skinLabels.swf
index 04a41d33..e562acbe 100644
--- a/Minecraft.Client/Common/Media/skinLabels.swf
+++ b/Minecraft.Client/Common/Media/skinLabels.swf
Binary files differ
diff --git a/Minecraft.Client/Common/Media/skin_Minecraft.xui b/Minecraft.Client/Common/Media/skin_Minecraft.xui
index 5d4517d2..da03a9ab 100644
--- a/Minecraft.Client/Common/Media/skin_Minecraft.xui
+++ b/Minecraft.Client/Common/Media/skin_Minecraft.xui
@@ -2,7 +2,7 @@
<Properties>
<Width>1280.000000</Width>
<Height>720.000000</Height>
-<DesignTimeData>[LayerFolders]5|+How To Play|34|+|0|+ControllerIcons|3|+|0|+Creative Inventory|8|+|0|+Crafting Scene|16|+|0|+Scenes, Panels,etc|14|+|0|+Main Menu|4|+|0|+DLC|4|+|0|+Skin Select Scene|15|+|0|+HTML|4|+|0|+HUD|18|+|0|+Inventory Containers Special|34|+|0|+Inventory Containers Shared|22|+|0|+Lists|0|+Leaderboard|4|+|0|+Players|6|+|25|+|0|+Tooltips|20|+|0|+Credits|8|+|0|-Labels and Text|53|+|0|-Other|11|+|0|+ImagePresenters|2|+|0|-Default Controls|18|+|0[/LayerFolders]</DesignTimeData>
+<DesignTimeData>[LayerFolders]7|+How To Play|44|+|0|+ControllerIcons|3|+|0|+Creative Inventory|8|+|0|+Crafting Scene|16|+|0|+Scenes, Panels,etc|14|+|0|+Main Menu|4|+|0|+DLC|4|+|0|+Skin Select Scene|15|+|0|+HTML|4|+|0|+HUD|19|+|0|-Inventory Containers Special|41|+|0|+Inventory Containers Shared|24|+|0|+Lists|0|+Leaderboard|4|+|0|+Players|6|+|25|+|0|+Tooltips|22|+|0|+Credits|8|+|0|-Labels and Text|53|+|0|+Other|11|+|0|+ImagePresenters|2|+|0|+Default Controls|18|+|0[/LayerFolders]</DesignTimeData>
</Properties>
<XuiVisual>
<Properties>
@@ -12951,6 +12951,406 @@
</XuiVisual>
<XuiVisual>
<Properties>
+<Id>RStick_Button</Id>
+<Width>350.000000</Width>
+<Height>36.000000</Height>
+</Properties>
+<XuiTextPresenter>
+<Properties>
+<Id>text_ButtonText</Id>
+<Width>300.000000</Width>
+<Height>36.000000</Height>
+<Position>61.000000,0.000000,0.000000</Position>
+<Anchor>1</Anchor>
+<TextColor>0xffffffff</TextColor>
+<DropShadowColor>0xff000000</DropShadowColor>
+<PointSize>16.000000</PointSize>
+<TextStyle>20497</TextStyle>
+</Properties>
+</XuiTextPresenter>
+<XuiImage>
+<Properties>
+<Id>rs_graphic</Id>
+<Width>58.000000</Width>
+<Height>48.000000</Height>
+<Position>0.000000,-5.000000,0.000000</Position>
+<Opacity>0.800000</Opacity>
+<SizeMode>16</SizeMode>
+<ImagePath>Graphics\X360ControllerIcons\ButtonRS_TT.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusLoop</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>80</Time>
+<Command>gotoandplay</Command>
+<CommandParams>FocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalDisable</Name>
+<Time>81</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalDisable</Name>
+<Time>82</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusDisable</Name>
+<Time>83</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocusDisable</Name>
+<Time>84</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Press</Name>
+<Time>85</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndPress</Name>
+<Time>102</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>InitFocus</Name>
+<Time>103</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>InitFocusLoop</Name>
+<Time>121</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndInitFocus</Name>
+<Time>181</Time>
+<Command>gotoandplay</Command>
+<CommandParams>InitFocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>InitFocusDisable</Name>
+<Time>182</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndInitFocusDisable</Name>
+<Time>183</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>text_ButtonText</Id>
+<TimelineProp>TextColor</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffffffff</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff606060</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>82</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff606060</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffa0a0a0</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>85</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffffffff</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>rs_graphic</Id>
+<TimelineProp>Opacity</TimelineProp>
+<TimelineProp>Scale</TimelineProp>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.800000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-5.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>1</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-5.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.300000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-5.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.500000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-5.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>85</Time>
+<Interpolation>0</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-5.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>92</Time>
+<Interpolation>0</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>0.900000,0.900000,1.000000</Prop>
+<Prop>1.500000,-0.750000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>102</Time>
+<Interpolation>1</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-5.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>182</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.500000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>RStick_ButtonSmall</Id>
+<Width>350.000000</Width>
+<Height>25.000000</Height>
+</Properties>
+<XuiTextPresenter>
+<Properties>
+<Id>text_ButtonText</Id>
+<Width>300.000000</Width>
+<Height>25.000000</Height>
+<Position>43.000000,0.000000,0.000000</Position>
+<Anchor>1</Anchor>
+<TextColor>0xffffffff</TextColor>
+<DropShadowColor>0xff000000</DropShadowColor>
+<PointSize>11.000000</PointSize>
+<TextStyle>20497</TextStyle>
+</Properties>
+</XuiTextPresenter>
+<XuiImage>
+<Properties>
+<Id>rb_graphic</Id>
+<Width>40.000000</Width>
+<Height>34.000000</Height>
+<Position>0.000000,-3.000000,0.000000</Position>
+<Opacity>0.800000</Opacity>
+<SizeMode>16</SizeMode>
+<ImagePath>Graphics\X360ControllerIcons\ButtonRS_TT.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusLoop</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>80</Time>
+<Command>gotoandplay</Command>
+<CommandParams>FocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalDisable</Name>
+<Time>81</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalDisable</Name>
+<Time>82</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusDisable</Name>
+<Time>83</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocusDisable</Name>
+<Time>84</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Press</Name>
+<Time>85</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndPress</Name>
+<Time>102</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>InitFocus</Name>
+<Time>103</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>InitFocusLoop</Name>
+<Time>121</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndInitFocus</Name>
+<Time>181</Time>
+<Command>gotoandplay</Command>
+<CommandParams>InitFocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>InitFocusDisable</Name>
+<Time>182</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndInitFocusDisable</Name>
+<Time>183</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>text_ButtonText</Id>
+<TimelineProp>TextColor</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffffffff</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff606060</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>82</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff606060</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffa0a0a0</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>85</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffffffff</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>rb_graphic</Id>
+<TimelineProp>Opacity</TimelineProp>
+<TimelineProp>Scale</TimelineProp>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.800000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>1</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.300000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.500000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>85</Time>
+<Interpolation>0</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>92</Time>
+<Interpolation>0</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>0.900000,0.900000,1.000000</Prop>
+<Prop>1.500000,1.250000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>102</Time>
+<Interpolation>1</Interpolation>
+<Prop>1.000000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>182</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.500000</Prop>
+<Prop>1.000000,1.000000,1.000000</Prop>
+<Prop>0.000000,-3.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
<Id>XuiListTexturePackButtonSmall</Id>
<Width>40.000000</Width>
<Height>40.000000</Height>
@@ -29314,6 +29714,177 @@
</XuiVisual>
<XuiVisual>
<Properties>
+<Id>ItemIconBlankSmall</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+</Properties>
+<XuiLabel>
+<Properties>
+<Id>image</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Anchor>15</Anchor>
+<ClassOverride>CXuiCtrlMinecraftSlot</ClassOverride>
+<Visual>XuiVisualImagePresenter</Visual>
+</Properties>
+</XuiLabel>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusLoop</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>80</Time>
+<Command>gotoandplay</Command>
+<CommandParams>FocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalDisable</Name>
+<Time>81</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalDisable</Name>
+<Time>82</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusDisable</Name>
+<Time>83</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>InactiveFocusLoop</Name>
+<Time>100</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocusDisable</Name>
+<Time>159</Time>
+<Command>gotoandplay</Command>
+<CommandParams>InactiveFocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>Press</Name>
+<Time>160</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndPress</Name>
+<Time>162</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalSel</Name>
+<Time>163</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalSel</Name>
+<Time>188</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ItemIconBlank</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+</Properties>
+<XuiLabel>
+<Properties>
+<Id>image</Id>
+<Width>38.000000</Width>
+<Height>38.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<ClassOverride>CXuiCtrlMinecraftSlot</ClassOverride>
+<Visual>XuiVisualImagePresenter</Visual>
+</Properties>
+</XuiLabel>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusLoop</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>80</Time>
+<Command>gotoandplay</Command>
+<CommandParams>FocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalDisable</Name>
+<Time>81</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalDisable</Name>
+<Time>82</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusDisable</Name>
+<Time>83</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>InactiveFocusLoop</Name>
+<Time>100</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocusDisable</Name>
+<Time>159</Time>
+<Command>gotoandplay</Command>
+<CommandParams>InactiveFocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>Press</Name>
+<Time>160</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndPress</Name>
+<Time>162</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalSel</Name>
+<Time>163</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalSel</Name>
+<Time>188</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
<Id>ItemIcon</Id>
<Width>64.000000</Width>
<Height>64.000000</Height>
@@ -29411,6 +29982,2088 @@
</XuiVisual>
<XuiVisual>
<Properties>
+<Id>BeaconButton</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Anchor>15</Anchor>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Button</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<ImagePath>Graphics\Beacon_Button_Normal.png</ImagePath>
+</Properties>
+</XuiImage>
+<XuiGroup>
+<Properties>
+<Id>Icon</Id>
+<Width>36.000000</Width>
+<Height>36.000000</Height>
+<Position>4.000000,4.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<DisableTimelineRecursion>true</DisableTimelineRecursion>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Icon</Id>
+<Width>36.000000</Width>
+<Height>36.000000</Height>
+<Show>false</Show>
+<SizeMode>16</SizeMode>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Tick</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Cross</Name>
+<Time>2</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Blindness</Name>
+<Time>3</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Fire_Resistance</Name>
+<Time>4</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Haste</Name>
+<Time>5</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Hunger</Name>
+<Time>6</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Invisibility</Name>
+<Time>7</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Jump_Boost</Name>
+<Time>8</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Mining_Fatigue</Name>
+<Time>9</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Nausea</Name>
+<Time>10</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Night_Vision</Name>
+<Time>11</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Poison</Name>
+<Time>12</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Regeneration</Name>
+<Time>13</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Resistance</Name>
+<Time>14</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Slowness</Name>
+<Time>15</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Speed</Name>
+<Time>16</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Strength</Name>
+<Time>17</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Water_Breathing</Name>
+<Time>18</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Weakness</Name>
+<Time>19</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Wither</Name>
+<Time>20</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>HealthBoost</Name>
+<Time>21</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Absorption</Name>
+<Time>22</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Icon</Id>
+<TimelineProp>Show</TimelineProp>
+<TimelineProp>ImagePath</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+<Prop></Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\Beacon_Button_Tick.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop></Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>3</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Blindness.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>4</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Fire_Resistance.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>5</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Haste.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>6</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Hunger.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>7</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Invisibility.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>8</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Jump_Boost.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>9</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Mining_Fatigue.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>10</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Nausea.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>11</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Night_Vision.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>12</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Poison.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>13</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Regeneration.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>14</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Resistance.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>15</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Slowness.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>16</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Speed.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>17</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Strength.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>18</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Water_Breathing.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>19</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Weakness.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Wither.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>21</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>22</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiGroup>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Pressed</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Disabled</Name>
+<Time>2</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Hover</Name>
+<Time>3</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Button</Id>
+<TimelineProp>ImagePath</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Normal.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Pressed.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Disabled.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>3</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Hover.png</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>BeaconButtonSmall</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Anchor>15</Anchor>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Button</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<SizeMode>8</SizeMode>
+<ImagePath>Graphics\Beacon_Button_Normal.png</ImagePath>
+</Properties>
+</XuiImage>
+<XuiGroup>
+<Properties>
+<Id>Icon</Id>
+<Width>18.000000</Width>
+<Height>18.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<DisableTimelineRecursion>true</DisableTimelineRecursion>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Icon</Id>
+<Width>18.000000</Width>
+<Height>18.000000</Height>
+<Show>false</Show>
+<SizeMode>16</SizeMode>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Tick</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Cross</Name>
+<Time>2</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Blindness</Name>
+<Time>3</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Fire_Resistance</Name>
+<Time>4</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Haste</Name>
+<Time>5</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Hunger</Name>
+<Time>6</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Invisibility</Name>
+<Time>7</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Jump_Boost</Name>
+<Time>8</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Mining_Fatigue</Name>
+<Time>9</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Nausea</Name>
+<Time>10</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Night_Vision</Name>
+<Time>11</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Poison</Name>
+<Time>12</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Regeneration</Name>
+<Time>13</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Resistance</Name>
+<Time>14</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Slowness</Name>
+<Time>15</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Speed</Name>
+<Time>16</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Strength</Name>
+<Time>17</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Water_Breathing</Name>
+<Time>18</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Weakness</Name>
+<Time>19</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Wither</Name>
+<Time>20</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>HealthBoost</Name>
+<Time>21</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Absorption</Name>
+<Time>22</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Icon</Id>
+<TimelineProp>Show</TimelineProp>
+<TimelineProp>ImagePath</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+<Prop></Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\Beacon_Button_Tick.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop></Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>3</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Blindness.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>4</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Fire_Resistance.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>5</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Haste.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>6</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Hunger.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>7</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Invisibility.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>8</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Jump_Boost.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>9</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Mining_Fatigue.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>10</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Nausea.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>11</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Night_Vision.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>12</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Poison.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>13</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Regeneration.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>14</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Resistance.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>15</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Slowness.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>16</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Speed.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>17</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Strength.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>18</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Water_Breathing.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>19</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Weakness.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Wither.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>21</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>22</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiGroup>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Pressed</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Disabled</Name>
+<Time>2</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Hover</Name>
+<Time>3</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Button</Id>
+<TimelineProp>ImagePath</TimelineProp>
+<TimelineProp>SizeMode</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Normal.png</Prop>
+<Prop>8</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Pressed.png</Prop>
+<Prop>4</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Disabled.png</Prop>
+<Prop>8</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>3</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\Beacon_Button_Hover.png</Prop>
+<Prop>8</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ItemGridHorseArmor</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseArmor</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>KillFocus</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>21</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>22</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>42</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ItemButtonHorseArmor</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Box</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>15</Anchor>
+<SizeMode>4</SizeMode>
+<ImagePath>Graphics\IconHolder.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiImage>
+<Properties>
+<Id>Icon</Id>
+<Width>38.000000</Width>
+<Height>38.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<SizeMode>16</SizeMode>
+<ImagePath>Graphics\Horse_Armor_Slot.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiLabel>
+<Properties>
+<Id>image</Id>
+<Width>38.000000</Width>
+<Height>38.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<ClassOverride>CXuiCtrlMinecraftSlot</ClassOverride>
+<Visual>XuiVisualImagePresenter</Visual>
+</Properties>
+</XuiLabel>
+<XuiFigure>
+<Properties>
+<Id>graphic_Highlight</Id>
+<Width>38.000000</Width>
+<Height>38.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Opacity>0.000000</Opacity>
+<Anchor>15</Anchor>
+<Stroke>
+<Properties>
+<StrokeColor>0xff646464</StrokeColor>
+</Properties>
+</Stroke>
+<Fill>
+<Properties>
+<FillColor>0xb4ebebeb</FillColor>
+<Gradient>
+<Properties>
+<NumStops>4</NumStops>
+<StopColor index="0">0xff828282</StopColor>
+<StopColor index="1">0xffb4b4b4</StopColor>
+<StopColor index="2">0xffd2d2d2</StopColor>
+<StopColor index="3">0xffebebeb</StopColor>
+<StopPos index="0">0.000000</StopPos>
+<StopPos index="1">0.592157</StopPos>
+<StopPos index="2">0.627451</StopPos>
+<StopPos index="3">1.000000</StopPos>
+</Properties>
+</Gradient>
+<Rotation>90.000000</Rotation>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,242.119705,0.000000,1,242.119705,0.000000,242.119705,0.000000,242.119705,31.004648,1,242.119705,31.004648,242.119705,31.004648,0.000000,31.006342,1,0.000000,31.006342,0.000000,31.006342,0.000000,0.000000,1,</Points>
+</Properties>
+</XuiFigure>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusLoop</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>80</Time>
+<Command>gotoandplay</Command>
+<CommandParams>FocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalDisable</Name>
+<Time>81</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalDisable</Name>
+<Time>82</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusDisable</Name>
+<Time>83</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>InactiveFocusLoop</Name>
+<Time>100</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocusDisable</Name>
+<Time>159</Time>
+<Command>gotoandplay</Command>
+<CommandParams>InactiveFocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>Press</Name>
+<Time>160</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndPress</Name>
+<Time>162</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalSel</Name>
+<Time>163</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalSel</Name>
+<Time>188</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>graphic_Highlight</Id>
+<TimelineProp index="2">Fill.Gradient.StopPos</TimelineProp>
+<TimelineProp index="0">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp index="2">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp index="3">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp>Stroke.StrokeColor</TimelineProp>
+<TimelineProp index="1">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp>Opacity</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xff828282</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff646464</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xff828282</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff646464</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>50</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff829682</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff96c896</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>80</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffc8c8c8</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffc8c8c8</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>100</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff647264</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>130</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0xffc3cdc3</Prop>
+<Prop>0xffdaebda</Prop>
+<Prop>0xff648464</Prop>
+<Prop>0xff91b18c</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>159</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff647264</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>160</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>0</EaseIn>
+<EaseOut>0</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>162</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>163</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>188</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ItemGridHorseSaddle</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseSaddle</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>KillFocus</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>21</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>22</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>42</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ItemButtonHorseSaddle</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Box</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>15</Anchor>
+<SizeMode>4</SizeMode>
+<ImagePath>Graphics\IconHolder.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiImage>
+<Properties>
+<Id>Icon</Id>
+<Width>38.000000</Width>
+<Height>38.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<SizeMode>16</SizeMode>
+<ImagePath>Graphics\Horse_Saddle_Slot.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiLabel>
+<Properties>
+<Id>image</Id>
+<Width>38.000000</Width>
+<Height>38.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<ClassOverride>CXuiCtrlMinecraftSlot</ClassOverride>
+<Visual>XuiVisualImagePresenter</Visual>
+</Properties>
+</XuiLabel>
+<XuiFigure>
+<Properties>
+<Id>graphic_Highlight</Id>
+<Width>38.000000</Width>
+<Height>38.000000</Height>
+<Position>2.000000,2.000000,0.000000</Position>
+<Opacity>0.000000</Opacity>
+<Anchor>15</Anchor>
+<Stroke>
+<Properties>
+<StrokeColor>0xff646464</StrokeColor>
+</Properties>
+</Stroke>
+<Fill>
+<Properties>
+<FillColor>0xb4ebebeb</FillColor>
+<Gradient>
+<Properties>
+<NumStops>4</NumStops>
+<StopColor index="0">0xff828282</StopColor>
+<StopColor index="1">0xffb4b4b4</StopColor>
+<StopColor index="2">0xffd2d2d2</StopColor>
+<StopColor index="3">0xffebebeb</StopColor>
+<StopPos index="0">0.000000</StopPos>
+<StopPos index="1">0.592157</StopPos>
+<StopPos index="2">0.627451</StopPos>
+<StopPos index="3">1.000000</StopPos>
+</Properties>
+</Gradient>
+<Rotation>90.000000</Rotation>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,242.119705,0.000000,1,242.119705,0.000000,242.119705,0.000000,242.119705,31.004648,1,242.119705,31.004648,242.119705,31.004648,0.000000,31.006342,1,0.000000,31.006342,0.000000,31.006342,0.000000,0.000000,1,</Points>
+</Properties>
+</XuiFigure>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusLoop</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>80</Time>
+<Command>gotoandplay</Command>
+<CommandParams>FocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalDisable</Name>
+<Time>81</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalDisable</Name>
+<Time>82</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusDisable</Name>
+<Time>83</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>InactiveFocusLoop</Name>
+<Time>100</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocusDisable</Name>
+<Time>159</Time>
+<Command>gotoandplay</Command>
+<CommandParams>InactiveFocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>Press</Name>
+<Time>160</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndPress</Name>
+<Time>162</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalSel</Name>
+<Time>163</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalSel</Name>
+<Time>188</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>graphic_Highlight</Id>
+<TimelineProp index="2">Fill.Gradient.StopPos</TimelineProp>
+<TimelineProp index="0">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp index="2">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp index="3">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp>Stroke.StrokeColor</TimelineProp>
+<TimelineProp index="1">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp>Opacity</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xff828282</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff646464</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xff828282</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff646464</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>50</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff829682</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff96c896</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>80</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>1.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffc8c8c8</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffc8c8c8</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>100</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff647264</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>130</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0xffc3cdc3</Prop>
+<Prop>0xffdaebda</Prop>
+<Prop>0xff648464</Prop>
+<Prop>0xff91b18c</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>159</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff647264</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>160</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>0</EaseIn>
+<EaseOut>0</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>162</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>163</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>188</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>HorsePanel</Id>
+<Width>283.000000</Width>
+<Height>36.000000</Height>
+</Properties>
+<XuiFigure>
+<Properties>
+<Id>graphic_Middle</Id>
+<Width>282.000000</Width>
+<Height>35.000000</Height>
+<Anchor>15</Anchor>
+<Stroke>
+<Properties>
+<StrokeColor>0xff646464</StrokeColor>
+</Properties>
+</Stroke>
+<Fill>
+<Properties>
+<FillColor>0xff0f0f0f</FillColor>
+<Gradient>
+<Properties>
+<NumStops>4</NumStops>
+<StopColor index="0">0xff828282</StopColor>
+<StopColor index="1">0xffb4b4b4</StopColor>
+<StopColor index="2">0xffd2d2d2</StopColor>
+<StopColor index="3">0xffebebeb</StopColor>
+<StopPos index="0">0.000000</StopPos>
+<StopPos index="1">0.592157</StopPos>
+<StopPos index="2">0.627451</StopPos>
+<StopPos index="3">1.000000</StopPos>
+</Properties>
+</Gradient>
+<Rotation>90.000000</Rotation>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,242.119705,0.000000,1,242.119705,0.000000,242.119705,0.000000,242.119705,31.004648,1,242.119705,31.004648,242.119705,31.004648,0.000000,31.006342,1,0.000000,31.006342,0.000000,31.006342,0.000000,0.000000,1,</Points>
+</Properties>
+</XuiFigure>
+<XuiFigure>
+<Properties>
+<Id>graphic_BottomEdge</Id>
+<Width>283.000000</Width>
+<Height>2.000000</Height>
+<Position>0.000000,34.000000,0.000000</Position>
+<Anchor>13</Anchor>
+<Fill>
+<Properties>
+<FillColor>0xffebebeb</FillColor>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,242.119690,0.000000,0,242.119690,0.000000,242.119690,0.000000,242.119690,2.000000,0,242.119690,2.000000,242.119690,2.000000,0.000000,2.000000,0,0.000000,2.000000,0.000000,2.000000,0.000000,0.000000,0,</Points>
+</Properties>
+</XuiFigure>
+<XuiFigure>
+<Properties>
+<Id>graphic_CapLeft</Id>
+<Width>2.000000</Width>
+<Height>36.000000</Height>
+<Anchor>11</Anchor>
+<Stroke>
+<Properties>
+<StrokeColor>0xff646464</StrokeColor>
+</Properties>
+</Stroke>
+<Fill>
+<Properties>
+<FillColor>0xff373737</FillColor>
+<Gradient>
+<Properties>
+<Radial>true</Radial>
+<NumStops>4</NumStops>
+<StopColor index="0">0xff7d7d7d</StopColor>
+<StopColor index="1">0xffb4b4b4</StopColor>
+<StopColor index="2">0xffd2d2d2</StopColor>
+<StopColor index="3">0xffebebeb</StopColor>
+<StopPos index="0">0.086275</StopPos>
+<StopPos index="1">0.466667</StopPos>
+<StopPos index="2">0.494118</StopPos>
+<StopPos index="3">0.682353</StopPos>
+</Properties>
+</Gradient>
+<TransformVersion>1</TransformVersion>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,3.000000,0.000000,0,3.000000,0.000000,3.000000,0.000000,3.000000,35.000000,0,3.000000,35.000000,3.000000,35.000000,0.000000,35.000000,0,0.000000,35.000000,0.000000,35.000000,0.000000,0.000000,0,</Points>
+</Properties>
+</XuiFigure>
+<XuiFigure>
+<Properties>
+<Id>graphic_CapRight</Id>
+<Width>2.000000</Width>
+<Height>35.000000</Height>
+<Position>281.000000,0.000000,0.000000</Position>
+<Anchor>14</Anchor>
+<Stroke>
+<Properties>
+<StrokeColor>0xff646464</StrokeColor>
+</Properties>
+</Stroke>
+<Fill>
+<Properties>
+<FillColor>0xffebebeb</FillColor>
+<Gradient>
+<Properties>
+<Radial>true</Radial>
+<NumStops>4</NumStops>
+<StopColor index="0">0xff7d7d7d</StopColor>
+<StopColor index="1">0xffb4b4b4</StopColor>
+<StopColor index="2">0xffd2d2d2</StopColor>
+<StopColor index="3">0xffebebeb</StopColor>
+<StopPos index="0">0.086275</StopPos>
+<StopPos index="1">0.466667</StopPos>
+<StopPos index="2">0.494118</StopPos>
+<StopPos index="3">0.682353</StopPos>
+</Properties>
+</Gradient>
+<TransformVersion>1</TransformVersion>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,3.000000,0.000000,0,3.000000,0.000000,3.000000,0.000000,3.000000,35.000000,0,3.000000,35.000000,3.000000,35.000000,0.000000,35.000000,0,0.000000,35.000000,0.000000,35.000000,0.000000,0.000000,0,</Points>
+</Properties>
+</XuiFigure>
+<XuiFigure>
+<Properties>
+<Id>graphic_TopEdge</Id>
+<Width>283.000000</Width>
+<Height>2.000000</Height>
+<Anchor>7</Anchor>
+<Fill>
+<Properties>
+<FillColor>0xff373737</FillColor>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,242.119720,0.000000,0,242.119720,0.000000,242.119720,0.000000,242.119720,2.000000,0,242.119720,2.000000,242.119720,2.000000,0.000000,2.000000,0,0.000000,2.000000,0.000000,2.000000,0.000000,0.000000,0,</Points>
+</Properties>
+</XuiFigure>
+<XuiControl>
+<Properties>
+<Id>HorseControl</Id>
+<Width>283.000000</Width>
+<Height>36.000000</Height>
+<Anchor>15</Anchor>
+<ClassOverride>CXuiCtrlMinecraftHorse</ClassOverride>
+</Properties>
+</XuiControl>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Focus</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusLoop</Name>
+<Time>20</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocus</Name>
+<Time>80</Time>
+<Command>gotoandplay</Command>
+<CommandParams>FocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalDisable</Name>
+<Time>81</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalDisable</Name>
+<Time>82</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FocusDisable</Name>
+<Time>83</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>InactiveFocusLoop</Name>
+<Time>100</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndFocusDisable</Name>
+<Time>159</Time>
+<Command>gotoandplay</Command>
+<CommandParams>InactiveFocusLoop</CommandParams>
+</NamedFrame>
+<NamedFrame>
+<Name>Press</Name>
+<Time>160</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndPress</Name>
+<Time>189</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>NormalSel</Name>
+<Time>190</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormalSel</Name>
+<Time>215</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>graphic_Middle</Id>
+<TimelineProp index="2">Fill.Gradient.StopPos</TimelineProp>
+<TimelineProp index="0">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp index="2">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp index="3">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp>Stroke.StrokeColor</TimelineProp>
+<TimelineProp index="1">Fill.Gradient.StopColor</TimelineProp>
+<TimelineProp index="1">Fill.Gradient.StopPos</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xff828282</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff646464</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xff828282</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff646464</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>50</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff829682</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff96c896</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>80</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffc8c8c8</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.627451</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffd2d2d2</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xffb4b4b4</Prop>
+<Prop>0xffc8c8c8</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>100</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff647264</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>130</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0xffc3cdc3</Prop>
+<Prop>0xffdaebda</Prop>
+<Prop>0xff648464</Prop>
+<Prop>0xff91b18c</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>159</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff647264</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>160</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>0</EaseIn>
+<EaseOut>0</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>165</Time>
+<Interpolation>1</Interpolation>
+<Prop>0.490196</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0xff8ca08c</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0.376471</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>171</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>0</EaseIn>
+<EaseOut>0</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>0.490196</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0xff8ca08c</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff8cb48c</Prop>
+<Prop>0.376471</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>189</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>190</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff648264</Prop>
+<Prop>0xffc8d2c8</Prop>
+<Prop>0xffc8ebc8</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xff78b478</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>215</Time>
+<Interpolation>0</Interpolation>
+<Prop>0.619608</Prop>
+<Prop>0xff8c968c</Prop>
+<Prop>0xffbec8be</Prop>
+<Prop>0xffebebeb</Prop>
+<Prop>0xff649664</Prop>
+<Prop>0xffaaafa0</Prop>
+<Prop>0.592157</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>graphic_BottomEdge</Id>
+<TimelineProp>Fill.FillColor</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>80</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffb4b4b4</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>100</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>159</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>160</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>189</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>190</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>215</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>graphic_TopEdge</Id>
+<TimelineProp>Fill.FillColor</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xff373737</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>80</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffb4b4b4</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>100</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>159</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>160</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>189</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>190</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>215</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>graphic_CapLeft</Id>
+<TimelineProp>Fill.FillColor</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xff373737</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>80</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>100</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>159</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>160</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>189</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>190</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>215</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>graphic_CapRight</Id>
+<TimelineProp>Fill.FillColor</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>1</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>80</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xff0f0f0f</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>81</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>83</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>100</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>159</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>160</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>189</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>190</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>215</Time>
+<Interpolation>0</Interpolation>
+<Prop>0xffebebeb</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
<Id>HtmlItemDescriptionSmall</Id>
<Width>32.000000</Width>
<Height>32.000000</Height>
@@ -29912,6 +32565,21 @@
<Time>17</Time>
<Command>stop</Command>
</NamedFrame>
+<NamedFrame>
+<Name>Wither</Name>
+<Time>18</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>HealthBoost</Name>
+<Time>19</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Absorption</Name>
+<Time>20</Time>
+<Command>stop</Command>
+</NamedFrame>
</NamedFrames>
<Timeline>
<Id>Icon</Id>
@@ -30025,6 +32693,24 @@
<Prop>true</Prop>
<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Weakness.png</Prop>
</KeyFrame>
+<KeyFrame>
+<Time>18</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Wither.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>19</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
</Timeline>
</Timelines>
</XuiVisual>
@@ -30277,6 +32963,21 @@
<Time>17</Time>
<Command>stop</Command>
</NamedFrame>
+<NamedFrame>
+<Name>Wither</Name>
+<Time>18</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>HealthBoost</Name>
+<Time>19</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Absorption</Name>
+<Time>20</Time>
+<Command>stop</Command>
+</NamedFrame>
</NamedFrames>
<Timeline>
<Id>Icon</Id>
@@ -30390,6 +33091,24 @@
<Prop>true</Prop>
<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Weakness.png</Prop>
</KeyFrame>
+<KeyFrame>
+<Time>18</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_Wither.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>19</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>20</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\PotionEffect\Potion_Effect_Icon_HealthBoost.png</Prop>
+</KeyFrame>
</Timeline>
</Timelines>
</XuiVisual>
@@ -34088,6 +36807,121 @@
</XuiVisual>
<XuiVisual>
<Properties>
+<Id>HorseJumpProgress</Id>
+<Width>548.000000</Width>
+<Height>15.000000</Height>
+</Properties>
+<XuiGroup>
+<Properties>
+<Id>ProgressBody</Id>
+<Width>548.000000</Width>
+<Height>15.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>back</Id>
+<Width>182.000000</Width>
+<Height>5.000000</Height>
+<Anchor>15</Anchor>
+<SizeMode>4</SizeMode>
+<ImagePath>Graphics\HUD\HorseJump_bar_empty.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiGroup>
+<Properties>
+<Id>bar</Id>
+<Width>182.000000</Width>
+<Height>5.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<ClipChildren>true</ClipChildren>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>bar</Id>
+<Width>182.000000</Width>
+<Height>5.000000</Height>
+<SizeMode>4</SizeMode>
+<ImagePath>Graphics\HUD\HorseJump_bar_full.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+</XuiGroup>
+<XuiFigure>
+<Properties>
+<Id>design_time_display</Id>
+<Width>458.000000</Width>
+<Height>15.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<DesignTime>true</DesignTime>
+<Stroke>
+<Properties>
+<StrokeWidth>1.000000</StrokeWidth>
+<StrokeColor>0xff646464</StrokeColor>
+</Properties>
+</Stroke>
+<Fill>
+<Properties>
+<FillType>2</FillType>
+<FillColor>0xffffffff</FillColor>
+<Gradient>
+<Properties>
+<NumStops>2</NumStops>
+<StopColor index="0">0xffebebeb</StopColor>
+<StopColor index="1">0xff7d7d7d</StopColor>
+<StopPos index="0">0.000000</StopPos>
+<StopPos index="1">0.000000</StopPos>
+</Properties>
+</Gradient>
+</Properties>
+</Fill>
+<Closed>true</Closed>
+<Points>4,0.000000,0.000000,0.000000,0.000000,170.000000,0.000000,0,170.000000,0.000000,170.000000,0.000000,170.000000,19.000000,0,170.000000,19.000000,170.000000,19.000000,0.000000,19.000000,0,0.000000,19.000000,0.000000,19.000000,0.000000,0.000000,0,</Points>
+</Properties>
+</XuiFigure>
+<Timelines>
+<Timeline>
+<Id>bar</Id>
+<TimelineProp>Show</TimelineProp>
+<TimelineProp>Width</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+<Prop>182.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>3.330000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>200</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>182.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiGroup>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>60</Time>
+</NamedFrame>
+</NamedFrames>
+</Timelines>
+</XuiVisual>
+<XuiVisual>
+<Properties>
<Id>BossHealthLabel</Id>
<Width>500.000000</Width>
<Height>66.000000</Height>
@@ -35336,6 +38170,56 @@
<Time>9</Time>
<Command>stop</Command>
</NamedFrame>
+<NamedFrame>
+<Name>FullWither</Name>
+<Time>10</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FullWitherFlash</Name>
+<Time>11</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>HalfWither</Name>
+<Time>12</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>HalfWitherFlash</Name>
+<Time>13</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>FullAbsorb</Name>
+<Time>14</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>HalfAbsorb</Name>
+<Time>15</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Horse_Full</Name>
+<Time>16</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Horse_Full_Flash</Name>
+<Time>17</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Horse_Half</Name>
+<Time>18</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>Horse_Half_Flash</Name>
+<Time>19</Time>
+<Command>stop</Command>
+</NamedFrame>
</NamedFrames>
<Timeline>
<Id>Border</Id>
@@ -35350,6 +38234,46 @@
<Interpolation>0</Interpolation>
<Prop>Graphics\HUD\Health_Background_Flash.png</Prop>
</KeyFrame>
+<KeyFrame>
+<Time>10</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>11</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background_Flash.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>12</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>13</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background_Flash.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>14</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>17</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background_Flash.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>18</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>19</Time>
+<Interpolation>0</Interpolation>
+<Prop>Graphics\HUD\Health_Background_Flash.png</Prop>
+</KeyFrame>
</Timeline>
<Timeline>
<Id>Heart</Id>
@@ -35415,6 +38339,66 @@
<Prop>true</Prop>
<Prop>Graphics\HUD\Health_Full_Poison_Flash.png</Prop>
</KeyFrame>
+<KeyFrame>
+<Time>10</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\Health_Full_Wither.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>11</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\Health_Full_Wither_Flash.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>12</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\Health_Half_Wither.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>13</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\Health_Half_Wither_Flash.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>14</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\Health_Full_Absorb.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>15</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\Health_Half_Absorb.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>16</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\HorseHealth_Full.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>17</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\HorseHealth_Full_Flash.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>18</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\HorseHealth_Half.png</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>19</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>Graphics\HUD\HorseHealth_Half_Flash.png</Prop>
+</KeyFrame>
</Timeline>
</Timelines>
</XuiVisual>
@@ -42205,6 +45189,23 @@
</XuiVisual>
<XuiVisual>
<Properties>
+<Id>ImHowToPlayEnderchest</Id>
+<Width>339.000000</Width>
+<Height>342.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>XuiImageBreeding</Id>
+<Width>451.000000</Width>
+<Height>455.000000</Height>
+<Scale>0.750000,0.750000,0.750000</Scale>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Enderchest.png</ImagePath>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
<Id>ImHowToPlayBrewing</Id>
<Width>339.000000</Width>
<Height>342.000000</Height>
@@ -42698,18 +45699,130 @@
</XuiVisual>
<XuiVisual>
<Properties>
-<Id>ImHowToPlayEnderchest</Id>
-<Width>339.000000</Width>
-<Height>342.000000</Height>
+<Id>ImHowToPlayBeaconSmall</Id>
+<Width>260.000000</Width>
+<Height>290.000000</Height>
</Properties>
<XuiImage>
<Properties>
-<Id>XuiImageBreeding</Id>
-<Width>451.000000</Width>
-<Height>455.000000</Height>
-<Scale>0.750000,0.750000,0.750000</Scale>
+<Id>Image</Id>
+<Width>336.000000</Width>
+<Height>290.000000</Height>
<SizeMode>1</SizeMode>
-<ImagePath>Graphics\HowToPlay\HowToPlay_Enderchest.png</ImagePath>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Beacon_Small.png</ImagePath>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ImHowToPlayBeacon</Id>
+<Width>430.000000</Width>
+<Height>430.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>430.000000</Width>
+<Height>430.000000</Height>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Beacon.png</ImagePath>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ImHowToPlayHorsesSmall</Id>
+<Width>248.000000</Width>
+<Height>146.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>248.000000</Width>
+<Height>146.000000</Height>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Horses_Small.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ImHowToPlayHorses</Id>
+<Width>525.000000</Width>
+<Height>308.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>516.000000</Width>
+<Height>302.000000</Height>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Horses.png</ImagePath>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ImHowToPlayFireworksSmall</Id>
+<Width>260.000000</Width>
+<Height>280.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>260.000000</Width>
+<Height>280.000000</Height>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Fireworks_Small.png</ImagePath>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ImHowToPlayFireworks</Id>
+<Width>428.000000</Width>
+<Height>450.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>428.000000</Width>
+<Height>450.000000</Height>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Fireworks.png</ImagePath>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ImHowToPlayHopperSmall</Id>
+<Width>260.000000</Width>
+<Height>220.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>260.000000</Width>
+<Height>220.000000</Height>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Hopper_Small.png</ImagePath>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>ImHowToPlayHopper</Id>
+<Width>430.000000</Width>
+<Height>336.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>430.000000</Width>
+<Height>336.000000</Height>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\HowToPlay\HowToPlay_Hopper.png</ImagePath>
</Properties>
</XuiImage>
</XuiVisual>
@@ -42769,4 +45882,76 @@
</Properties>
</XuiTextPresenter>
</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>Beacon_1</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<SizeMode>8</SizeMode>
+<ImagePath>Graphics\Beacon_1.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>Beacon_2</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<SizeMode>8</SizeMode>
+<ImagePath>Graphics\Beacon_2.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>Beacon_3</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<SizeMode>8</SizeMode>
+<ImagePath>Graphics\Beacon_3.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+</XuiVisual>
+<XuiVisual>
+<Properties>
+<Id>Beacon_4</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>Image</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<SizeMode>8</SizeMode>
+<ImagePath>Graphics\Beacon_4.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+</XuiVisual>
</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/splashes.txt b/Minecraft.Client/Common/Media/splashes.txt
index c12a2f9c..86e38941 100644
--- a/Minecraft.Client/Common/Media/splashes.txt
+++ b/Minecraft.Client/Common/Media/splashes.txt
@@ -295,7 +295,7 @@ You can't explain that!
if not ok then return end
§1C§2o§3l§4o§5r§6m§7a§8t§9i§ac
§kFUNKY LOL
-SOPA means LOSER in Swedish
+SOPA means LOSER in Swedish!
Big Pointy Teeth!
Bekarton guards the gate!
Mmmph, mmph!
@@ -309,4 +309,6 @@ Pretty scary!
I have a suggestion.
Now with extra hugs!
Almost java 6!
-Woah. \ No newline at end of file
+Woah.
+HURNERJSGER?
+What's up, Doc? \ No newline at end of file
diff --git a/Minecraft.Client/Common/Media/strings.resx b/Minecraft.Client/Common/Media/strings.resx
index 21a7078a..9e824d0f 100644
--- a/Minecraft.Client/Common/Media/strings.resx
+++ b/Minecraft.Client/Common/Media/strings.resx
@@ -408,6 +408,27 @@ When loading or creating a world, you can press the "More Options" button to ent
{*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*}
+ {*T2*}Daylight Cycle{*ETW*}{*B*}
+ When disabled, the time of day will not change.{*B*}{*B*}
+
+ {*T2*}Keep Inventory{*ETW*}{*B*}
+ When enabled, players will keep their inventory when they die.{*B*}{*B*}
+
+ {*T2*}Mob Spawning{*ETW*}{*B*}
+ When disabled, mobs will not spawn naturally.{*B*}{*B*}
+
+ {*T2*}Mob Griefing{*ETW*}{*B*}
+ When disabled, prevents monsters and animals from changing blocks (for example, Creeper explosions won't destroy blocks and Sheep won't remove Grass) or picking up items.{*B*}{*B*}
+
+ {*T2*}Mob Loot{*ETW*}{*B*}
+ When disabled, monsters and animals will not drop loot (for example, Creepers won't drop gunpowder).{*B*}{*B*}
+
+ {*T2*}Tile Drops{*ETW*}{*B*}
+ When disabled, blocks will not drop items when destroyed (for example, Stone blocks won't drop Cobblestone).{*B*}{*B*}
+
+ {*T2*}Natural Regeneration{*ETW*}{*B*}
+ When disabled, players will not regenerate health naturally.{*B*}{*B*}
+
{*T1*}World Generation Options{*ETW*}{*B*}
When creating a new world there are some additional options.{*B*}{*B*}
@@ -451,25 +472,29 @@ To modify the privileges for a player, select their name and press{*CONTROLLER_V
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*}
+ {*KICK_PLAYER_DESCRIPTION*}{*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.
</value>
</data>
+ <data name="IDS_KICK_PLAYER_DESCRIPTION">
+ <value>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.</value>
+ </data>
+
<data name="IDS_HOW_TO_PLAY_NEXT">
<value>Next Page</value>
</data>
@@ -566,100 +591,148 @@ so they can easily join you.
</data>
<data name="IDS_HOW_TO_PLAY_WHATSNEW">
- <value>
-{*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*}
+ <value>{*T3*}Changes and Additions{*ETW*}{*B*}{*B*}
+- Added new items - Hardened Clay, Stained Clay, Block of Coal, Hay Bale, Activator Rail, Block of Redstone, Daylight Sensor, Dropper, Hopper, Minecart with Hopper, Minecart with TNT, Redstone Comparator, Weighted Pressure Plate, Beacon, Trapped Chest, Firework Rocket, Firework Star, Nether Star, Lead, Horse Armor, Name Tag, Horse Spawn Egg{*B*}
+- Added new Mobs - Wither, Wither Skeletons, Witches, Bats, Horses, Donkeys and Mules{*B*}
+- Added new terrain generation features - Witch Huts.{*B*}
+- Added Beacon interface.{*B*}
+- Added Horse interface.{*B*}
+- Added Hopper interface.{*B*}
+- Added Fireworks - Fireworks interface is accessible from the Crafting Table when you have the ingredients to craft a Firework Star or Firework Rocket.{*B*}
+- Added 'Adventure Mode' - You can only break blocks with the correct tools.{*B*}
+- Added lots of new sounds.{*B*}
+- Mobs, items and projectiles can now pass through portals.{*B*}
+- Repeaters can now be locked by powering their sides with another Repeater.{*B*}
+- Zombies and Skeletons can now spawn with different weapons and armor.{*B*}
+- New death messages.{*B*}
+- Name mobs with a Name Tag, and rename containers to change the title when the menu is open.{*B*}
+- Bonemeal no longer instantly grows everything to full size, and instead randomly grows in stages.{*B*}
+- A Redstone signal describing the contents of Chests, Brewing Stands, Dispensers and Jukeboxes can be detected by placing a Redstone Comparator directly against them.{*B*}
+- Dispensers can face in any direction.{*B*}
+- Eating a Golden Apple gives the player extra "absorption" health for a short period.{*B*}
+- The longer you remain in an area the harder the monsters that spawn in that area will be.{*B*}
</value>
</data>
<data name="IDS_TITLEUPDATE">
<value>{*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*}
-</value>
+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*} - Hardened Clay, Stained Clay, Block of Coal, Hay Bale, Activator Rail, Block of Redstone, Daylight Sensor, Dropper, Hopper, Minecart with Hopper, Minecart with TNT, Redstone Comparator, Weighted Pressure Plate, Beacon, Trapped Chest, Firework Rocket, Firework Star, Nether Star, Lead, Horse Armor, Name Tag, Horse Spawn Egg{*B*}{*B*}
+{*T1*}New Mobs{*ETB*} - Wither, Wither Skeletons, Witches, Bats, Horses, Donkeys and Mules{*B*}{*B*}
+{*T1*}New Features{*ETB*} - Tame and ride a horse, craft fireworks and put on a show, name animals and monsters with a Name Tag, create more advanced Redstone circuits, and new Host Options to help control what guests to your world can do!{*B*}{*B*}
+{*T1*}New Tutorial World{*ETB*} – Learn how to use the old and new features in the Tutorial World. See if you can find all the secret Music Discs hidden in the world!{*B*}{*B*}
+ </value>
</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES">
+ <value>Horses</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES">
+ <value>{*T3*}HOW TO PLAY : HORSES{*ETW*}{*B*}{*B*}
+Horses and Donkeys are found mainly in open plains. Mules are the offspring of a Donkey and a Horse, but are infertile themselves.{*B*}
+All adult Horses, Donkeys and Mules can be ridden. However only Horses can be armored, and only Mules and Donkeys may be equipped with saddlebags for transporting items.{*B*}{*B*}
+Horses, Donkeys and Mules must be tamed before they can be used. A horse is tamed by attempting to ride it, and managing to stay on the horse while it attempts to throw the rider off.{*B*}
+When Love Hearts appear around the horse, it is tame, and will no longer attempt to throw the player off. To steer a horse, the player must equip the horse with a Saddle.{*B*}{*B*}
+Saddles can be bought from villagers or found inside Chests hidden in the world.{*B*}
+Tame Donkeys and Mules can be given saddlebags by attaching a Chest. These saddlebags can then be accessed whilst riding or sneaking.{*B*}{*B*}
+Horses and Donkeys (but not Mules) can be bred like other animals using Golden Apples or Golden Carrots.{*B*}
+Foals will grow into adult horses over time, although feeding them Wheat or Hay will speed this up.{*B*}
+ </value>
+</data>
+
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS">
+ <value>Beacons</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS">
+ <value>{*T3*}HOW TO PLAY : BEACONS{*ETW*}{*B*}{*B*}
+Active Beacons project a bright beam of light into the sky and grant powers to nearby players.{*B*}
+They are crafted with Glass, Obsidian and Nether Stars, which can be obtained by defeating the Wither.{*B*}{*B*}
+Beacons must be placed so that they are in sunlight during the day. Beacons must be placed on Pyramids of Iron, Gold, Emerald or Diamond.{*B*}
+The material the Beacon is placed on has no effect on the power of the Beacon.{*B*}{*B*}
+In the Beacon menu you can select one primary power for your Beacon. The more tiers your pyramid has the more powers you will have to choose from.{*B*}
+A Beacon on a pyramid with at least four tiers also gives the option of either the Regeneration secondary power or a stronger primary power.{*B*}{*B*}
+To set the powers of your Beacon you must sacrifice an Emerald, Diamond, Gold or Iron Ingot in the payment slot.{*B*}
+Once set, the powers will emanate from the Beacon indefinitely.{*B*}
+ </value>
+</data>
+
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS">
+ <value>Fireworks</value>
+</data>
+ <data name="IDS_HOW_TO_PLAY_FIREWORKS">
+ <value>{*T3*}HOW TO PLAY : FIREWORKS{*ETW*}{*B*}{*B*}
+Fireworks are decorative items that can be launched by hand or from Dispensers. They are crafted using Paper, Gunpowder and optionally a number of Firework Stars.{*B*}
+The colors, fade, shape, size, and effects (such as trails and twinkle) of Firework Stars can be customized by including additional ingredients when crafting.{*B*}{*B*}
+To craft a Firework place Gunpowder and Paper in the 3x3 crafting grid that is shown above your inventory.{*B*}
+You can optionally place multiple Firework Stars in the crafting grid to add them to the Firework.{*B*}
+Filling more slots in the crafting grid with Gunpowder will increase the height at which all the Firework Stars will explode.{*B*}{*B*}
+You can then take the crafted Firework out of the output slot.{*B*}{*B*}
+Firework Stars can be crafted by placing Gunpowder and Dye into the crafting grid.{*B*}
+ - The Dye will set the color of the explosion of the Firework Star.{*B*}
+ - The shape of the Firework Star is set by adding either a Fire Charge, Gold Nugget, Feather or Mob Head.{*B*}
+ - A trail or a twinkle can be added using Diamonds or Glowstone Dust.{*B*}{*B*}
+After a Firework Star has been crafted, you can set the fade color of the Firework Star by crafting it with Dye.
+ </value>
+ </data>
+
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS">
+ <value>Hoppers</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS">
+ <value>{*T3*}HOW TO PLAY : HOPPERS{*ETW*}{*B*}{*B*}
+Hoppers are used to insert or remove items from containers, and to automatically pick up items thrown into them.{*B*}
+They can affect Brewing Stands, Chests, Dispensers, Droppers, Minecarts with Chests, Minecarts with Hoppers, as well as other Hoppers.{*B*}{*B*}
+Hoppers will continuously attempt to suck items out of a suitable container placed above them. They will also attempt to insert stored items into an output container.{*B*}
+If a Hopper is powered by Redstone it will become inactive and stop both sucking and inserting items.{*B*}{*B*}
+A Hopper points in the direction it tries to output items. To make a Hopper point to a particular block, place the Hopper against that block whilst sneaking.{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS">
+ <value>Droppers</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS">
+ <value>{*T3*}HOW TO PLAY : DROPPERS{*ETW*}{*B*}{*B*}
+When powered by Redstone, Droppers will drop a single random item contained within them onto the ground. Use {*CONTROLLER_ACTION_USE*} to open the Dropper and then you can load the Dropper with items from your inventory.{*B*}
+If the Dropper is facing a Chest or another type of Container, the item will be placed into that instead. Long chains of Droppers can be constructed to transport items over a distance, but for this to work they will have to be alternately powered on and off.
+ </value>
+</data>
+
+
+

<data name="IDS_DESC_SWORD">
- <value>Deals more damage than by hand.</value>
+ <value>Deals more damage than by hand.</value>
</data>
<data name="IDS_DESC_SHOVEL">
- <value>Used to dig dirt, grass, sand, gravel and snow faster than by hand. Shovels are required to dig snowballs.</value>
+ <value>Used to dig dirt, grass, sand, gravel and snow faster than by hand. Shovels are required to dig snowballs.</value>
</data>
<data name="IDS_DESC_PICKAXE">
- <value>Required to mine stone-related blocks and ore.</value>
+ <value>Required to mine stone-related blocks and ore.</value>
</data>
<data name="IDS_DESC_HATCHET">
- <value>Used to chop wood-related blocks faster than by hand.</value>
+ <value>Used to chop wood-related blocks faster than by hand.</value>
</data>
<data name="IDS_DESC_HOE">
- <value>Used to till dirt and grass blocks to prepare for crops.</value>
+ <value>Used to till dirt and grass blocks to prepare for crops.</value>
</data>
<data name="IDS_DESC_DOOR_WOOD">
- <value>Wooden doors are activated by using, hitting them or with Redstone.</value>
+ <value>Wooden doors are activated by using, hitting them or with Redstone.</value>
</data>
<data name="IDS_DESC_DOOR_IRON">
- <value>Iron doors can only be opened by Redstone, buttons or switches.</value>
+ <value>Iron doors can only be opened by Redstone, buttons or switches.</value>
</data>
- <data name="IDS_DESC_HELMET">
- <value>NOT USED</value>
+ <data name="IDS_DESC_HELMET">
+ <value>NOT USED</value>
</data>
<data name="IDS_DESC_CHESTPLATE">
- <value>NOT USED</value>
+ <value>NOT USED</value>
</data>
<data name="IDS_DESC_LEGGINGS">
- <value>NOT USED</value>
+ <value>NOT USED</value>
</data>
<data name="IDS_DESC_BOOTS">
- <value>NOT USED</value>
+ <value>NOT USED</value>
</data>
<data name="IDS_DESC_HELMET_LEATHER">
@@ -679,807 +752,936 @@ Pumpkin Pie, Night Vision Potion, Invisibility Potion, Nether Quartz, Nether Qua
</data>
<data name="IDS_DESC_HELMET_CHAIN">
- <value>Gives the user 2 Armor when worn.</value>
+ <value>Gives the user 2 Armor when worn.</value>
</data>
<data name="IDS_DESC_CHESTPLATE_CHAIN">
- <value>Gives the user 5 Armor when worn.</value>
+ <value>Gives the user 5 Armor when worn.</value>
</data>
<data name="IDS_DESC_LEGGINGS_CHAIN">
- <value>Gives the user 4 Armor when worn.</value>
+ <value>Gives the user 4 Armor when worn.</value>
</data>
<data name="IDS_DESC_BOOTS_CHAIN">
- <value>Gives the user 1 Armor when worn.</value>
+ <value>Gives the user 1 Armor when worn.</value>
</data>
<data name="IDS_DESC_HELMET_IRON">
- <value>Gives the user 2 Armor when worn.</value>
+ <value>Gives the user 2 Armor when worn.</value>
</data>
<data name="IDS_DESC_CHESTPLATE_IRON">
- <value>Gives the user 6 Armor when worn.</value>
+ <value>Gives the user 6 Armor when worn.</value>
</data>
<data name="IDS_DESC_LEGGINGS_IRON">
- <value>Gives the user 5 Armor when worn.</value>
+ <value>Gives the user 5 Armor when worn.</value>
</data>
<data name="IDS_DESC_BOOTS_IRON">
- <value>Gives the user 2 Armor when worn.</value>
+ <value>Gives the user 2 Armor when worn.</value>
</data>
<data name="IDS_DESC_HELMET_GOLD">
- <value>Gives the user 2 Armor when worn.</value>
+ <value>Gives the user 2 Armor when worn.</value>
</data>
<data name="IDS_DESC_CHESTPLATE_GOLD">
- <value>Gives the user 5 Armor when worn.</value>
+ <value>Gives the user 5 Armor when worn.</value>
</data>
<data name="IDS_DESC_LEGGINGS_GOLD">
- <value>Gives the user 3 Armor when worn.</value>
+ <value>Gives the user 3 Armor when worn.</value>
</data>
<data name="IDS_DESC_BOOTS_GOLD">
- <value>Gives the user 1 Armor when worn.</value>
+ <value>Gives the user 1 Armor when worn.</value>
</data>
<data name="IDS_DESC_HELMET_DIAMOND">
- <value>Gives the user 3 Armor when worn.</value>
+ <value>Gives the user 3 Armor when worn.</value>
</data>
<data name="IDS_DESC_CHESTPLATE_DIAMOND">
- <value>Gives the user 8 Armor when worn.</value>
+ <value>Gives the user 8 Armor when worn.</value>
</data>
<data name="IDS_DESC_LEGGINGS_DIAMOND">
- <value>Gives the user 6 Armor when worn.</value>
+ <value>Gives the user 6 Armor when worn.</value>
</data>
<data name="IDS_DESC_BOOTS_DIAMOND">
- <value>Gives the user 3 Armor when worn.</value>
+ <value>Gives the user 3 Armor when worn.</value>
</data>
<data name="IDS_DESC_INGOT">
- <value>A shiny ingot which can be used to craft tools made from this material. Created by smelting ore in a furnace.</value>
+ <value>A shiny ingot which can be used to craft tools made from this material. Created by smelting ore in a furnace.</value>
</data>
<data name="IDS_DESC_BLOCK">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_PRESSUREPLATE">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_STAIRS">
- <value>Used for compact staircases.</value>
+ <value>Used for compact staircases.</value>
</data>
<data name="IDS_DESC_SLAB">
- <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
+ <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
</data>
<data name="IDS_DESC_HALFSLAB">
- <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
+ <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
</data>
<data name="IDS_DESC_TORCH">
- <value>Used to create light. Torches also melt snow and ice.</value>
+ <value>Used to create light. Torches also melt snow and ice.</value>
</data>
<data name="IDS_DESC_WOODENPLANKS">
- <value>Used as a building material and can be crafted into many things. Can be crafted from any form of wood.</value>
+ <value>Used as a building material and can be crafted into many things. Can be crafted from any form of wood.</value>
</data>
<data name="IDS_DESC_SANDSTONE">
- <value>Used as a building material. Is not influenced by gravity like normal Sand.</value>
+ <value>Used as a building material. Is not influenced by gravity like normal Sand.</value>
</data>
<data name="IDS_DESC_STRUCTBLOCK">
- <value>Used as a building material.</value>
+ <value>Used as a building material.</value>
</data>
<data name="IDS_DESC_STICK">
- <value>Used to craft torches, arrows, signs, ladders, fences and as handles for tools and weapons.</value>
+ <value>Used to craft torches, arrows, signs, ladders, fences and as handles for tools and weapons.</value>
</data>
<data name="IDS_DESC_BED">
- <value>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.
+ <value>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.</value>
</data>
<data name="IDS_DESC_CRAFTINGTABLE">
- <value>Allows you to craft a more varied selection of items than the normal crafting.</value>
+ <value>Allows you to craft a more varied selection of items than the normal crafting.</value>
</data>
<data name="IDS_DESC_FURNACE">
- <value>Allows you to smelt ore, create charcoal and glass, and cook fish and porkchops.</value>
+ <value>Allows you to smelt ore, create charcoal and glass, and cook fish and porkchops.</value>
</data>
<data name="IDS_DESC_CHEST">
- <value>Stores blocks and items inside. Place two chests side by side to create a larger chest with double the capacity.</value>
+ <value>Stores blocks and items inside. Place two chests side by side to create a larger chest with double the capacity.</value>
</data>
<data name="IDS_DESC_FENCE">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_LADDER">
- <value>Used to climb vertically.</value>
+ <value>Used to climb vertically.</value>
</data>
<data name="IDS_DESC_TRAPDOOR">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_SIGN">
- <value>Shows text entered by you or other players.</value>
+ <value>Shows text entered by you or other players.</value>
</data>
<data name="IDS_DESC_GLOWSTONE">
- <value>Used to create brighter light than torches. Melts snow/ice and can be used underwater.</value>
+ <value>Used to create brighter light than torches. Melts snow/ice and can be used underwater.</value>
</data>
<data name="IDS_DESC_TNT">
- <value>Used to cause explosions. Activated after placing by igniting with Flint and Steel item, or with an electrical charge.</value>
+ <value>Used to cause explosions. Activated after placing by igniting with Flint and Steel item, or with an electrical charge.</value>
</data>
<data name="IDS_DESC_BOWL">
- <value>Used to hold mushroom stew. You keep the bowl when the stew has been eaten.</value>
+ <value>Used to hold mushroom stew. You keep the bowl when the stew has been eaten.</value>
</data>
<data name="IDS_DESC_BUCKET">
- <value>Used to hold and transport water, lava and milk.</value>
+ <value>Used to hold and transport water, lava and milk.</value>
</data>
<data name="IDS_DESC_BUCKET_WATER">
- <value>Used to hold and transport water.</value>
+ <value>Used to hold and transport water.</value>
</data>
<data name="IDS_DESC_BUCKET_LAVA">
- <value>Used to hold and transport lava.</value>
+ <value>Used to hold and transport lava.</value>
</data>
<data name="IDS_DESC_BUCKET_MILK">
- <value>Used to hold and transport milk.</value>
+ <value>Used to hold and transport milk.</value>
</data>
<data name="IDS_DESC_FLINTANDSTEEL">
- <value>Used to create fire, ignite TNT, and open a portal once it has been built.</value>
+ <value>Used to create fire, ignite TNT, and open a portal once it has been built.</value>
</data>
<data name="IDS_DESC_FISHINGROD">
- <value>Used to catch fish.</value>
+ <value>Used to catch fish.</value>
</data>
<data name="IDS_DESC_CLOCK">
- <value>Displays positions of the Sun and Moon.</value>
+ <value>Displays positions of the Sun and Moon.</value>
</data>
<data name="IDS_DESC_COMPASS">
- <value>Points to your start point.</value>
+ <value>Points to your start point.</value>
</data>
<data name="IDS_DESC_MAP">
- <value>Will create an image of an area explored while held. This can be used for path-finding.</value>
+ <value>Will create an image of an area explored while held. This can be used for path-finding.</value>
+ </data>
+<data name="IDS_DESC_MAP_EMPTY">
+ <value>When used becomes a map of the part of the world that you are in, and gets filled in as you explore.</value>
</data>
<data name="IDS_DESC_BOW">
- <value>Allows for ranged attacks by using arrows.</value>
+ <value>Allows for ranged attacks by using arrows.</value>
</data>
<data name="IDS_DESC_ARROW">
- <value>Used as ammunition for bows.</value>
+ <value>Used as ammunition for bows.</value>
</data>
+
+<data name="IDS_DESC_NETHER_STAR">
+ <value>Dropped by the Wither, used in crafting Beacons.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS">
+ <value>When activated, create colorful explosions. The color, effect, shape and fade are determined by the Firework Star used when the Firework is created.</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE">
+ <value>Used to determine the color, effect and shape of a Firework.</value>
+</data>
+<data name="IDS_DESC_COMPARATOR">
+ <value>Used in Redstone circuits to maintain, compare, or subtract signal strength, or to measure certain block states.</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT">
+ <value>Is a type of Minecart that acts as a moving TNT block.</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR">
+ <value>Is a block that outputs a Redstone signal based on sunlight (or lack of sunlight).</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER">
+ <value>Is a special type of Minecart that functions similarly to a Hopper. It will collect items lying on tracks and from containers above it.</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR">
+ <value>A special type of Armor that can be equipped to a horse. Provides 5 Armor.</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR">
+ <value>A special type of Armor that can be equipped to a horse. Provides 7 Armor.</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR">
+ <value>A special type of Armor that can be equipped to a horse. Provides 11 Armor.</value>
+</data>
+<data name="IDS_DESC_LEAD">
+ <value>Used to leash mobs to the player or Fence posts.</value>
+</data>
+<data name="IDS_DESC_NAME_TAG">
+ <value>Used to name mobs in the world.</value>
+</data>
<data name="IDS_DESC_BREAD">
- <value>Restores 2.5{*ICON_SHANK_01*}.</value>
+ <value>Restores 2.5{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_CAKE">
- <value>Restores 1{*ICON_SHANK_01*}. Can be used 6 times.</value>
+ <value>Restores 1{*ICON_SHANK_01*}. Can be used 6 times.</value>
</data>
<data name="IDS_DESC_COOKIE">
- <value>Restores 1{*ICON_SHANK_01*}.</value>
+ <value>Restores 1{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_MELON_SLICE">
- <value>Restores 1{*ICON_SHANK_01*}.</value>
+ <value>Restores 1{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_MUSHROOMSTEW">
- <value>Restores 3{*ICON_SHANK_01*}.</value>
+ <value>Restores 3{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_CHICKEN_RAW">
- <value>Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace. Eating this can cause you to be poisoned.</value>
+ <value>Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace. Eating this can cause you to be poisoned.</value>
</data>
<data name="IDS_DESC_CHICKEN_COOKED">
- <value>Restores 3{*ICON_SHANK_01*}. Created by cooking raw chicken in a furnace.</value>
+ <value>Restores 3{*ICON_SHANK_01*}. Created by cooking raw chicken in a furnace.</value>
</data>
<data name="IDS_DESC_BEEF_RAW">
- <value>Restores 1.5{*ICON_SHANK_01*}, or can be cooked in a furnace.</value>
+ <value>Restores 1.5{*ICON_SHANK_01*}, or can be cooked in a furnace.</value>
</data>
<data name="IDS_DESC_BEEF_COOKED">
- <value>Restores 4{*ICON_SHANK_01*}. Created by cooking raw beef in a furnace.</value>
+ <value>Restores 4{*ICON_SHANK_01*}. Created by cooking raw beef in a furnace.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
- <value>Restores 1.5{*ICON_SHANK_01*}, or can be cooked in a furnace.</value>
+ <value>Restores 1.5{*ICON_SHANK_01*}, or can be cooked in a furnace.</value>
</data>
<data name="IDS_DESC_PORKCHOP_COOKED">
- <value>Restores 4{*ICON_SHANK_01*}. Created by cooking a raw porkchop in a furnace.</value>
+ <value>Restores 4{*ICON_SHANK_01*}. Created by cooking a raw porkchop in a furnace.</value>
</data>
<data name="IDS_DESC_FISH_RAW">
- <value>Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace. Can be fed to an Ocelot to tame it.</value>
+ <value>Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace. Can be fed to an Ocelot to tame it.</value>
</data>
<data name="IDS_DESC_FISH_COOKED">
- <value>Restores 2.5{*ICON_SHANK_01*}. Created by cooking a raw fish in a furnace.</value>
+ <value>Restores 2.5{*ICON_SHANK_01*}. Created by cooking a raw fish in a furnace.</value>
</data>
<data name="IDS_DESC_APPLE">
- <value>Restores 2{*ICON_SHANK_01*}, and can be crafted into a golden apple.</value>
+ <value>Restores 2{*ICON_SHANK_01*}, and can be crafted into a golden apple.</value>
</data>
<data name="IDS_DESC_GOLDENAPPLE">
- <value>Restores 2{*ICON_SHANK_01*}, and regenerates health for 4 seconds. Crafted from an apple and gold nuggets.</value>
+ <value>Restores 2{*ICON_SHANK_01*}, and regenerates health for 4 seconds. Crafted from an apple and gold nuggets.</value>
</data>
<data name="IDS_DESC_ROTTEN_FLESH">
- <value>Restores 2{*ICON_SHANK_01*}. Eating this can cause you to be poisoned.</value>
+ <value>Restores 2{*ICON_SHANK_01*}. Eating this can cause you to be poisoned.</value>
</data>
<data name="IDS_DESC_SUGAR">
- <value>Used in the cake recipe, and as an ingredient for brewing potions.</value>
+ <value>Used in the cake recipe, and as an ingredient for brewing potions.</value>
</data>
<data name="IDS_DESC_LEVER">
- <value>Used to send an electrical charge by being turned on or off. Stays in the on or off state until pressed again.</value>
+ <value>Used to send an electrical charge by being turned on or off. Stays in the on or off state until pressed again.</value>
</data>
<data name="IDS_DESC_REDSTONETORCH">
- <value>Constantly sends an electrical charge, or can be used as a receiver/transmitter when connected to the side of a block.
+ <value>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.</value>
</data>
<data name="IDS_DESC_REDSTONEREPEATER">
- <value>Used in Redstone circuits as repeater, a delayer, and/or a diode.</value>
+ <value>Used in Redstone circuits as repeater, a delayer, and/or a diode.</value>
</data>
<data name="IDS_DESC_BUTTON">
- <value>Used to send an electrical charge by being pressed. Stays activated for approximately a second before shutting off again.</value>
+ <value>Used to send an electrical charge by being pressed. Stays activated for approximately a second before shutting off again.</value>
</data>
<data name="IDS_DESC_DISPENSER">
- <value>Used to hold and shoot out items in a random order when given a Redstone charge.</value>
+ <value>Used to hold and shoot out items in a random order when given a Redstone charge.</value>
</data>
<data name="IDS_DESC_NOTEBLOCK">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_RAIL">
- <value>Used to guide minecarts.</value>
+ <value>Used to guide minecarts.</value>
</data>
<data name="IDS_DESC_POWEREDRAIL">
- <value>When powered, accelerates minecarts that pass over it. When unpowered, causes minecarts to stop on it.</value>
+ <value>When powered, accelerates minecarts that pass over it. When unpowered, causes minecarts to stop on it.</value>
</data>
<data name="IDS_DESC_DETECTORRAIL">
- <value>Functions like a Pressure Plate (sends a Redstone signal when powered) but can only be activated by a minecart.</value>
+ <value>Functions like a Pressure Plate (sends a Redstone signal when powered) but can only be activated by a Minecart.</value>
</data>
<data name="IDS_DESC_MINECART">
- <value>Used to transport you, an animal, or a monster along rails.</value>
+ <value>Used to transport you, an animal, or a monster along rails.</value>
</data>
<data name="IDS_DESC_MINECARTWITHCHEST">
- <value>Used to transport goods along rails.</value>
+ <value>Used to transport goods along rails.</value>
</data>
<data name="IDS_DESC_MINECARTWITHFURNACE">
- <value>Will move along rails and can push other minecarts when coal is put in it.</value>
+ <value>Will move along rails and can push other minecarts when coal is put in it.</value>
</data>
<data name="IDS_DESC_BOAT">
- <value>Used to travel in water more quickly than swimming.</value>
+ <value>Used to travel in water more quickly than swimming.</value>
</data>
<data name="IDS_DESC_WOOL">
- <value>Collected from sheep, and can be colored with dyes.</value>
+ <value>Collected from sheep, and can be colored with dyes.</value>
</data>
<data name="IDS_DESC_WOOLSTRING">
- <value>Used as a building material and can be colored with dyes. This recipe is not recommended because Wool can be easily obtained from Sheep.</value>
+ <value>Used as a building material and can be colored with dyes. This recipe is not recommended because Wool can be easily obtained from Sheep.</value>
</data>
<data name="IDS_DESC_DYE_BLACK">
- <value>Used as a dye to create black wool.</value>
+ <value>Used as a dye to create black wool.</value>
</data>
<data name="IDS_DESC_DYE_GREEN">
- <value>Used as a dye to create green wool.</value>
+ <value>Used as a dye to create green wool.</value>
</data>
<data name="IDS_DESC_DYE_BROWN">
- <value>Used as a dye to create brown wool, as an ingredient in cookies, or to grow Cocoa Pods.</value>
+ <value>Used as a dye to create brown wool, as an ingredient in cookies, or to grow Cocoa Pods.</value>
</data>
<data name="IDS_DESC_DYE_SILVER">
- <value>Used as a dye to create silver wool.</value>
+ <value>Used as a dye to create silver wool.</value>
</data>
<data name="IDS_DESC_DYE_YELLOW">
- <value>Used as a dye to create yellow wool.</value>
+ <value>Used as a dye to create yellow wool.</value>
</data>
<data name="IDS_DESC_DYE_RED">
- <value>Used as a dye to create red wool.</value>
+ <value>Used as a dye to create red wool.</value>
</data>
<data name="IDS_DESC_DYE_WHITE">
- <value>Used to instantly grow crops, trees, tall grass, huge mushrooms and flowers, and can be used in dye recipes.</value>
+ <value>Used to instantly grow crops, trees, tall grass, huge mushrooms and flowers, and can be used in dye recipes.</value>
</data>
<data name="IDS_DESC_DYE_PINK">
- <value>Used as a dye to create pink wool.</value>
+ <value>Used as a dye to create pink wool.</value>
</data>
<data name="IDS_DESC_DYE_ORANGE">
- <value>Used as a dye to create orange wool.</value>
+ <value>Used as a dye to create orange wool.</value>
</data>
<data name="IDS_DESC_DYE_LIME">
- <value>Used as a dye to create lime wool.</value>
+ <value>Used as a dye to create lime wool.</value>
</data>
<data name="IDS_DESC_DYE_GRAY">
- <value>Used as a dye to create gray wool.</value>
+ <value>Used as a dye to create gray wool.</value>
</data>
<data name="IDS_DESC_DYE_LIGHTGRAY">
- <value>Used as a dye to create light gray wool.
+ <value>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.)</value>
</data>
<data name="IDS_DESC_DYE_LIGHTBLUE">
- <value>Used as a dye to create light blue wool.</value>
+ <value>Used as a dye to create light blue wool.</value>
</data>
<data name="IDS_DESC_DYE_CYAN">
- <value>Used as a dye to create cyan wool.</value>
+ <value>Used as a dye to create cyan wool.</value>
</data>
<data name="IDS_DESC_DYE_PURPLE">
- <value>Used as a dye to create purple wool.</value>
+ <value>Used as a dye to create purple wool.</value>
</data>
<data name="IDS_DESC_DYE_MAGENTA">
- <value>Used as a dye to create magenta wool.</value>
+ <value>Used as a dye to create magenta wool.</value>
</data>
<data name="IDS_DESC_DYE_BLUE">
- <value>Used as dye to create Blue Wool.</value>
+ <value>Used as dye to create Blue Wool.</value>
</data>
<data name="IDS_DESC_JUKEBOX">
- <value>Plays Music Discs.</value>
+ <value>Plays Music Discs.</value>
</data>
<data name="IDS_DESC_DIAMONDS">
- <value>Use these to create very strong tools, weapons or armor.</value>
+ <value>Use these to create very strong tools, weapons or armor.</value>
</data>
<data name="IDS_DESC_JACKOLANTERN">
- <value>Used to create brighter light than torches. Melts snow/ice and can be used underwater.</value>
+ <value>Used to create brighter light than torches. Melts snow/ice and can be used underwater.</value>
</data>
<data name="IDS_DESC_PAPER">
- <value>Used to create books and maps.</value>
+ <value>Used to create books and maps.</value>
</data>
<data name="IDS_DESC_BOOK">
- <value>Can be used to create a bookshelves or enchanted to make Enchanted Books.</value>
+ <value>Can be used to create bookshelves or enchanted to make Enchanted Books.</value>
</data>
<data name="IDS_DESC_BOOKSHELF">
- <value>Allows the creation of more powerful enchantments when placed around the Enchantment Table.</value>
+ <value>Allows the creation of more powerful enchantments when placed around the Enchantment Table.</value>
</data>
<data name="IDS_DESC_PICTURE">
- <value>Used as decoration.</value>
+ <value>Used as decoration.</value>
</data>
<data name="IDS_DESC_ORE_GOLD">
- <value>Can be mined with an iron pickaxe or better, then smelted in a furnace to produce gold ingots.</value>
+ <value>Can be mined with an iron pickaxe or better, then smelted in a furnace to produce gold ingots.</value>
</data>
<data name="IDS_DESC_ORE_IRON">
- <value>Can be mined with a stone pickaxe or better, then smelted in a furnace to produce iron ingots.</value>
+ <value>Can be mined with a stone pickaxe or better, then smelted in a furnace to produce iron ingots.</value>
</data>
<data name="IDS_DESC_ORE_COAL">
- <value>Can be mined with a pickaxe to collect coal.</value>
+ <value>Can be mined with a pickaxe to collect coal.</value>
</data>
<data name="IDS_DESC_ORE_LAPIS">
- <value>Can be mined with a stone pickaxe or better to collect lapis lazuli.</value>
+ <value>Can be mined with a stone pickaxe or better to collect lapis lazuli.</value>
</data>
<data name="IDS_DESC_ORE_DIAMOND">
- <value>Can be mined with an iron pickaxe or better to collect diamonds.</value>
+ <value>Can be mined with an iron pickaxe or better to collect diamonds.</value>
</data>
<data name="IDS_DESC_ORE_REDSTONE">
- <value>Can be mined with an iron pickaxe or better to collect redstone dust.</value>
+ <value>Can be mined with an iron pickaxe or better to collect redstone dust.</value>
</data>
<data name="IDS_DESC_STONE">
- <value>Can be mined with a pickaxe to collect cobblestone.</value>
+ <value>Can be mined with a pickaxe to collect cobblestone.</value>
</data>
<data name="IDS_DESC_DIRT">
- <value>Collected using a shovel. Can be used for construction.</value>
+ <value>Collected using a shovel. Can be used for construction.</value>
</data>
<data name="IDS_DESC_SAPLING">
- <value>Can be planted and it will eventually grow into a tree.</value>
+ <value>Can be planted and it will eventually grow into a tree.</value>
</data>
<data name="IDS_DESC_BEDROCK">
- <value>This cannot be broken.</value>
+ <value>This cannot be broken.</value>
</data>
<data name="IDS_DESC_LAVA">
- <value>Sets fire to anything that touches it. Can be collected in a bucket.</value>
+ <value>Sets fire to anything that touches it. Can be collected in a bucket.</value>
</data>
<data name="IDS_DESC_SAND">
- <value>Collected using a shovel. Can be smelted into glass using the furnace. Is affected by gravity if there is no other tile underneath it.</value>
+ <value>Collected using a shovel. Can be smelted into glass using the furnace. Is affected by gravity if there is no other tile underneath it.</value>
</data>
<data name="IDS_DESC_GRAVEL">
- <value>Collected using a shovel. Sometimes produces flint when dug up. Is affected by gravity if there is no other tile underneath it.</value>
+ <value>Collected using a shovel. Sometimes produces flint when dug up. Is affected by gravity if there is no other tile underneath it.</value>
</data>
<data name="IDS_DESC_LOG">
- <value>Chopped using an axe, and can be crafted into planks or used as a fuel.</value>
+ <value>Chopped using an axe, and can be crafted into planks or used as a fuel.</value>
</data>
<data name="IDS_DESC_GLASS">
- <value>Created in a furnace by smelting sand. Can be used for construction, but will break if you try to mine it.</value>
+ <value>Created in a furnace by smelting sand. Can be used for construction, but will break if you try to mine it.</value>
</data>
<data name="IDS_DESC_STONE_BRICK">
- <value>Mined from stone using a pickaxe. Can be used to construct a furnace or stone tools.</value>
+ <value>Mined from stone using a pickaxe. Can be used to construct a furnace or stone tools.</value>
</data>
<data name="IDS_DESC_BRICK">
- <value>Baked from clay in a furnace.</value>
+ <value>Baked from clay in a furnace.</value>
</data>
<data name="IDS_DESC_CLAY">
- <value>Can be baked into bricks in a furnace.</value>
+ <value>Can be baked into bricks in a furnace.</value>
</data>
<data name="IDS_DESC_CLAY_TILE">
- <value>When broken drops clay balls which can be baked into bricks in a furnace.</value>
+ <value>When broken drops clay balls which can be baked into bricks in a furnace.</value>
</data>
<data name="IDS_DESC_SNOW">
- <value>A compact way to store snowballs.</value>
+ <value>A compact way to store snowballs.</value>
</data>
<data name="IDS_DESC_TOP_SNOW">
- <value>Can be dug with a shovel to create snowballs.</value>
+ <value>Can be dug with a shovel to create snowballs.</value>
</data>
<data name="IDS_DESC_TALL_GRASS">
- <value>Sometimes produces wheat seeds when broken.</value>
+ <value>Sometimes produces wheat seeds when broken.</value>
</data>
<data name="IDS_DESC_FLOWER">
- <value>Can be crafted into a dye.</value>
+ <value>Can be crafted into a dye.</value>
</data>
<data name="IDS_DESC_MUSHROOM">
- <value>Can be crafted with a bowl to make stew.</value>
+ <value>Can be crafted with a bowl to make stew.</value>
</data>
<data name="IDS_DESC_OBSIDIAN">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_MOB_SPAWNER">
- <value>Spawns monsters into the world.</value>
+ <value>Spawns monsters into the world.</value>
</data>
<data name="IDS_DESC_REDSTONE_DUST">
- <value>Is placed on the ground to carry an electrical charge. When brewed with a potion it will increase the duration of the effect.</value>
+ <value>Is placed on the ground to carry an electrical charge. When brewed with a potion it will increase the duration of the effect.</value>
</data>
<data name="IDS_DESC_CROPS">
- <value>When fully grown, crops can be harvested to collect wheat.</value>
+ <value>When fully grown, crops can be harvested to collect wheat.</value>
</data>
<data name="IDS_DESC_FARMLAND">
- <value>Ground that has been prepared ready to plant seeds.</value>
+ <value>Ground that has been prepared ready to plant seeds.</value>
</data>
<data name="IDS_DESC_CACTUS">
- <value>Can be cooked in a furnace to create a green dye.</value>
+ <value>Can be cooked in a furnace to create a green dye.</value>
</data>
<data name="IDS_DESC_REEDS">
- <value>Can be crafted to create sugar.</value>
+ <value>Can be crafted to create sugar.</value>
</data>
<data name="IDS_DESC_PUMPKIN">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_HELL_ROCK">
- <value>Burns forever if set alight.</value>
+ <value>Burns forever if set alight.</value>
</data>
<data name="IDS_DESC_HELL_SAND">
- <value>Slows the movement of anything walking over it.</value>
+ <value>Slows the movement of anything walking over it.</value>
</data>
<data name="IDS_DESC_PORTAL">
- <value>Standing in the portal allows you to pass between the Overworld and the Nether.</value>
+ <value>Standing in the portal allows you to pass between the Overworld and the Nether.</value>
</data>
<data name="IDS_DESC_COAL">
- <value>Used as a fuel in a furnace, or crafted to make a torch.</value>
+ <value>Used as a fuel in a furnace, or crafted to make a torch.</value>
</data>
<data name="IDS_DESC_STRING">
- <value>Collected by killing a spider, and can be crafted into a Bow or Fishing Rod, or placed on the ground to create Tripwire.</value>
+ <value>Collected by killing a spider, and can be crafted into a Bow or Fishing Rod, or placed on the ground to create Tripwire.</value>
</data>
<data name="IDS_DESC_FEATHER">
- <value>Collected by killing a chicken, and can be crafted into an arrow.</value>
+ <value>Collected by killing a chicken, and can be crafted into an arrow.</value>
</data>
<data name="IDS_DESC_SULPHUR">
- <value>Collected by killing a Creeper, and can be crafted into TNT or used as an ingredient for brewing potions.</value>
+ <value>Collected by killing a Creeper, and can be crafted into TNT or used as an ingredient for brewing potions.</value>
</data>
<data name="IDS_DESC_WHEAT_SEEDS">
- <value>Can be planted in farmland to grow crops. Make sure there's enough light for the seeds to grow!</value>
+ <value>Can be planted in farmland to grow crops. Make sure there's enough light for the seeds to grow!</value>
</data>
<data name="IDS_DESC_WHEAT">
- <value>Harvested from crops, and can be used to craft food items.</value>
+ <value>Harvested from crops, and can be used to craft food items.</value>
</data>
<data name="IDS_DESC_FLINT">
- <value>Collected by digging gravel, and can be used to craft a flint and steel.</value>
+ <value>Collected by digging gravel, and can be used to craft a flint and steel.</value>
</data>
<data name="IDS_DESC_SADDLE">
- <value>When used on a pig it allows you to ride the pig. The pig can then be steered using a Carrot on a Stick.</value>
+ <value>When used on a pig it allows you to ride the pig. The pig can then be steered using a Carrot on a Stick.</value>
</data>
<data name="IDS_DESC_SNOWBALL">
- <value>Collected by digging snow, and can be thrown.</value>
+ <value>Collected by digging snow, and can be thrown.</value>
</data>
<data name="IDS_DESC_LEATHER">
- <value>Collected by killing a cow, and can be crafted into armor or used to make Books.</value>
+ <value>Collected by killing a cow, and can be crafted into armor or used to make Books.</value>
</data>
<data name="IDS_DESC_SLIMEBALL">
- <value>Collected by killing a Slime, and used as an ingredient for brewing potions or crafted to make Sticky Pistons.</value>
+ <value>Collected by killing a Slime, and used as an ingredient for brewing potions or crafted to make Sticky Pistons.</value>
</data>
<data name="IDS_DESC_EGG">
- <value>Dropped randomly by chickens, and can be crafted into food items.</value>
+ <value>Dropped randomly by chickens, and can be crafted into food items.</value>
</data>
<data name="IDS_DESC_YELLOW_DUST">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_BONE">
- <value>Collected by killing a Skeleton. Can be crafted into bone meal. Can be fed to a wolf to tame it.</value>
+ <value>Collected by killing a Skeleton. Can be crafted into bone meal. Can be fed to a wolf to tame it.</value>
</data>
<data name="IDS_DESC_RECORD">
- <value>Collected by getting a Skeleton to kill a Creeper. Can be played in a jukebox.</value>
+ <value>Collected by getting a Skeleton to kill a Creeper. Can be played in a jukebox.</value>
</data>
<data name="IDS_DESC_WATER">
- <value>Extinguishes fire and helps crops grow. Can be collected in a bucket.</value>
+ <value>Extinguishes fire and helps crops grow. Can be collected in a bucket.</value>
</data>
<data name="IDS_DESC_LEAVES">
- <value>When broken sometimes drops a sapling which can then be replanted to grow into a tree.</value>
+ <value>When broken sometimes drops a sapling which can then be replanted to grow into a tree.</value>
</data>
<data name="IDS_DESC_MOSS_STONE">
- <value>Found in dungeons, can be used for construction and decoration.</value>
+ <value>Found in dungeons, can be used for construction and decoration.</value>
</data>
<data name="IDS_DESC_SHEARS">
- <value>Used to obtain wool from sheep and harvest leaf blocks.</value>
+ <value>Used to obtain wool from sheep and harvest leaf blocks.</value>
</data>
<data name="IDS_DESC_PISTON">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_STICKY_PISTON">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_STONE_BRICK_SMOOTH">
- <value>Made from Stone blocks, and commonly found in Strongholds.</value>
+ <value>Made from Stone blocks, and commonly found in Strongholds.</value>
</data>
<data name="IDS_DESC_IRON_FENCE">
- <value>Used as a barrier, similar to fences.</value>
+ <value>Used as a barrier, similar to fences.</value>
</data>
<data name="IDS_DESC_FENCE_GATE">
- <value>Similar to a door, but used primarily with fences.</value>
+ <value>Similar to a door, but used primarily with fences.</value>
</data>
<data name="IDS_DESC_MELON_BLOCK">
- <value>Can be crafted from Melon Slices.</value>
+ <value>Can be crafted from Melon Slices.</value>
</data>
<data name="IDS_DESC_THIN_GLASS">
- <value>Transparent blocks that can be used as an alternative to Glass Blocks.</value>
+ <value>Transparent blocks that can be used as an alternative to Glass Blocks.</value>
</data>
<data name="IDS_DESC_PUMPKIN_SEEDS">
- <value>Can be planted to grow pumpkins.</value>
+ <value>Can be planted to grow pumpkins.</value>
</data>
<data name="IDS_DESC_MELON_SEEDS">
- <value>Can be planted to grow melons.</value>
+ <value>Can be planted to grow melons.</value>
</data>
<data name="IDS_DESC_ENDER_PEARL">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_GRASS">
- <value>A block of dirt with grass growing on top. Collected using a shovel. Can be used for construction.</value>
+ <value>A block of dirt with grass growing on top. Collected using a shovel. Can be used for construction.</value>
</data>
<data name="IDS_DESC_SPONGE">
- <value>Can be used for construction and decoration.</value>
+ <value>Can be used for construction and decoration.</value>
</data>
<data name="IDS_DESC_WEB">
- <value>Slows movement when walking through it. Can be destroyed using shears to collect string.</value>
+ <value>Slows movement when walking through it. Can be destroyed using shears to collect string.</value>
</data>
<data name="IDS_DESC_STONE_SILVERFISH">
- <value>Spawns a Silverfish when destroyed. May also spawn Silverfish if nearby to another Silverfish being attacked.</value>
+ <value>Spawns a Silverfish when destroyed. May also spawn Silverfish if nearby to another Silverfish being attacked.</value>
</data>
<data name="IDS_DESC_VINE">
- <value>Grows over time when placed. Can be collected using shears. Can be climbed like a ladder.</value>
+ <value>Grows over time when placed. Can be collected using shears. Can be climbed like a ladder.</value>
</data>
<data name="IDS_DESC_ICE">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_DEAD_BUSH">
- <value>Can be used as decoration.</value>
+ <value>Can be used as decoration.</value>
</data>
<data name="IDS_DESC_BLAZE_ROD">
- <value>Used in potion brewing, and for locating Strongholds. Dropped by Blazes who tend to be found near or in Nether Fortresses.</value>
+ <value>Used in potion brewing, and for locating Strongholds. Dropped by Blazes who tend to be found near or in Nether Fortresses.</value>
</data>
<data name="IDS_DESC_GHAST_TEAR">
- <value>Used in potion brewing. Dropped by Ghasts when they die.</value>
+ <value>Used in potion brewing. Dropped by Ghasts when they die.</value>
</data>
<data name="IDS_DESC_GOLD_NUGGET">
- <value>Dropped by Zombie Pigmen when they die. Zombie Pigmen can be found in the Nether. Used as an ingredient for brewing potions.</value>
+ <value>Dropped by Zombie Pigmen when they die. Zombie Pigmen can be found in the Nether. Used as an ingredient for brewing potions.</value>
</data>
<data name="IDS_DESC_NETHER_STALK_SEEDS">
- <value>Used in potion brewing. This can be found naturally growing in Nether Fortresses. It can also be planted on Soul Sand.</value>
+ <value>Used in potion brewing. This can be found naturally growing in Nether Fortresses. It can also be planted on Soul Sand.</value>
</data>
<data name="IDS_DESC_POTION">
- <value>When used, can have various effects, depending on what it is used on.</value>
+ <value>When used, can have various effects, depending on what it is used on.</value>
</data>
<data name="IDS_DESC_GLASS_BOTTLE">
- <value>Can be filled with water, and used as the starting ingredient for a potion in the Brewing Stand.</value>
+ <value>Can be filled with water, and used as the starting ingredient for a potion in the Brewing Stand.</value>
</data>
<data name="IDS_DESC_SPIDER_EYE">
- <value>This is a poisonous food and brewing item. Dropped when a Spider or Cave Spider is killed by a player.</value>
+ <value>This is a poisonous food and brewing item. Dropped when a Spider or Cave Spider is killed by a player.</value>
</data>
<data name="IDS_DESC_FERMENTED_SPIDER_EYE">
- <value>Used in potion brewing, mainly to create potions with a negative effect.</value>
+ <value>Used in potion brewing, mainly to create potions with a negative effect.</value>
</data>
<data name="IDS_DESC_BLAZE_POWDER">
- <value>Used in potion brewing, or crafted with other items to make Eye of Ender or Magma Cream.</value>
+ <value>Used in potion brewing, or crafted with other items to make Eye of Ender or Magma Cream.</value>
</data>
<data name="IDS_DESC_MAGMA_CREAM">
- <value>Used in potion brewing.</value>
+ <value>Used in potion brewing.</value>
</data>
<data name="IDS_DESC_BREWING_STAND">
- <value>Used for making Potions and Splash Potions.</value>
+ <value>Used for making Potions and Splash Potions.</value>
</data>
<data name="IDS_DESC_CAULDRON">
- <value>Filled with water by rain or with a bucket of water, and can then be used to fill Glass Bottles with water.</value>
+ <value>Filled with water by rain or with a bucket of water, and can then be used to fill Glass Bottles with water.</value>
</data>
<data name="IDS_DESC_EYE_OF_ENDER">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_DESC_SPECKLED_MELON">
- <value>Used in potion brewing.</value>
+ <value>Used in potion brewing.</value>
</data>
<data name="IDS_DESC_MYCEL">
- <value>Similar to Grass Blocks, but very good for growing mushrooms on.</value>
+ <value>Similar to Grass Blocks, but very good for growing mushrooms on.</value>
</data>
<data name="IDS_DESC_WATERLILY">
- <value>Floats on water, and can be walked on.</value>
+ <value>Floats on water, and can be walked on.</value>
</data>
<data name="IDS_DESC_NETHERBRICK">
- <value>Used to build Nether Fortresses. Immune to Ghast's fireballs.</value>
+ <value>Used to build Nether Fortresses. Immune to Ghast's fireballs.</value>
</data>
<data name="IDS_DESC_NETHERFENCE">
- <value>Used in Nether Fortresses.</value>
+ <value>Used in Nether Fortresses.</value>
</data>
<data name="IDS_DESC_NETHERSTALK">
- <value>Found in Nether Fortresses, and will drop Nether Wart when broken.</value>
+ <value>Found in Nether Fortresses, and will drop Nether Wart when broken.</value>
</data>
<data name="IDS_DESC_ENCHANTMENTTABLE">
- <value>This allows players to enchant Swords, Pickaxes, Axes, Shovels, Bows and Armor, using the player's Experience Points.</value>
+ <value>This allows players to enchant Swords, Pickaxes, Axes, Shovels, Bows and Armor, using the player's Experience Points.</value>
</data>
<data name="IDS_DESC_END_PORTAL">
- <value>This can be activated using twelve Eye of Ender, and will allow the player to travel to The End dimension.</value>
+ <value>This can be activated using twelve Eye of Ender, and will allow the player to travel to The End dimension.</value>
</data>
<data name="IDS_DESC_ENDPORTALFRAME">
- <value>Used to form an End Portal.</value>
+ <value>Used to form an End Portal.</value>
</data>
<data name="IDS_DESC_WHITESTONE">
- <value>A block type found in The End. It has a very high blast resistance, so is useful for building with.</value>
+ <value>A block type found in The End. It has a very high blast resistance, so is useful for building with.</value>
</data>
<data name="IDS_DESC_DRAGONEGG">
- <value>This block is created by the defeat of the Dragon in The End.</value>
+ <value>This block is created by the defeat of the Dragon in The End.</value>
</data>
<data name="IDS_DESC_EXP_BOTTLE">
- <value>When thrown, it drops Experience Orbs which increase your experience points when collected.</value>
+ <value>When thrown, it drops Experience Orbs which increase your experience points when collected.</value>
</data>
<data name="IDS_DESC_FIREBALL">
- <value>Useful for setting things on fire, or for indiscriminately starting fires when fired from a Dispenser.</value>
+ <value>Useful for setting things on fire, or for indiscriminately starting fires when fired from a Dispenser.</value>
</data>
<data name="IDS_DESC_ITEMFRAME">
- <value>These are similar to a display case, and will display the item or block placed in it.</value>
+ <value>These are similar to a display case, and will display the item or block placed in it.</value>
</data>
<data name="IDS_DESC_MONSTER_SPAWNER">
- <value>When thrown can spawn a creature of the type indicated.</value>
+ <value>When thrown can spawn a creature of the type indicated.</value>
</data>
- <data name="IDS_DESC_WOODSLAB">
- <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
+ <data name="IDS_DESC_WOODSLAB">
+ <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
</data>
- <data name="IDS_DESC_STONESLAB">
- <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
+ <data name="IDS_DESC_STONESLAB">
+ <value>Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.</value>
</data>
- <data name="IDS_DESC_ITEM_NETHERBRICK">
- <value>Created by smelting Netherrack in a furnace. Can be crafted into Nether Brick blocks.</value>
+ <data name="IDS_DESC_ITEM_NETHERBRICK">
+ <value>Created by smelting Netherrack in a furnace. Can be crafted into Nether Brick blocks.</value>
</data>
- <data name="IDS_DESC_REDSTONE_LIGHT">
- <value>When powered they emit light.</value>
+ <data name="IDS_DESC_REDSTONE_LIGHT">
+ <value>When powered they emit light.</value>
</data>
- <data name="IDS_DESC_COCOA">
- <value>Can be farmed to collect Cocoa Beans.</value>
+ <data name="IDS_DESC_COCOA">
+ <value>Can be farmed to collect Cocoa Beans.</value>
</data>
<data name="IDS_DESC_SKULL">
- <value>Mob Heads can be placed as a decoration, or worn as a mask in the helmet slot.</value>
- </data>
- <data name="IDS_SQUID">
- <value>Squid</value>
- </data>
- <data name="IDS_DESC_SQUID">
- <value>Drops ink sacs when killed.</value>
- </data>
- <data name="IDS_COW">
- <value>Cow</value>
- </data>
- <data name="IDS_DESC_COW">
- <value>Drops leather when killed. Can also be milked with a bucket.</value>
- </data>
- <data name="IDS_SHEEP">
- <value>Sheep</value>
- </data>
- <data name="IDS_DESC_SHEEP">
- <value>Drops wool when sheared (if it has not already been sheared). Can be dyed to make its wool a different color.</value>
- </data>
- <data name="IDS_CHICKEN">
- <value>Chicken</value>
- </data>
- <data name="IDS_DESC_CHICKEN">
- <value>Drops feathers when killed, and also randomly lays eggs.</value>
- </data>
- <data name="IDS_PIG">
- <value>Pig</value>
- </data>
- <data name="IDS_DESC_PIG">
- <value>Drops porkchops when killed. Can be ridden by using a saddle.</value>
- </data>
- <data name="IDS_WOLF">
- <value>Wolf</value>
- </data>
- <data name="IDS_DESC_WOLF">
- <value>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.</value>
- </data>
- <data name="IDS_CREEPER">
- <value>Creeper</value>
- </data>
- <data name="IDS_DESC_CREEPER">
- <value>Explodes if you get too close!</value>
- </data>
- <data name="IDS_SKELETON">
- <value>Skeleton</value>
- </data>
- <data name="IDS_DESC_SKELETON">
- <value>Fires arrows at you. Drops arrows when killed.</value>
- </data>
- <data name="IDS_SPIDER">
- <value>Spider</value>
- </data>
- <data name="IDS_DESC_SPIDER">
- <value>Attacks you when you are close to it. Can climb walls. Drops string when killed.</value>
- </data>
- <data name="IDS_ZOMBIE">
- <value>Zombie</value>
- </data>
- <data name="IDS_DESC_ZOMBIE">
- <value>Attacks you when you are close to it.</value>
- </data>
- <data name="IDS_PIGZOMBIE">
- <value>Zombie Pigman</value>
- </data>
- <data name="IDS_DESC_PIGZOMBIE">
- <value>Initially docile, but will attack in groups if you attack one.</value>
- </data>
- <data name="IDS_GHAST">
- <value>Ghast</value>
- </data>
- <data name="IDS_DESC_GHAST">
- <value>Fires flaming balls at you that explode on contact.</value>
- </data>
- <data name="IDS_SLIME">
- <value>Slime</value>
- </data>
- <data name="IDS_DESC_SLIME">
- <value>Split into smaller Slimes when damaged.</value>
- </data>
- <data name="IDS_ENDERMAN">
- <value>Enderman</value>
- </data>
- <data name="IDS_DESC_ENDERMAN">
- <value>Will attack you if you look at it. Can also move blocks around.</value>
- </data>
- <data name="IDS_SILVERFISH">
- <value>Silverfish</value>
- </data>
- <data name="IDS_DESC_SILVERFISH">
- <value>Attracts nearby hidden Silverfish when attacked. Hides in stone blocks.</value>
- </data>
- <data name="IDS_CAVE_SPIDER">
- <value>Cave Spider</value>
- </data>
- <data name="IDS_DESC_CAVE_SPIDER">
- <value>Has a venomous bite.</value>
- </data>
- <data name="IDS_MUSHROOM_COW">
- <value>Mooshroom</value>
- </data>
- <data name="IDS_DESC_MUSHROOM_COW">
- <value>Makes mushroom stew when used with a bowl. Drops mushrooms and becomes a normal cow when sheared.</value>
- </data>
- <data name="IDS_SNOWMAN">
- <value>Snow Golem</value>
- </data>
- <data name="IDS_DESC_SNOWMAN">
- <value>The Snow Golem can be created by players using snow blocks and a pumpkin. They will throw snowballs at their creators enemies.</value>
- </data>
- <data name="IDS_ENDERDRAGON">
- <value>Ender Dragon</value>
- </data>
- <data name="IDS_DESC_ENDERDRAGON">
- <value>This is a large black dragon found in The End.</value>
- </data>
- <data name="IDS_BLAZE">
- <value>Blaze</value>
- </data>
- <data name="IDS_DESC_BLAZE">
- <value>These are enemies found in the Nether, mostly inside Nether Fortresses. They will drop Blaze Rods when killed.</value>
- </data>
- <data name="IDS_LAVA_SLIME">
- <value>Magma Cube</value>
- </data>
- <data name="IDS_DESC_LAVA_SLIME">
- <value>These can be found in The Nether. Similar to Slimes, they will break up into smaller versions when killed.</value>
- </data>
- <data name="IDS_VILLAGER">
- <value>Villager</value>
+ <value>Mob Heads can be placed as a decoration, or worn as a mask in the helmet slot.</value>
</data>
+ <data name="IDS_DESC_COMMAND_BLOCK">
+ <value>Used to execute commands.</value>
+ </data>
+ <data name="IDS_DESC_BEACON">
+ <value>Projects a beam of light into the sky and can provide Status Effects to nearby players.</value>
+ </data>
+ <data name="IDS_DESC_CHEST_TRAP">
+ <value>Stores blocks and items inside. Place two chest side by side to create a larger chest with double capacity. The trapped chest also creates a Redstone charge when opened.</value>
+ </data>
+ <data name="IDS_DESC_WEIGHTED_PLATE_LIGHT">
+ <value>Provides a Redstone charge. The charge will be stronger if more items are on the plate.</value>
+ </data>
+ <data name="IDS_DESC_WEIGHTED_PLATE_HEAVY">
+ <value>Provides a Redstone charge. The charge will be stronger if more items are on the plate. Requires more weight than the light plate.</value>
+ </data>
+ <data name="IDS_DESC_REDSTONE_BLOCK">
+ <value>Used as a redstone power source. Can be crafted back into Redstone.</value>
+ </data>
+ <data name="IDS_DESC_HOPPER">
+ <value>Used to catch items or to transfer items into and out of containers.</value>
+ </data>
+ <data name="IDS_DESC_ACTIVATOR_RAIL">
+ <value>A type of rail that can enable or disable Minecarts with Hoppers and trigger Minecarts with TNT.</value>
+ </data>
+ <data name="IDS_DESC_DROPPER">
+ <value>Used to hold and drop items, or push items into another container, when given a Redstone charge.</value>
+ </data>
+ <data name="IDS_DESC_STAINED_CLAY">
+ <value>Colorful blocks crafted by dyeing Hardened clay.</value>
+ </data>
+ <data name="IDS_DESC_HAY">
+ <value>Can be fed to Horses, Donkeys or Mules to heal up to 10 Hearts. Speeds up the growth of foals.</value>
+ </data>
+ <data name="IDS_DESC_HARDENED_CLAY">
+ <value>Created by smelting Clay in a furnace.</value>
+ </data>
+ <data name="IDS_DESC_STAINED_GLASS">
+ <value>Crafted from glass and a dye.</value>
+ </data>
+ <data name="IDS_DESC_STAINED_GLASS_PANE">
+ <value>Crafted from Stained Glass</value>
+ </data>
+ <data name="IDS_DESC_COAL_BLOCK">
+ <value>A compact way of storing Coal. Can be used as fuel in a Furnace.</value>
+ </data>
+
+ <data name="IDS_SQUID">
+ <value>Squid</value>
+ </data>
+ <data name="IDS_DESC_SQUID">
+ <value>Drops ink sacs when killed.</value>
+ </data>
+ <data name="IDS_COW">
+ <value>Cow</value>
+ </data>
+ <data name="IDS_DESC_COW">
+ <value>Drops leather when killed. Can also be milked with a bucket.</value>
+ </data>
+ <data name="IDS_SHEEP">
+ <value>Sheep</value>
+ </data>
+ <data name="IDS_DESC_SHEEP">
+ <value>Drops wool when sheared (if it has not already been sheared). Can be dyed to make its wool a different color.</value>
+ </data>
+ <data name="IDS_CHICKEN">
+ <value>Chicken</value>
+ </data>
+ <data name="IDS_DESC_CHICKEN">
+ <value>Drops feathers when killed, and also randomly lays eggs.</value>
+ </data>
+ <data name="IDS_PIG">
+ <value>Pig</value>
+ </data>
+ <data name="IDS_DESC_PIG">
+ <value>Drops porkchops when killed. Can be ridden by using a saddle.</value>
+ </data>
+ <data name="IDS_WOLF">
+ <value>Wolf</value>
+ </data>
+ <data name="IDS_DESC_WOLF">
+ <value>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.</value>
+ </data>
+ <data name="IDS_CREEPER">
+ <value>Creeper</value>
+ </data>
+ <data name="IDS_DESC_CREEPER">
+ <value>Explodes if you get too close!</value>
+ </data>
+ <data name="IDS_SKELETON">
+ <value>Skeleton</value>
+ </data>
+ <data name="IDS_DESC_SKELETON">
+ <value>Fires arrows at you. Drops arrows when killed.</value>
+ </data>
+ <data name="IDS_SPIDER">
+ <value>Spider</value>
+ </data>
+ <data name="IDS_DESC_SPIDER">
+ <value>Attacks you when you are close to it. Can climb walls. Drops string when killed.</value>
+ </data>
+ <data name="IDS_ZOMBIE">
+ <value>Zombie</value>
+ </data>
+ <data name="IDS_DESC_ZOMBIE">
+ <value>Attacks you when you are close to it.</value>
+ </data>
+ <data name="IDS_PIGZOMBIE">
+ <value>Zombie Pigman</value>
+ </data>
+ <data name="IDS_DESC_PIGZOMBIE">
+ <value>Initially docile, but will attack in groups if you attack one.</value>
+ </data>
+ <data name="IDS_GHAST">
+ <value>Ghast</value>
+ </data>
+ <data name="IDS_DESC_GHAST">
+ <value>Fires flaming balls at you that explode on contact.</value>
+ </data>
+ <data name="IDS_SLIME">
+ <value>Slime</value>
+ </data>
+ <data name="IDS_DESC_SLIME">
+ <value>Split into smaller Slimes when damaged.</value>
+ </data>
+ <data name="IDS_ENDERMAN">
+ <value>Enderman</value>
+ </data>
+ <data name="IDS_DESC_ENDERMAN">
+ <value>Will attack you if you look at it. Can also move blocks around.</value>
+ </data>
+ <data name="IDS_SILVERFISH">
+ <value>Silverfish</value>
+ </data>
+ <data name="IDS_DESC_SILVERFISH">
+ <value>Attracts nearby hidden Silverfish when attacked. Hides in stone blocks.</value>
+ </data>
+ <data name="IDS_CAVE_SPIDER">
+ <value>Cave Spider</value>
+ </data>
+ <data name="IDS_DESC_CAVE_SPIDER">
+ <value>Has a venomous bite.</value>
+ </data>
+ <data name="IDS_MUSHROOM_COW">
+ <value>Mooshroom</value>
+ </data>
+ <data name="IDS_DESC_MUSHROOM_COW">
+ <value>Makes mushroom stew when used with a bowl. Drops mushrooms and becomes a normal cow when sheared.</value>
+ </data>
+ <data name="IDS_SNOWMAN">
+ <value>Snow Golem</value>
+ </data>
+ <data name="IDS_DESC_SNOWMAN">
+ <value>The Snow Golem can be created by players using snow blocks and a pumpkin. They will throw snowballs at their creators enemies.</value>
+ </data>
+ <data name="IDS_ENDERDRAGON">
+ <value>Ender Dragon</value>
+ </data>
+ <data name="IDS_DESC_ENDERDRAGON">
+ <value>This is a large black dragon found in The End.</value>
+ </data>
+ <data name="IDS_BLAZE">
+ <value>Blaze</value>
+ </data>
+ <data name="IDS_DESC_BLAZE">
+ <value>These are enemies found in the Nether, mostly inside Nether Fortresses. They will drop Blaze Rods when killed.</value>
+ </data>
+ <data name="IDS_LAVA_SLIME">
+ <value>Magma Cube</value>
+ </data>
+ <data name="IDS_DESC_LAVA_SLIME">
+ <value>These can be found in The Nether. Similar to Slimes, they will break up into smaller versions when killed.</value>
+ </data>
+ <data name="IDS_VILLAGER">
+ <value>Villager</value>
+ </data>
- <data name="IDS_OZELOT">
- <value>Ocelot</value>
- </data>
- <data name="IDS_DESC_OZELOT">
- <value>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.</value>
- </data>
- <data name="IDS_IRONGOLEM">
- <value>Iron Golem</value>
- </data>
- <data name="IDS_DESC_IRONGOLEM">
- <value>Appear in Villages to protect them, and can be created using Iron Blocks and Pumpkins.</value>
- </data>
+ <data name="IDS_OZELOT">
+ <value>Ocelot</value>
+ </data>
+ <data name="IDS_DESC_OZELOT">
+ <value>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.</value>
+ </data>
+ <data name="IDS_IRONGOLEM">
+ <value>Iron Golem</value>
+ </data>
+ <data name="IDS_DESC_IRONGOLEM">
+ <value>Appear in Villages to protect them, and can be created using Iron Blocks and Pumpkins.</value>
+ </data>
+
+ <data name="IDS_BAT">
+ <value>Bat</value>
+ </data>
+ <data name="IDS_DESC_BAT">
+ <value>These flying creatures are found in caverns or other large enclosed spaces.</value>
+ </data>
+ <data name="IDS_WITCH">
+ <value>Witch</value>
+ </data>
+ <data name="IDS_DESC_WITCH">
+ <value>These enemies can be found in swamps and attack you by throwing Potions. They drop Potions when killed.</value>
+ </data>
+ <data name="IDS_HORSE">
+ <value>Horse</value>
+ </data>
+ <data name="IDS_DESC_HORSE">
+ <value>These animals can be tamed and can then be ridden.</value>
+ </data>
+ <data name="IDS_DONKEY">
+ <value>Donkey</value>
+ </data>
+ <data name="IDS_DESC_DONKEY">
+ <value>These animals can be tamed and can then be ridden. They can have a chest attached.</value>
+ </data>
+ <data name="IDS_MULE">
+ <value>Mule</value>
+ </data>
+ <data name="IDS_DESC_MULE">
+ <value>Born when a Horse and a Donkey breed. These animals can be tamed and can then be ridden and carry chests.</value>
+ </data>
+ <data name="IDS_ZOMBIE_HORSE">
+ <value>Zombie Horse</value>
+ </data>
+ <data name="IDS_SKELETON_HORSE">
+ <value>Skeleton Horse</value>
+ </data>
+ <data name="IDS_WITHER">
+ <value>Wither</value>
+ </data>
+ <data name="IDS_DESC_WITHER">
+ <value>These are crafted from Wither Skulls and Soul Sand. They fire exploding skulls at you.</value>
+ </data>

<data name="IDS_CREDITS_EXPLODANIM">
@@ -2006,6 +2208,9 @@ Can also be used for low-level lighting.</value>
<data name="IDS_ITEM_MAP">
<value>Map</value>
</data>
+ <data name="IDS_ITEM_MAP_EMPTY">
+ <value>Empty Map</value>
+ </data>
<data name="IDS_ITEM_RECORD_01">
<value>Music Disc - "13"</value>
</data>
@@ -2159,6 +2364,42 @@ Can also be used for low-level lighting.</value>
<data name="IDS_ITEM_SKULL_CREEPER">
<value>Creeper Head</value>
</data>
+ <data name="IDS_NETHER_STAR">
+ <value>Nether Star</value>
+ </data>
+ <data name="IDS_FIREWORKS">
+ <value>Firework Rocket</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE">
+ <value>Firework Star</value>
+ </data>
+ <data name="IDS_ITEM_COMPARATOR">
+ <value>Redstone Comparator</value>
+ </data>
+ <data name="IDS_ITEM_MINECART_TNT">
+ <value>Minecart with TNT</value>
+ </data>
+ <data name="IDS_ITEM_MINECART_HOPPER">
+ <value>Minecart with Hopper</value>
+ </data>
+ <data name="IDS_ITEM_IRON_HORSE_ARMOR">
+ <value>Iron Horse Armor</value>
+ </data>
+ <data name="IDS_ITEM_GOLD_HORSE_ARMOR">
+ <value>Gold Horse Armor</value>
+ </data>
+ <data name="IDS_ITEM_DIAMOND_HORSE_ARMOR">
+ <value>Diamond Horse Armor</value>
+ </data>
+ <data name="IDS_ITEM_LEAD">
+ <value>Lead</value>
+ </data>
+ <data name="IDS_ITEM_NAME_TAG">
+ <value>Name Tag</value>
+ </data>
+
+
+
<data name="IDS_TILE_STONE">
<value>Stone</value>
</data>
@@ -2183,6 +2424,9 @@ Can also be used for low-level lighting.</value>
<data name="IDS_TILE_JUNGLE_PLANKS">
<value>Jungle Wood Planks</value>
</data>
+ <data name="IDS_TILE_PLANKS">
+ <value>Wood Planks (any type)</value>
+ </data>
<data name="IDS_TILE_SAPLING">
<value>Sapling</value>
</data>
@@ -2333,17 +2577,13 @@ Can also be used for low-level lighting.</value>
<data name="IDS_TILE_BLOCK_GOLD">
<value>Block of Gold</value>
</data>
-
<data name="IDS_DESC_BLOCK_GOLD">
<value>A compact way of storing Gold.</value>
</data>
-
<data name="IDS_DESC_BLOCK_IRON">
<value>A compact way of storing Iron.</value>
</data>
-
-
- <data name="IDS_TILE_BLOCK_IRON">
+ <data name="IDS_TILE_BLOCK_IRON">
<value>Block of Iron</value>
</data>
<data name="IDS_TILE_STONESLAB">
@@ -2382,7 +2622,6 @@ Can also be used for low-level lighting.</value>
<data name="IDS_TILE_STONESLAB_NETHERBRICK">
<value>Nether Brick Slab</value>
</data>
-
<data name="IDS_TILE_BRICK">
<value>Bricks</value>
</data>
@@ -2401,7 +2640,6 @@ Can also be used for low-level lighting.</value>
<data name="IDS_TILE_TORCH">
<value>Torch</value>
</data>
-
<data name="IDS_TILE_TORCHCOAL">
<value>Torch (Coal)</value>
</data>
@@ -2429,11 +2667,9 @@ Can also be used for low-level lighting.</value>
<data name="IDS_TILE_BLOCK_DIAMOND">
<value>Block of Diamond</value>
</data>
-
<data name="IDS_DESC_BLOCK_DIAMOND">
<value>A compact way of storing Diamonds.</value>
</data>
-
<data name="IDS_TILE_WORKBENCH">
<value>Crafting Table</value>
</data>
@@ -2530,11 +2766,9 @@ Can also be used for low-level lighting.</value>
<data name="IDS_TILE_BLOCK_LAPIS">
<value>Lapis Lazuli Block</value>
</data>
-
<data name="IDS_DESC_BLOCK_LAPIS">
<value>A compact way of storing Lapis Lazuli.</value>
</data>
-
<data name="IDS_TILE_DISPENSER">
<value>Dispenser</value>
</data>
@@ -2697,7 +2931,291 @@ Can also be used for low-level lighting.</value>
<data name="IDS_TILE_SKULL">
<value>Skull</value>
</data>
-
+
+
+ <data name="IDS_TILE_COMMAND_BLOCK">
+ <value>Command Block</value>
+ </data>
+ <data name="IDS_TILE_BEACON">
+ <value>Beacon</value>
+ </data>
+ <data name="IDS_TILE_CHEST_TRAP">
+ <value>Trapped Chest</value>
+ </data>
+ <data name="IDS_TILE_WEIGHTED_PLATE_LIGHT">
+ <value>Weighted Pressure Plate (Light)</value>
+ </data>
+ <data name="IDS_TILE_WEIGHTED_PLATE_HEAVY">
+ <value>Weighted Pressure Plate (Heavy)</value>
+ </data>
+ <data name="IDS_TILE_COMPARATOR">
+ <value>Redstone Comparator</value>
+ </data>
+ <data name="IDS_TILE_DAYLIGHT_DETECTOR">
+ <value>Daylight Sensor</value>
+ </data>
+ <data name="IDS_TILE_REDSTONE_BLOCK">
+ <value>Block of Redstone</value>
+ </data>
+ <data name="IDS_TILE_HOPPER">
+ <value>Hopper</value>
+ </data>
+ <data name="IDS_TILE_ACTIVATOR_RAIL">
+ <value>Activator Rail</value>
+ </data>
+ <data name="IDS_TILE_DROPPER">
+ <value>Dropper</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY">
+ <value>Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_HAY">
+ <value>Hay Bale</value>
+ </data>
+ <data name="IDS_TILE_HARDENED_CLAY">
+ <value>Hardened Clay</value>
+ </data>
+ <data name="IDS_TILE_COAL">
+ <value>Block of Coal</value>
+ </data>
+
+ <data name="IDS_TILE_STAINED_CLAY_BLACK">
+ <value>Black Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_RED">
+ <value>Red Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_GREEN">
+ <value>Green Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_BROWN">
+ <value>Brown Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_BLUE">
+ <value>Blue Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_PURPLE">
+ <value>Purple Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_CYAN">
+ <value>Cyan Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_SILVER">
+ <value>Light Gray Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_GRAY">
+ <value>Gray Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_PINK">
+ <value>Pink Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_LIME">
+ <value>Lime Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_YELLOW">
+ <value>Yellow Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE">
+ <value>Light Blue Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_MAGENTA">
+ <value>Magenta Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_ORANGE">
+ <value>Orange Stained Clay</value>
+ </data>
+ <data name="IDS_TILE_STAINED_CLAY_WHITE">
+ <value>White Stained Clay</value>
+ </data>
+
+ <data name="IDS_TILE_STAINED_GLASS">
+ <value>Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_BLACK">
+ <value>Black Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_RED">
+ <value>Red Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_GREEN">
+ <value>Green Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_BROWN">
+ <value>Brown Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_BLUE">
+ <value>Blue Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PURPLE">
+ <value>Purple Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_CYAN">
+ <value>Cyan Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_SILVER">
+ <value>Light Gray Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_GRAY">
+ <value>Gray Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PINK">
+ <value>Pink Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_LIME">
+ <value>Lime Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_YELLOW">
+ <value>Yellow Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE">
+ <value>Light Blue Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_MAGENTA">
+ <value>Magenta Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_ORANGE">
+ <value>Orange Stained Glass</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_WHITE">
+ <value>White Stained Glass</value>
+ </data>
+
+ <data name="IDS_TILE_STAINED_GLASS_PANE">
+ <value>Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_BLACK">
+ <value>Black Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_RED">
+ <value>Red Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_GREEN">
+ <value>Green Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_BROWN">
+ <value>Brown Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_BLUE">
+ <value>Blue Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE">
+ <value>Purple Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_CYAN">
+ <value>Cyan Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_SILVER">
+ <value>Light Gray Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_GRAY">
+ <value>Gray Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_PINK">
+ <value>Pink Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_LIME">
+ <value>Lime Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW">
+ <value>Yellow Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE">
+ <value>Light Blue Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA">
+ <value>Magenta Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE">
+ <value>Orange Stained Glass Pane</value>
+ </data>
+ <data name="IDS_TILE_STAINED_GLASS_PANE_WHITE">
+ <value>White Stained Glass Pane</value>
+ </data>
+
+
+ <data name="IDS_FIREWORKS_CHARGE_TYPE_0">
+ <value>Small Ball</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_TYPE_1">
+ <value>Large Ball</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_TYPE_2">
+ <value>Star-shaped</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_TYPE_3">
+ <value>Creeper-shaped</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_TYPE_4">
+ <value>Burst</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_TYPE">
+ <value>Unknown Shape</value>
+ </data>
+
+ <data name="IDS_FIREWORKS_CHARGE_BLACK">
+ <value>Black</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_RED">
+ <value>Red</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_GREEN">
+ <value>Green</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_BROWN">
+ <value>Brown</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_BLUE">
+ <value>Blue</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_PURPLE">
+ <value>Purple</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_CYAN">
+ <value>Cyan</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_SILVER">
+ <value>Light Gray</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_GRAY">
+ <value>Gray</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_PINK">
+ <value>Pink</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_LIME">
+ <value>Lime</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_YELLOW">
+ <value>Yellow</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE">
+ <value>Light Blue</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_MAGENTA">
+ <value>Magenta</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_ORANGE">
+ <value>Orange</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_WHITE">
+ <value>White</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_CUSTOM">
+ <value>Custom</value>
+ </data>
+
+ <data name="IDS_FIREWORKS_CHARGE_FADE_TO">
+ <value>Fade to</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_FLICKER">
+ <value>Twinkle</value>
+ </data>
+ <data name="IDS_FIREWORKS_CHARGE_TRAIL">
+ <value>Trail</value>
+ </data>
+ <data name="IDS_ITEM_FIREWORKS_FLIGHT">
+ <value>Flight Duration:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT">
<value>Current Controls</value>
</data>
@@ -2829,7 +3347,7 @@ Can also be used for low-level lighting.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_START_TUTORIAL">
<value>{*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.</value>
+Press{*CONTROLLER_VK_B*} if you think you are ready to play on your own.</value>
</data>
<data name="IDS_TUTORIAL_TASK_OVERVIEW">
@@ -2859,7 +3377,7 @@ At night monsters come out, make sure to build a shelter before that happens.</v
</data>
<data name="IDS_TUTORIAL_TASK_INVENTORY">
<value>As you collect and craft more items, your inventory will fill up.{*B*}
- Press{*CONTROLLER_ACTION_INVENTORY*} to open the inventory.</value>
+Press{*CONTROLLER_ACTION_INVENTORY*} to open the inventory.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FOOD_BAR_DEPLETE">
<value>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.</value>
@@ -2907,19 +3425,13 @@ At night monsters come out, make sure to build a shelter before that happens.</v
<value>Open the container</value>
</data>
<data name="IDS_TUTORIAL_TASK_NIGHT_DANGER">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_NEARBY_SHELTER">
- <value>
- Nearby there is an abandoned Miner's shelter that you can complete to be safe overnight.
- </value>
+ <value>Nearby there is an abandoned Miner's shelter that you can complete to be safe overnight.</value>
</data>
<data name="IDS_TUTORIAL_TASK_COLLECT_RESOURCES">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_MINE_STONE">
<value>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*}</value>
@@ -2946,607 +3458,395 @@ At night monsters come out, make sure to build a shelter before that happens.</v
<value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_BASIC_COMPLETE">
- <value>
- You have completed the first part of the tutorial.
- </value>
+ <value>You have completed the first part of the tutorial.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_BASIC_COMPLETE">
- <value>
- {*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.
- </value>
+ <value>{*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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW">
- <value>
- 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.
- </value>
- </data>
+ <value>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.</value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW">
<value>{*B*}
- Press{*CONTROLLER_VK_A*} to continue.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know how to use the inventory.
- </value>
+Press{*CONTROLLER_VK_A*} to continue.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know how to use the inventory.</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_PICK_UP">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_MOVE">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_DROP">
- <value>
- If you move the pointer outside the edge of the interface with an item on the pointer, you can drop the item.
- </value>
+ <value>If you move the pointer outside the edge of the interface with an item on the pointer, you can drop the item.</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO">
- <value>
- If you want more information about an item, move the pointer over the item and press{*CONTROLLER_VK_RT*} .
- </value>
+ <value>If you want more information about an item, move the pointer over the item and press{*CONTROLLER_ACTION_MENU_PAGEDOWN*} .</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT">
- <value>
- Press{*CONTROLLER_VK_B*} now to exit the inventory.
- </value>
+ <value>Press{*CONTROLLER_VK_B*} now to exit the inventory.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_OVERVIEW">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_CREATIVE_INV_OVERVIEW">
<value>{*B*}
- Press{*CONTROLLER_VK_A*} to continue.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know how to use the creative mode inventory.
- </value>
+Press{*CONTROLLER_VK_A*} to continue.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know how to use the creative mode inventory.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_PICK_UP">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_MOVE">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_DROP">
- <value>
- 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*}.
- </value>
+ <value>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*}.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_NAV">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO">
- <value>
- If you want more information about an item, move the pointer over the item and press{*CONTROLLER_VK_RT*} .
- </value>
+ <value>If you want more information about an item, move the pointer over the item and press{*CONTROLLER_ACTION_MENU_PAGEDOWN*} .</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT">
- <value>
- Press{*CONTROLLER_VK_B*} now to exit the creative mode inventory.
- </value>
+ <value>Press{*CONTROLLER_VK_B*} now to exit the creative mode inventory.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_OVERVIEW">
- <value>
- This is the crafting interface. This interface allows you to combine the items you've collected to make new items.
- </value>
+ <value>This is the crafting interface. This interface allows you to combine the items you've collected to make new items.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_CRAFT_OVERVIEW">
- <value>{*B*}
- Press{*CONTROLLER_VK_A*} to continue.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know how to craft.
- </value>
+ <value>{*B*}Press{*CONTROLLER_VK_A*} to continue.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know how to craft.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_DESCRIPTION">
<value>{*B*}
- Press{*CONTROLLER_VK_X*} to show the item description.
- </value>
+Press{*CONTROLLER_VK_X*} to show the item description.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_INGREDIENTS">
<value>{*B*}
- Press{*CONTROLLER_VK_X*} to show the ingredients required to make the current item.
- </value>
+Press{*CONTROLLER_VK_X*} to show the ingredients required to make the current item.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_INVENTORY">
<value>{*B*}
- Press{*CONTROLLER_VK_X*} to show the inventory again.
- </value>
+Press{*CONTROLLER_VK_X*} to show the inventory again.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_NAV">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_CREATE">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_CRAFT_TABLE">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_INVENTORY">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_DESCRIPTION">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_INGREDIENTS">
- <value>
- The list of ingredients required to craft the selected item are now displayed.
- </value>
+ <value>The list of ingredients required to craft the selected item are now displayed.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_CREATE_PLANKS">
<value>The wood that you have collected can be crafted into planks. Select the planks icon and press{*CONTROLLER_VK_A*} to create them.{*PlanksIcon*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_EXIT_AND_PLACE_TABLE">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_SELECT_TOOLS">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_SELECT_STRUCTURES">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_SELECT_WOODEN_SHOVEL">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_SELECT_CRAFTING_TABLE">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_TOOLS_BUILT">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_CREATE_FURNACE">
- <value>
- Some items can not be created using the crafting table, but require a furnace. Craft a furnace now.{*FurnaceIcon*}
- </value>
+ <value>Some items can not be created using the crafting table, but require a furnace. Craft a furnace now.{*FurnaceIcon*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_CRAFT_EXIT_AND_PLACE_FURNACE">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FURNACE_OVERVIEW">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_FURNACE_OVERVIEW">
<value>{*B*}
- Press{*CONTROLLER_VK_A*} to continue.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know how to use a furnace.
- </value>
+Press{*CONTROLLER_VK_A*} to continue.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know how to use a furnace.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FURNACE_METHOD">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FURNACE_FUELS">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FURNACE_INGREDIENTS">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FURNACE_CREATE_CHARCOAL">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FURNACE_CHARCOAL_USES">
- <value>
- Charcoal can be used as a fuel, as well as being crafted into a torch with a stick.
- </value>
+ <value>Charcoal can be used as a fuel, as well as being crafted into a torch with a stick.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FURNACE_CREATE_GLASS">
- <value>
- Placing sand in the ingredient slot allows you to make glass. Create some glass blocks to use as windows in your shelter.
- </value>
+ <value>Placing sand in the ingredient slot allows you to make glass. Create some glass blocks to use as windows in your shelter.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_MENU_OVERVIEW">
- <value>
- This is the brewing interface. You can use this to create potions that have a variety of different effects.
- </value>
+ <value>This is the brewing interface. You can use this to create potions that have a variety of different effects.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_BREWING_MENU_OVERVIEW">
<value>{*B*}
- Press{*CONTROLLER_VK_A*} to continue.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know how to use the brewing stand.
- </value>
+Press{*CONTROLLER_VK_A*} to continue.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know how to use the brewing stand.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_MENU_METHOD">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_MENU_BASIC_INGREDIENTS">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_MENU_EXTENDED_INGREDIENTS">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_MENU_EXTENDED_INGREDIENTS_2">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_MENU_CREATE_FIRE_POTION">
- <value>
- Create a Potion of Fire Resistance by first adding Nether Wart to a Water Bottle, and then adding Magma Cream.
- </value>
+ <value>Create a Potion of Fire Resistance by first adding Nether Wart to a Water Bottle, and then adding Magma Cream.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_MENU_EXIT">
- <value>
- Press{*CONTROLLER_VK_B*} now to exit the brewing interface.
- </value>
+ <value>Press{*CONTROLLER_VK_B*} now to exit the brewing interface.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_OVERVIEW">
- <value>
- In this area there is a Brewing Stand, a Cauldron and a chest full of items for brewing.
- </value>
+ <value>In this area there is a Brewing Stand, a Cauldron and a chest full of items for brewing.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_BREWING_OVERVIEW">
<value>{*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.
- </value>
+Press{*CONTROLLER_VK_A*} to learn more about brewing and potions.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about brewing and potions.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_GET_GLASS_BOTTLE">
- <value>
- The first step in brewing a potion is to create a Water Bottle. Take a Glass Bottle from the chest.
- </value>
+ <value>The first step in brewing a potion is to create a Water Bottle. Take a Glass Bottle from the chest.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_FILL_GLASS_BOTTLE">
- <value>
- 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*}.
- </value>
+ <value>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*}.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_FILL_CAULDRON">
- <value>
- If a cauldron becomes empty, you can refill it with a Water Bucket.
- </value>
+ <value>If a cauldron becomes empty, you can refill it with a Water Bucket.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_CREATE_FIRE_POTION">
- <value>
- Use the Brewing Stand to create a Potion of Fire Resistance. You will need a Water Bottle, Nether Wart and Magma Cream.
- </value>
+ <value>Use the Brewing Stand to create a Potion of Fire Resistance. You will need a Water Bottle, Nether Wart and Magma Cream.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_USE_POTION">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_DRINK_FIRE_POTION">
- <value>
- Use your Potion of Fire Resistance on yourself.
- </value>
+ <value>Use your Potion of Fire Resistance on yourself.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREWING_USE_EFFECTS">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_MENU_OVERVIEW">
- <value>
- This is the enchanting interface which you can use to add enchantments to weapons, armor and some tools.
- </value>
+ <value>This is the enchanting interface which you can use to add enchantments to weapons, armor and some tools.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_ENCHANTING_MENU_OVERVIEW">
<value>{*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.
- </value>
+Press{*CONTROLLER_VK_A*} to learn more about the enchanting interface.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about the enchanting interface.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_MENU_START">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_MENU_ENCHANTMENTS">
- <value>
- When an item is placed in the enchanting slot, the buttons on the right will change to show a selection of random enchantments.
- </value>
+ <value>When an item is placed in the enchanting slot, the buttons on the right will change to show a selection of random enchantments.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_MENU_COST">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_MENU_ENCHANT">
- <value>
- Select an enchantment and press{*CONTROLLER_VK_A*} to enchant the item. This will decrease your experience level by the cost of the enchantment.
- </value>
+ <value>Select an enchantment and press{*CONTROLLER_VK_A*} to enchant the item. This will decrease your experience level by the cost of the enchantment.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_MENU_BETTER_ENCHANTMENTS">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_OVERVIEW">
- <value>
- In this area there is an Enchantment Table and some other items to help you learn about enchanting.
- </value>
+ <value>In this area there is an Enchantment Table and some other items to help you learn about enchanting.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_ENCHANTING_OVERVIEW">
<value>{*B*}
- Press{*CONTROLLER_VK_A*} to learn more about enchanting.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about enchanting.
- </value>
+Press{*CONTROLLER_VK_A*} to learn more about enchanting.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about enchanting.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_SUMMARY">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_BOOKCASES">
- <value>
- Placing bookcases around the Enchantment Table increases its power and allows access to higher level enchantments.
- </value>
+ <value>Placing bookcases around the Enchantment Table increases its power and allows access to higher level enchantments.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_EXPERIENCE">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_BOTTLE_O_ENCHANTING">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ENCHANTING_USE_CHESTS">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_MINECART_OVERVIEW">
- <value>
- You are now riding in a minecart. To exit the minecart, point the cursor at it and press{*CONTROLLER_ACTION_USE*} .{*MinecartIcon*}
- </value>
+ <value>You are now riding in a minecart. To exit the minecart, point the cursor at it and press{*CONTROLLER_ACTION_USE*} .{*MinecartIcon*}</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_MINECART_OVERVIEW">
<value>{*B*}
- Press{*CONTROLLER_VK_A*} to learn more about minecarts.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about minecarts.
- </value>
+Press{*CONTROLLER_VK_A*} to learn more about minecarts.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about minecarts.</value>
</data>
<data name="IDS_TUTORIAL_TASK_MINECART_RAILS">
- <value>
- A minecart runs on rails. You can also craft a powered minecart with a furnace and a minecart with a chest in it.
- {*RailIcon*}
- </value>
+ <value>A minecart runs on rails. You can also craft a powered minecart with a furnace and a minecart with a chest in it.{*RailIcon*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_MINECART_POWERED_RAILS">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_BOAT_OVERVIEW">
- <value>
- You are now sailing a boat. To exit the boat, point the cursor at it and press{*CONTROLLER_ACTION_USE*} .{*BoatIcon*}
- </value>
+ <value>You are now sailing a boat. To exit the boat, point the cursor at it and press{*CONTROLLER_ACTION_USE*} .{*BoatIcon*}</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_BOAT_OVERVIEW">
- <value>
- {*B*}
- Press{*CONTROLLER_VK_A*} to learn more about boats.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about boats.
- </value>
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about boats.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about boats.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BOAT_STEER">
- <value>
- A boat allows you to travel quicker over water. You can steer it using{*CONTROLLER_ACTION_MOVE*} and{*CONTROLLER_ACTION_LOOK*}.
- {*BoatIcon*}
- </value>
+ <value>A boat allows you to travel quicker over water. You can steer it using{*CONTROLLER_ACTION_MOVE*} and{*CONTROLLER_ACTION_LOOK*}.{*BoatIcon*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_FISHING_OVERVIEW">
- <value>
- You are now using a fishing rod. Press{*CONTROLLER_ACTION_USE*} to use it.{*FishingRodIcon*}
- </value>
+ <value>You are now using a fishing rod. Press{*CONTROLLER_ACTION_USE*} to use it.{*FishingRodIcon*}</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_FISHING_OVERVIEW">
- <value>
- {*B*}
- Press{*CONTROLLER_VK_A*} to learn more about fishing.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about fishing.
- </value>
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about fishing.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about fishing.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FISHING_CAST">
- <value>
- Press{*CONTROLLER_ACTION_USE*} to cast your line and start fishing. Press{*CONTROLLER_ACTION_USE*} again to reel in the fishing line.
- {*FishingRodIcon*}
- </value>
+ <value>Press{*CONTROLLER_ACTION_USE*} to cast your line and start fishing. Press{*CONTROLLER_ACTION_USE*} again to reel in the fishing line.{*FishingRodIcon*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_FISHING_FISH">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_FISHING_USES">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_BED_OVERVIEW">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_BED_OVERVIEW">
- <value>
- {*B*}
- Press{*CONTROLLER_VK_A*} to learn more about beds.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about beds.
- </value>
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about beds.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about beds.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BED_PLACEMENT">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_BED_MULTIPLAYER">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_REDSTONE_OVERVIEW">
- <value>
- In this area there are some simple Redstone and Piston circuits, and a chest with more items to extend these circuits.
- </value>
+ <value>In this area there are some simple Redstone and Piston circuits, and a chest with more items to extend these circuits.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_REDSTONE_OVERVIEW">
- <value>
- {*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.
- </value>
+ <value>{*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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_REDSTONE_POWER_SOURCES">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_REDSTONE_POWER_SOURCES_POSITION">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_REDSTONE_DUST">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_REDSTONE_REPEATER">
- <value>
- Redstone repeaters can be used to extend the distance that the power is carried, or put a delay in a circuit.
- {*ICON*}356{*/ICON*}
- </value>
+ <value>Redstone repeaters can be used to extend the distance that the power is carried, or put a delay in a circuit.
+{*ICON*}356{*/ICON*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_PISTONS">
- <value>
- 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*}
- </value>
+ <value>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*}</value>
</data>
<data name="IDS_TUTORIAL_TASK_TRY_IT">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_PORTAL_OVERVIEW">
- <value>
- In this area there is a Portal to the Nether!
- </value>
+ <value>In this area there is a Portal to the Nether!</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_PORTAL_OVERVIEW">
- <value>
- {*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.
- </value>
+ <value>{*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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BUILD_PORTAL">
- <value>
- Portals are created by placing Obsidian blocks into a frame four blocks wide and five blocks tall. The corner blocks are not required.
- </value>
+ <value>Portals are created by placing Obsidian blocks into a frame four blocks wide and five blocks tall. The corner blocks are not required.</value>
</data>
<data name="IDS_TUTORIAL_TASK_ACTIVATE_PORTAL">
- <value>
- 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.
- </value>
+ <value>To activate a Nether Portal, set fire to the Obsidian 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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_USE_PORTAL">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_NETHER">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_NETHER_FAST_TRAVEL">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_CREATIVE_OVERVIEW">
- <value>
- You are now in Creative mode.
- </value>
+ <value>You are now in Creative mode.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_CREATIVE_OVERVIEW">
- <value>
- {*B*}
- Press{*CONTROLLER_VK_A*} to learn more about Creative mode.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about Creative mode.
- </value>
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about Creative mode.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about Creative mode.</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_MODE">
<value>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.</value>
@@ -3566,16 +3866,12 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
</data>
<data name="IDS_TUTORIAL_FARMING_OVERVIEW">
- <value>
- In this area a farm has been set up. Farming enables you to create a renewable source of food and other items.
- </value>
+ <value>In this area a farm has been set up. Farming enables you to create a renewable source of food and other items.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_FARMING_OVERVIEW">
- <value>
- {*B*}
- Press{*CONTROLLER_VK_A*} to learn more about farming.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about farming.
- </value>
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about farming.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about farming.</value>
</data>
<data name="IDS_TUTORIAL_TASK_FARMING_SEEDS">
<value>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.</value>
@@ -3606,16 +3902,12 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
</data>
<data name="IDS_TUTORIAL_BREEDING_OVERVIEW">
- <value>
- In this area animals have been penned in. You can breed animals to produce baby versions of themselves.
- </value>
+ <value>In this area animals have been penned in. You can breed animals to produce baby versions of themselves.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_BREEDING_OVERVIEW">
- <value>
- {*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.
- </value>
+ <value>{*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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREEDING_FEED">
<value>To get the animals to breed, you will need to feed them with the right food to get them to go into 'Love Mode'.</value>
@@ -3634,9 +3926,7 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
</data>
<data name="IDS_TUTORIAL_TASK_BREEDING_WOLF_TAMING">
- <value>
- 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.
- </value>
+ <value>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.</value>
</data>
<data name="IDS_TUTORIAL_TASK_BREEDING_COMPLETE">
@@ -3644,16 +3934,12 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
</data>
<data name="IDS_TUTORIAL_GOLEM_OVERVIEW">
- <value>
- In this area are some pumpkins and blocks to make a Snow Golem and an Iron Golem.
- </value>
+ <value>In this area are some pumpkins and blocks to make a Snow Golem and an Iron Golem.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_GOLEM_OVERVIEW">
- <value>
- {*B*}
- Press{*CONTROLLER_VK_A*} to learn more about Golems.{*B*}
- Press{*CONTROLLER_VK_B*} if you already know about Golems.
- </value>
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about Golems.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about Golems.</value>
</data>
<data name="IDS_TUTORIAL_TASK_GOLEM_PUMPKIN">
<value>Golems are created by placing a pumpkin on top of a stack of blocks.</value>
@@ -3715,9 +4001,7 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
</data>
<data name="IDS_TUTORIAL_COMPLETED">
- <value>
- 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!
- </value>
+ <value>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!</value>
</data>
<data name="IDS_TUTORIAL_COMPLETED_EXPLORE">
<value>{*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.</value>
@@ -3736,7 +4020,7 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
</data>
<data name="IDS_TUTORIAL_PROMPT_NEW_FEATURES_CHOICE">
<value>{*B*}Press{*CONTROLLER_VK_A*} to play through the tutorial as normal.{*B*}
- Press{*CONTROLLER_VK_B*} to skip the main tutorial.</value>
+Press{*CONTROLLER_VK_B*} to skip the main tutorial.</value>
</data>
<data name="IDS_TUTORIAL_FEATURES_IN_THIS_AREA">
<value>In this area you will find areas setup to help you learn about fishing, boats, pistons and redstone.</value>
@@ -3746,19 +4030,182 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
</data>
<data name="IDS_TUTORIAL_TASK_FOOD_BAR_OVERVIEW">
- <value>
- Your food bar has depleted to a level where you will no longer heal.
- </value>
+ <value>Your food bar has depleted to a level where you will no longer heal.</value>
</data>
<data name="IDS_TUTORIAL_PROMPT_FOOD_BAR_OVERVIEW">
- <value>
- {*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.
- </value>
+ <value>{*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.</value>
</data>
-
+ <data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW">
+ <value>This is the horse inventory interface.</value>
+ </data>
+ <data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW">
+ <value>{*B*}Press{*CONTROLLER_VK_A*} to continue.
+{*B*}Press{*CONTROLLER_VK_B*} if you already know how to use the horse inventory.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT">
+ <value>The horse inventory allows you to transfer, or equip items to your Horse, Donkey or Mule.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT">
+ <value>Saddle your Horse by placing a Saddle in the saddle slot. Horses can be given armor by placing Horse Armor in the armor slot.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS">
+ <value>You can also transfer items between your own inventory and the saddlebags strapped to Donkeys and Mules in this menu.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW">
+ <value>You have found a Horse.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW">
+ <value>You have found a Donkey.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW">
+ <value>You have found a Mule.</value>
+ </data>
+ <data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW">
+ <value>{*B*}Press{*CONTROLLER_VK_A*} to learn more about Horses, Donkeys and Mules.
+{*B*}Press{*CONTROLLER_VK_B*} if you already know about Horses, Donkeys and Mules.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_INTRO">
+ <value>Horses and Donkeys are found mainly in open plains. Mules can be bred from a Donkey and a Horse, but are infertile themselves.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE">
+ <value>All adult Horses, Donkeys and Mules can be ridden. However only Horses can be armored, and only Mules and Donkeys may be equipped with saddlebags for transporting items.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_TAMING">
+ <value>Horses, Donkeys and Mules must be tamed before they can be used. A horse is tamed by attempting to ride it, and managing to stay on the horse while it attempts to throw the rider off. </value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_TAMING2">
+ <value>When tamed Love Hearts will appear around them and they will no longer buck the player off. </value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_RIDE">
+ <value>Try to ride this horse now. Use {*CONTROLLER_ACTION_USE*} with no items or tools in your hand to mount it.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_SADDLES">
+ <value>To steer a horse they must then be equipped with a saddle, which can be bought from villagers or found inside chests hidden in the world.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS">
+ <value>Tame Donkeys and Mules can be given saddlebags by attaching a chest. These bags can be accessed whilst riding or when sneaking.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_BREEDING">
+ <value>Horses and Donkeys (but not Mules) can be bred like other animals using Golden Apples or Golden Carrots. Foals will grow into adult horses over time, although feeding them wheat or hay will speed this up.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HORSE_AREA">
+ <value>You can try to tame the Horses and Donkeys here, and there are Saddles, Horse Armor and other useful items for Horses in chests around here too.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW">
+ <value>This is the Beacon interface, which you can use to choose powers for your Beacon to grant.</value>
+ </data>
+ <data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW">
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to continue.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know how to use the Beacon interface.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS">
+ <value>In the Beacon menu you can select 1 primary power for your Beacon. The more tiers your pyramid has the more powers you will have to choose from.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER">
+ <value>A Beacon on a pyramid with at least 4 tiers grants an additional option of either the Regeneration secondary power or a stronger primary power.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION">
+ <value>To set the powers of your Beacon you must sacrifice an Emerald, Diamond, Gold or Iron Ingot in the payment slot. Once set, the powers will emanate from the Beacon indefinitely.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW">
+ <value>At the top of this pyramid there is an inactivate Beacon.</value>
+ </data>
+ <data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW">
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about Beacons.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about Beacons.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE">
+ <value>Active Beacons project a bright beam of light into the sky and grant powers to nearby players. They are crafted with Glass, Obsidian and Nether Stars, which can be obtained by defeating the Wither.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_DESIGN">
+ <value>Beacons must be placed so that they are in sunlight during the day. Beacons must be placed on Pyramids of Iron, Gold, Emerald or Diamond. However the choice of material has no effect on the power of the beacon.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS">
+ <value>Try using the Beacon to set the powers it grants. You can use the Iron Ingots provided as the necessary payment.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW">
+ <value>This room contains Hoppers</value>
+ </data>
+ <data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW">
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about Hoppers.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know about Hoppers.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE">
+ <value>Hoppers are used to insert or remove items from containers, and to automatically pick-up items thrown into them.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS">
+ <value>They can affect Brewing Stands, Chests, Dispensers, Droppers, Minecarts with Chests, Minecarts with Hoppers, as well as other Hoppers.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS">
+ <value>Hoppers will continuously attempt to suck items out of suitable container placed above them. It will also attempt to insert stored items into an output container.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE">
+ <value>However if a Hopper is powered by Redstone it will become inactive and stop both sucking and inserting items.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT">
+ <value>A Hopper points in the direction it tries to output items. To make a Hopper point to a particular block, place the Hopper against that block whilst sneaking.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_HOPPER_AREA">
+ <value>There are various useful Hopper layouts for you to see and experiment with in this room.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW">
+ <value>This is the Firework interface, which you can use to craft Fireworks and Firework Stars.</value>
+ </data>
+ <data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW">
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to continue.{*B*}
+Press{*CONTROLLER_VK_B*} if you already know how to use the Firework interface.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START">
+ <value>To craft a Firework, place Gunpowder and Paper in the 3x3 crafting grid that is shown above your inventory.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS">
+ <value>You can optionally place multiple Firework Stars in the crafting grid to add them to the Firework.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT">
+ <value>Filling more slots in the crafting grid with Gunpowder will increase the height at which all the Firework Stars will explode.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT">
+ <value>You can then take the crafted Firework out of the output slot when you wish to craft it.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START">
+ <value>Firework Stars can be crafted by placing Gunpowder and Dye into the crafting grid.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR">
+ <value>The Dye will set the color of the explosion of the Firework Star.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE">
+ <value>The shape of the Firework Star is set by adding either a Fire Charge, Gold Nugget, Feather or Mob Head.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT">
+ <value>A trail or a twinkle can be added using Diamonds or Glowstone Dust.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE">
+ <value>After a Firework Star has been crafted, you can set the fade color of the Firework Star by crafting it with Dye.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW">
+ <value>Contained within the chests here there are various items used in the creation of FIREWORKS!</value>
+ </data>
+ <data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW">
+ <value>{*B*}
+Press{*CONTROLLER_VK_A*} to learn more about Fireworks. {*B*}
+Press{*CONTROLLER_VK_B*} if you already know about Fireworks.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE">
+ <value>Fireworks are decorative items that can be launched by hand or from Dispensers. They are crafted using Paper, Gunpowder and optionally a number of Firework Stars.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE">
+ <value>The colors, fade, shape, size, and effects (such as trails and twinkles) of Firework Stars can be customized by including additional ingredients when crafting.</value>
+ </data>
+ <data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING">
+ <value>Try crafting a Firework at the Crafting Table using an assortment of ingredients from the chests.</value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT">
<value>Select</value>
</data>
@@ -4094,546 +4541,593 @@ When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD">
<value>Upload Save for Xbox One</value>
</data>
+
+<data name="IDS_TOOLTIPS_MOUNT">
+ <value>Mount</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT">
+ <value>Dismount</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS">
+ <value>Attach Chest</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH">
+ <value>Launch</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH">
+ <value>Leash</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH">
+ <value>Release</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH">
+ <value>Attach</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME">
+ <value>Name</value>
+</data>

<data name="IDS_CONFIRM_OK">
- <value>OK</value>
+ <value>OK</value>
</data>
<data name="IDS_CONFIRM_CANCEL">
- <value>Cancel</value>
+ <value>Cancel</value>
</data>
<data name="IDS_DOWNLOADABLECONTENT">
- <value>Minecraft Store</value>
+ <value>Minecraft Store</value>
</data>
<data name="IDS_CONFIRM_LEAVE_VIA_INVITE">
- <value>Are you sure you want to leave your current game and join the new one? Any unsaved progress will be lost.</value>
+ <value>Are you sure you want to leave your current game and join the new one? Any unsaved progress will be lost.</value>
</data>
<data name="IDS_EXIT_GAME">
- <value>Exit Game</value>
+ <value>Exit Game</value>
</data>
<data name="IDS_TITLE_SAVE_GAME">
- <value>Save Game</value>
+ <value>Save Game</value>
</data>
- <data name="IDS_TITLE_DECLINE_SAVE_GAME">
- <value>Exit Without Saving</value>
+ <data name="IDS_TITLE_DECLINE_SAVE_GAME">
+ <value>Exit Without Saving</value>
</data>
- <data name="IDS_CONFIRM_SAVE_GAME">
- <value>Are you sure you want to overwrite any previous save for this world with the current version of this world?</value>
+ <data name="IDS_CONFIRM_SAVE_GAME">
+ <value>Are you sure you want to overwrite any previous save for this world with the current version of this world?</value>
</data>
- <data name="IDS_CONFIRM_DECLINE_SAVE_GAME">
- <value>Are you sure you want to exit without saving? You will lose all progress in this world!</value>
+ <data name="IDS_CONFIRM_DECLINE_SAVE_GAME">
+ <value>Are you sure you want to exit without saving? You will lose all progress in this world!</value>
</data>
<data name="IDS_TITLE_START_GAME">
- <value>Start Game</value>
+ <value>Start Game</value>
</data>
<data name="IDS_CONFIRM_START_CREATIVE">
- <value>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?</value>
+ <value>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?</value>
</data>
<data name="IDS_CONFIRM_START_SAVEDINCREATIVE">
- <value>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?</value>
+ <value>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?</value>
</data>
<data name="IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE">
- <value>This world has previously been saved in Creative Mode, and it will have achievements and leaderboard updates disabled.</value>
+ <value>This world has previously been saved in Creative Mode, and it will have achievements and leaderboard updates disabled.</value>
</data>
<data name="IDS_CONFIRM_START_HOST_PRIVILEGES">
- <value>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?</value>
+ <value>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?</value>
</data>
<data name="IDS_CORRUPT_OR_DAMAGED_SAVE_TITLE">
- <value>Damaged Save</value>
+ <value>Damaged Save</value>
</data>
- <data name="IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT">
- <value>This save is corrupt or damaged. Would you like to delete it?</value>
+ <data name="IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT">
+ <value>This save is corrupt or damaged. Would you like to delete it?</value>
</data>
- <data name="IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE">
- <value>Are you sure you want to exit to the main menu and disconnect all players from the game? Any unsaved progress will be lost.</value>
+ <data name="IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE">
+ <value>Are you sure you want to exit to the main menu and disconnect all players from the game? Any unsaved progress will be lost.</value>
</data>
<data name="IDS_EXIT_GAME_SAVE">
- <value>Exit and save</value>
+ <value>Exit and save</value>
</data>
<data name="IDS_EXIT_GAME_NO_SAVE">
- <value>Exit without saving</value>
+ <value>Exit without saving</value>
</data>
<data name="IDS_CONFIRM_EXIT_GAME">
- <value>Are you sure you want to exit to the main menu? Any unsaved progress will be lost.</value>
+ <value>Are you sure you want to exit to the main menu? Any unsaved progress will be lost.</value>
</data>
<data name="IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST">
- <value>Are you sure you want to exit to the main menu? Your progress will be lost!</value>
+ <value>Are you sure you want to exit to the main menu? Your progress will be lost!</value>
</data>
<data name="IDS_CREATE_NEW_WORLD">
- <value>Create New World</value>
+ <value>Create New World</value>
</data>
<data name="IDS_PLAY_TUTORIAL">
- <value>Play Tutorial</value>
+ <value>Play Tutorial</value>
</data>
- <data name="IDS_TUTORIALSAVENAME">
- <value>Tutorial</value>
+ <data name="IDS_TUTORIALSAVENAME">
+ <value>Tutorial</value>
</data>
<data name="IDS_NAME_WORLD">
- <value>Name Your World</value>
+ <value>Name Your World</value>
</data>
<data name="IDS_NAME_WORLD_TEXT">
- <value>Enter a name for your world</value>
+ <value>Enter a name for your world</value>
</data>
<data name="IDS_CREATE_NEW_WORLD_SEEDTEXT">
- <value>Input the seed for your world generation</value>
+ <value>Input the seed for your world generation</value>
</data>
<data name="IDS_LOAD_SAVED_WORLD">
- <value>Load Saved World</value>
+ <value>Load Saved World</value>
</data>
<data name="IDS_PRESS_START_TO_JOIN">
- <value>Press START to join game</value>
+ <value>Press START to join game</value>
</data>
<data name="IDS_EXITING_GAME">
- <value>Exiting the game</value>
+ <value>Exiting the game</value>
</data>
<data name="IDS_GENERIC_ERROR">
- <value>An error occurred. Exiting to the main menu.</value>
+ <value>An error occurred. Exiting to the main menu.</value>
</data>
<data name="IDS_CONNECTION_FAILED">
- <value>Connection failed</value>
+ <value>Connection failed</value>
</data>
<data name="IDS_CONNECTION_LOST">
- <value>Connection lost</value>
+ <value>Connection lost</value>
</data>
<data name="IDS_CONNECTION_LOST_SERVER">
- <value>Connection to the server was lost. Exiting to the main menu.</value>
+ <value>Connection to the server was lost. Exiting to the main menu.</value>
</data>
<data name="IDS_CONNECTION_LOST_LIVE">
- <value>Connection to Xbox Live was lost. Exiting to the main menu.</value>
+ <value>Connection to Xbox Live was lost. Exiting to the main menu.</value>
</data>
<data name="IDS_CONNECTION_LOST_LIVE_NO_EXIT">
- <value>Connection to Xbox Live was lost.</value>
+ <value>Connection to Xbox Live was lost.</value>
</data>
<data name="IDS_DISCONNECTED">
- <value>Disconnected by the server</value>
+ <value>Disconnected by the server</value>
</data>
<data name="IDS_DISCONNECTED_KICKED">
- <value>You were kicked from the game</value>
+ <value>You were kicked from the game</value>
</data>
<data name="IDS_DISCONNECTED_FLYING">
- <value>You were kicked from the game for flying</value>
+ <value>You were kicked from the game for flying</value>
</data>
<data name="IDS_DISCONNECTED_LOGIN_TOO_LONG">
- <value>Connection attempt took too long</value>
+ <value>Connection attempt took too long</value>
</data>
<data name="IDS_DISCONNECTED_SERVER_FULL">
- <value>The server is full</value>
+ <value>The server is full</value>
</data>
<data name="IDS_DISCONNECTED_SERVER_QUIT">
- <value>The host has exited the game.</value>
+ <value>The host has exited the game.</value>
</data>
<data name="IDS_DISCONNECTED_NO_FRIENDS_IN_GAME">
- <value>You cannot join this game as you are not friends with anybody in the game.</value>
+ <value>You cannot join this game as you are not friends with anybody in the game.</value>
</data>
<data name="IDS_DISCONNECTED_BANNED">
- <value>You cannot join this game as you have previously been kicked by the host.</value>
+ <value>You cannot join this game as you have previously been kicked by the host.</value>
</data>
<data name="IDS_DISCONNECTED_SERVER_OLD">
- <value>You cannot join this game as the player you are trying to join is running an older version of the game.</value>
+ <value>You cannot join this game as the player you are trying to join is running an older version of the game.</value>
</data>
<data name="IDS_DISCONNECTED_CLIENT_OLD">
- <value>You cannot join this game as the player you are trying to join is running a newer version of the game.</value>
+ <value>You cannot join this game as the player you are trying to join is running a newer version of the game.</value>
</data>
<data name="IDS_DEFAULT_SAVENAME">
- <value>New World</value>
+ <value>New World</value>
</data>
<data name="IDS_AWARD_TITLE">
- <value>Award Unlocked!</value>
+ <value>Award Unlocked!</value>
</data>
<data name="IDS_AWARD_GAMERPIC1">
- <value>Hurray - you've been awarded a gamerpic featuring Steve from Minecraft!</value>
+ <value>Hurray - you've been awarded a gamerpic featuring Steve from Minecraft!</value>
</data>
<data name="IDS_AWARD_GAMERPIC2">
- <value>Hurray - you've been awarded a gamerpic featuring a Creeper!</value>
+ <value>Hurray - you've been awarded a gamerpic featuring a Creeper!</value>
</data>
<data name="IDS_AWARD_AVATAR1">
- <value>Hurray - you've been awarded an avatar item - a Minecraft: Xbox 360 Edition t-shirt!
+ <value>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.</value>
</data>
<data name="IDS_AWARD_AVATAR2">
- <value>Hurray - you've been awarded an avatar item - a Minecraft: Xbox 360 Edition watch!
+ <value>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.</value>
</data>
<data name="IDS_AWARD_AVATAR3">
- <value>Hurray - you've been awarded an avatar item - a Creeper baseball cap!
+ <value>Hurray - you've been awarded an avatar item - a Creeper baseball cap!
Go to the dashboard to put the cap on your avatar.</value>
</data>
<data name="IDS_AWARD_THEME">
- <value>Hurray - you've been awarded the Minecraft: Xbox 360 Edition theme!
+ <value>Hurray - you've been awarded the Minecraft: Xbox 360 Edition theme!
Go to the dashboard to select this theme.</value>
</data>
<data name="IDS_UNLOCK_TITLE">
- <value>Unlock Full Game</value>
+ <value>Unlock Full Game</value>
</data>
<data name="IDS_UNLOCK_TOSAVE_TEXT">
- <value>You're playing the trial game, but you'll need the full game to be able to save your game.
+ <value>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?</value>
</data>
<data name="IDS_UNLOCK_ACHIEVEMENT_TEXT">
- <value>This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned an achievement!
+ <value>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?</value>
</data>
<data name="IDS_UNLOCK_AVATAR_TEXT">
- <value>This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned an avatar award!
+ <value>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?</value>
</data>
<data name="IDS_UNLOCK_GAMERPIC_TEXT">
- <value>This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned a gamerpic!
+ <value>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?</value>
</data>
<data name="IDS_UNLOCK_THEME_TEXT">
- <value>This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned a theme!
+ <value>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?</value>
</data>
<data name="IDS_UNLOCK_ACCEPT_INVITE">
- <value>This is the Minecraft: Xbox 360 Edition trial game. You need the full game to be able to accept this invite.
+ <value>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?</value>
</data>
<data name="IDS_UNLOCK_GUEST_TEXT">
- <value>Guest players cannot unlock the full game. Please sign in with an Xbox Live user ID.</value>
+ <value>Guest players cannot unlock the full game. Please sign in with an Xbox Live user ID.</value>
</data>
<data name="IDS_LEADERBOARD_LOADING">
- <value>Please wait</value>
+ <value>Please wait</value>
</data>
<data name="IDS_LEADERBOARD_NORESULTS">
- <value>No results</value>
+ <value>No results</value>
</data>
<data name="IDS_LEADERBOARD_FILTER">
- <value>Filter: </value>
+ <value>Filter: </value>
</data>
<data name="IDS_LEADERBOARD_FILTER_FRIENDS">
- <value>Friends</value>
+ <value>Friends</value>
</data>
<data name="IDS_LEADERBOARD_FILTER_MYSCORE">
- <value>My Score</value>
+ <value>My Score</value>
</data>
<data name="IDS_LEADERBOARD_FILTER_OVERALL">
- <value>Overall</value>
+ <value>Overall</value>
</data>
<data name="IDS_LEADERBOARD_ENTRIES">
- <value>Entries: </value>
+ <value>Entries: </value>
</data>
<data name="IDS_LEADERBOARD_RANK">
- <value>Rank</value>
+ <value>Rank</value>
</data>
<data name="IDS_LEADERBOARD_GAMERTAG">
- <value>Gamertag</value>
+ <value>Gamertag</value>
</data>
<data name="IDS_PROGRESS_SAVING_LEVEL">
- <value>Preparing to Save Level</value>
+ <value>Preparing to Save Level</value>
</data>
<data name="IDS_PROGRESS_SAVING_CHUNKS">
- <value>Preparing Chunks...</value>
+ <value>Preparing Chunks...</value>
</data>
<data name="IDS_PROGRESS_SAVING_TO_DISC">
- <value>Finalizing...</value>
+ <value>Finalizing...</value>
</data>
<data name="IDS_PROGRESS_BUILDING_TERRAIN">
- <value>Building Terrain</value>
+ <value>Building Terrain</value>
</data>
<data name="IDS_PROGRESS_SIMULATING_WORLD">
- <value>Simulating world for a bit</value>
+ <value>Simulating world for a bit</value>
</data>
<data name="IDS_PROGRESS_INITIALISING_SERVER">
- <value>Initializing server</value>
+ <value>Initializing server</value>
</data>
<data name="IDS_PROGRESS_GENERATING_SPAWN_AREA">
- <value>Generating spawn area</value>
+ <value>Generating spawn area</value>
</data>
<data name="IDS_PROGRESS_LOADING_SPAWN_AREA">
- <value>Loading spawn area</value>
+ <value>Loading spawn area</value>
</data>
<data name="IDS_PROGRESS_ENTERING_NETHER">
- <value>Entering The Nether</value>
+ <value>Entering The Nether</value>
</data>
<data name="IDS_PROGRESS_LEAVING_NETHER">
- <value>Leaving The Nether</value>
+ <value>Leaving The Nether</value>
</data>
<data name="IDS_PROGRESS_RESPAWNING">
- <value>Respawning</value>
+ <value>Respawning</value>
</data>
<data name="IDS_PROGRESS_GENERATING_LEVEL">
- <value>Generating level</value>
+ <value>Generating level</value>
</data>
<data name="IDS_PROGRESS_LOADING_LEVEL">
- <value>Loading level</value>
+ <value>Loading level</value>
</data>
<data name="IDS_PROGRESS_SAVING_PLAYERS">
- <value>Saving players</value>
+ <value>Saving players</value>
</data>
<data name="IDS_PROGRESS_CONNECTING">
- <value>Connecting to host</value>
+ <value>Connecting to host</value>
</data>
<data name="IDS_PROGRESS_DOWNLOADING_TERRAIN">
- <value>Downloading terrain</value>
+ <value>Downloading terrain</value>
</data>
<data name="IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME">
- <value>Switching to offline game</value>
+ <value>Switching to offline game</value>
</data>
<data name="IDS_PROGRESS_HOST_SAVING">
- <value>Please wait while the host saves the game</value>
+ <value>Please wait while the host saves the game</value>
</data>
<data name="IDS_PROGRESS_ENTERING_END">
- <value>Entering The END</value>
+ <value>Entering The END</value>
</data>
<data name="IDS_PROGRESS_LEAVING_END">
- <value>Leaving The END</value>
+ <value>Leaving The END</value>
</data>
<data name="IDS_PROGRESS_NEW_WORLD_SEED">
- <value>Finding Seed for the World Generator</value>
+ <value>Finding Seed for the World Generator</value>
</data>
<data name="IDS_TILE_BED_OCCUPIED">
- <value>This bed is occupied</value>
+ <value>This bed is occupied</value>
</data>
<data name="IDS_TILE_BED_NO_SLEEP">
- <value>You can only sleep at night</value>
+ <value>You can only sleep at night</value>
</data>
<data name="IDS_TILE_BED_PLAYERSLEEP">
- <value>%s is sleeping in a bed. To skip to dawn, all players need to sleep in beds at the same time.</value>
+ <value>%s is sleeping in a bed. To skip to dawn, all players need to sleep in beds at the same time.</value>
</data>
<data name="IDS_TILE_BED_NOT_VALID">
- <value>Your home bed was missing or obstructed</value>
+ <value>Your home bed was missing or obstructed</value>
</data>
<data name="IDS_TILE_BED_NOTSAFE">
- <value>You may not rest now, there are monsters nearby</value>
+ <value>You may not rest now, there are monsters nearby</value>
</data>
<data name="IDS_TILE_BED_MESLEEP">
- <value>You are sleeping in a bed. To skip to dawn, all players need to sleep in beds at the same time.</value>
+ <value>You are sleeping in a bed. To skip to dawn, all players need to sleep in beds at the same time.</value>
</data>
<data name="IDS_GROUPNAME_TOOLS">
- <value>Tools and Weapons</value>
+ <value>Tools and Weapons</value>
</data>
<data name="IDS_GROUPNAME_WEAPONS">
- <value>Weapons</value>
+ <value>Weapons</value>
</data>
<data name="IDS_GROUPNAME_FOOD">
- <value>Food</value>
+ <value>Food</value>
</data>
<data name="IDS_GROUPNAME_STRUCTURES">
- <value>Structures</value>
+ <value>Structures</value>
</data>
<data name="IDS_GROUPNAME_ARMOUR">
- <value>Armor</value>
+ <value>Armor</value>
</data>
<data name="IDS_GROUPNAME_MECHANISMS">
- <value>Mechanisms</value>
+ <value>Mechanisms</value>
</data>
<data name="IDS_GROUPNAME_TRANSPORT">
- <value>Transport</value>
+ <value>Transport</value>
</data>
<data name="IDS_GROUPNAME_DECORATIONS">
- <value>Decorations</value>
+ <value>Decorations</value>
</data>
<data name="IDS_GROUPNAME_BUILDING_BLOCKS">
- <value>Building Blocks</value>
+ <value>Building Blocks</value>
</data>
<data name="IDS_GROUPNAME_REDSTONE_AND_TRANSPORT">
- <value>Redstone &amp; Transportation</value>
+ <value>Redstone &amp; Transportation</value>
</data>
<data name="IDS_GROUPNAME_MISCELLANEOUS">
- <value>Miscellaneous</value>
+ <value>Miscellaneous</value>
</data>
<data name="IDS_GROUPNAME_POTIONS">
- <value>Brewing</value>
+ <value>Brewing</value>
</data>
- <data name="IDS_GROUPNAME_POTIONS_480">
- <value>Brewing</value>
+ <data name="IDS_GROUPNAME_POTIONS_480">
+ <value>Brewing</value>
</data>
<data name="IDS_GROUPNAME_TOOLS_WEAPONS_ARMOR">
- <value>Tools, Weapons &amp; Armor</value>
+ <value>Tools, Weapons &amp; Armor</value>
</data>
<data name="IDS_GROUPNAME_MATERIALS">
- <value>Materials</value>
+ <value>Materials</value>
</data>
<data name="IDS_RETURNEDTOMENU_TITLE">
- <value>Signed out</value>
+ <value>Signed out</value>
</data>
<data name="IDS_RETURNEDTOTITLESCREEN_TEXT">
- <value>You have been returned to the title screen because your gamer profile was signed out</value>
+ <value>You have been returned to the title screen because your gamer profile was signed out</value>
</data>
<data name="IDS_SLIDER_DIFFICULTY">
- <value>Difficulty</value>
+ <value>Difficulty</value>
</data>
<data name="IDS_SLIDER_MUSIC">
- <value>Music</value>
+ <value>Music</value>
</data>
<data name="IDS_SLIDER_SOUND">
- <value>Sound</value>
+ <value>Sound</value>
</data>
<data name="IDS_SLIDER_GAMMA">
- <value>Gamma</value>
+ <value>Gamma</value>
</data>
<data name="IDS_SLIDER_SENSITIVITY_INGAME">
- <value>Game Sensitivity</value>
+ <value>Game Sensitivity</value>
</data>
<data name="IDS_SLIDER_SENSITIVITY_INMENU">
- <value>Interface Sensitivity</value>
+ <value>Interface Sensitivity</value>
</data>
- <data name="IDS_DIFFICULTY_TITLE_PEACEFUL">
- <value>Peaceful</value>
+ <data name="IDS_DIFFICULTY_TITLE_PEACEFUL">
+ <value>Peaceful</value>
</data>
<data name="IDS_DIFFICULTY_TITLE_EASY">
- <value>Easy</value>
+ <value>Easy</value>
</data>
<data name="IDS_DIFFICULTY_TITLE_NORMAL">
- <value>Normal</value>
+ <value>Normal</value>
</data>
<data name="IDS_DIFFICULTY_TITLE_HARD">
- <value>Hard</value>
+ <value>Hard</value>
</data>
<data name="IDS_DIFFICULTY_PEACEFUL">
- <value>In this mode, the player regains health over time, and there are no enemies in the environment.</value>
+ <value>In this mode, the player regains health over time, and there are no enemies in the environment.</value>
</data>
<data name="IDS_DIFFICULTY_EASY">
- <value>In this mode, enemies spawn in the environment, but will do less damage to the player than in the Normal mode.</value>
+ <value>In this mode, enemies spawn in the environment, but will do less damage to the player than in the Normal mode.</value>
</data>
<data name="IDS_DIFFICULTY_NORMAL">
- <value>In this mode, enemies spawn in the environment and will do a standard amount of damage to the player.</value>
+ <value>In this mode, enemies spawn in the environment and will do a standard amount of damage to the player.</value>
</data>
<data name="IDS_DIFFICULTY_HARD">
- <value>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!</value>
+ <value>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!</value>
</data>
<data name="IDS_TRIALOVER_TITLE">
- <value>Trial Timeout</value>
+ <value>Trial Timeout</value>
</data>
<data name="IDS_TRIALOVER_TEXT">
- <value>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? </value>
+ <value>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? </value>
</data>
<data name="IDS_MULTIPLAYER_FULL_TITLE">
- <value>Game full</value>
+ <value>Game full</value>
</data>
<data name="IDS_MULTIPLAYER_FULL_TEXT">
- <value>Failed to join game as there are no spaces left</value>
+ <value>Failed to join game as there are no spaces left</value>
</data>
<data name="IDS_SIGN_TITLE">
- <value>Enter Sign Text</value>
+ <value>Enter Sign Text</value>
</data>
<data name="IDS_SIGN_TITLE_TEXT">
- <value>Enter a line of text for your sign</value>
+ <value>Enter a line of text for your sign</value>
</data>
<data name="IDS_NAME_TITLE">
- <value>Enter Title</value>
+ <value>Enter Title</value>
</data>
<data name="IDS_NAME_TITLE_TEXT">
- <value>Enter a title for your post</value>
+ <value>Enter a title for your post</value>
</data>
<data name="IDS_NAME_CAPTION">
- <value>Enter Caption</value>
+ <value>Enter Caption</value>
</data>
<data name="IDS_NAME_CAPTION_TEXT">
- <value>Enter a caption for your post</value>
+ <value>Enter a caption for your post</value>
</data>
<data name="IDS_NAME_DESC">
- <value>Enter Description</value>
+ <value>Enter Description</value>
</data>
<data name="IDS_NAME_DESC_TEXT">
- <value>Enter a description for your post</value>
+ <value>Enter a description for your post</value>
</data>
- <data name="IDS_INVENTORY">
- <value>Inventory</value>
+ <data name="IDS_INVENTORY">
+ <value>Inventory</value>
</data>
- <data name="IDS_INGREDIENTS">
- <value>Ingredients</value>
+ <data name="IDS_INGREDIENTS">
+ <value>Ingredients</value>
</data>
- <data name="IDS_BREWING_STAND">
- <value>Brewing Stand</value>
+ <data name="IDS_BREWING_STAND">
+ <value>Brewing Stand</value>
</data>
- <data name="IDS_CHEST">
- <value>Chest</value>
+ <data name="IDS_CHEST">
+ <value>Chest</value>
</data>
- <data name="IDS_ENCHANT">
- <value>Enchant</value>
+ <data name="IDS_ENCHANT">
+ <value>Enchant</value>
</data>
- <data name="IDS_FURNACE">
- <value>Furnace</value>
+ <data name="IDS_FURNACE">
+ <value>Furnace</value>
</data>
- <data name="IDS_INGREDIENT">
- <value>Ingredient</value>
+ <data name="IDS_INGREDIENT">
+ <value>Ingredient</value>
</data>
- <data name="IDS_FUEL">
- <value>Fuel</value>
+ <data name="IDS_FUEL">
+ <value>Fuel</value>
</data>
- <data name="IDS_DISPENSER">
- <value>Dispenser</value>
+ <data name="IDS_DISPENSER">
+ <value>Dispenser</value>
</data>
- <data name="IDS_NO_DLCOFFERS">
- <value>There are no downloadable content offers of this type available for this title at the moment.</value>
+ <data name="IDS_CONTAINER_ANIMAL">
+ <value>Horse</value>
</data>
- <data name="IDS_PLAYER_JOINED">
- <value>%s has joined the game.</value>
+ <data name="IDS_CONTAINER_DROPPER">
+ <value>Dropper</value>
</data>
- <data name="IDS_PLAYER_LEFT">
- <value>%s has left the game.</value>
+ <data name="IDS_CONTAINER_HOPPER">
+ <value>Hopper</value>
</data>
- <data name="IDS_PLAYER_KICKED">
- <value>%s was kicked from the game.</value>
+ <data name="IDS_CONTAINER_BEACON">
+ <value>Beacon</value>
</data>
- <data name="IDS_TEXT_DELETE_SAVE">
- <value>Are you sure you want to delete this save game?</value>
+ <data name="IDS_CONTAINER_BEACON_PRIMARY_POWER">
+ <value>Primary Power</value>
+ </data>
+ <data name="IDS_CONTAINER_BEACON_SECONDARY_POWER">
+ <value>Secondary Power</value>
+ </data>
+ <data name="IDS_CONTAINER_MINECART">
+ <value>Minecart</value>
+ </data>
+
+ <data name="IDS_NO_DLCOFFERS">
+ <value>There are no downloadable content offers of this type available for this title at the moment.</value>
+ </data>
+ <data name="IDS_PLAYER_JOINED">
+ <value>%s has joined the game.</value>
+ </data>
+ <data name="IDS_PLAYER_LEFT">
+ <value>%s has left the game.</value>
+ </data>
+ <data name="IDS_PLAYER_KICKED">
+ <value>%s was kicked from the game.</value>
+ </data>
+ <data name="IDS_TEXT_DELETE_SAVE">
+ <value>Are you sure you want to delete this save game?</value>
</data>
<data name="IDS_STRINGVERIFY_AWAITING_APPROVAL">
- <value>Awaiting approval</value>
+ <value>Awaiting approval</value>
</data>
<data name="IDS_STRINGVERIFY_CENSORED">
- <value>Censored</value>
+ <value>Censored</value>
</data>
<data name="IDS_NOWPLAYING">
- <value>Now playing: </value>
+ <value>Now playing: </value>
</data>
<data name="IDS_DEFAULTS_TITLE">
- <value>Reset Settings</value>
+ <value>Reset Settings</value>
</data>
<data name="IDS_DEFAULTS_TEXT">
- <value>Are you sure you would like to reset your settings to their default values?</value>
+ <value>Are you sure you would like to reset your settings to their default values?</value>
</data>
<data name="IDS_FATAL_ERROR_TITLE">
- <value>Loading Error</value>
+ <value>Loading Error</value>
</data>
<data name="IDS_FATAL_ERROR_TEXT">
- <value>"Minecraft: Xbox 360 Edition" has failed to load, and cannot continue.</value>
+ <value>"Minecraft: Xbox 360 Edition" has failed to load, and cannot continue.</value>
</data>
- <data name="IDS_GAME_HOST_NAME">
- <value>%s's Game</value>
+ <data name="IDS_GAME_HOST_NAME">
+ <value>%s's Game</value>
</data>
- <data name="IDS_GAME_HOST_NAME_UNKNOWN">
- <value>Unknown host game</value>
+ <data name="IDS_GAME_HOST_NAME_UNKNOWN">
+ <value>Unknown host game</value>
</data>
<data name="IDS_GUEST_ORDER_CHANGED_TITLE">
@@ -4642,13 +5136,13 @@ Would you like to unlock the full game?</value>
<data name="IDS_GUEST_ORDER_CHANGED_TEXT">
<value>A guest player has signed out causing all guest players to be removed from the game.</value>
</data>
- <data name="IDS_MUST_SIGN_IN_TITLE">
+ <data name="IDS_MUST_SIGN_IN_TITLE">
<value>Sign in</value>
</data>
<data name="IDS_MUST_SIGN_IN_TEXT">
<value>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?</value>
</data>
- <data name="IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE">
+ <data name="IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE">
<value>Multiplayer not allowed</value>
</data>
<data name="IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT">
@@ -4679,7 +5173,7 @@ Would you like to unlock the full game?</value>
<data name="IDS_NO_SKIN_PACK">
<value>No Pack: Default Skins</value>
</data>
- <data name="IDS_FAVORITES_SKIN_PACK">
+ <data name="IDS_FAVORITES_SKIN_PACK">
<value>Favorite Skins</value>
</data>
@@ -4733,7 +5227,7 @@ Please do not turn off your Xbox 360 console while this icon is on-screen.</valu
</data>
<data name="IDS_PROGRESS_AUTOSAVING_LEVEL">
- <value>Preparing to Autosave Level</value>
+ <value>Preparing to Autosave Level</value>
</data>
<data name="IDS_SLIDER_UISIZE">
@@ -4748,128 +5242,134 @@ Please do not turn off your Xbox 360 console while this icon is on-screen.</valu
</data>
<data name="IDS_UNLOCK_DLC_TITLE">
- <value>Unlock Skin Pack</value>
+ <value>Unlock Skin Pack</value>
</data>
<data name="IDS_UNLOCK_DLC_SKIN">
- <value>To use the skin you have selected, you need to unlock this skin pack.
+ <value>To use the skin you have selected, you need to unlock this skin pack.
Would you like to unlock this skin pack now?</value>
</data>
<data name="IDS_UNLOCK_DLC_TEXTUREPACK_TITLE">
- <value>Unlock Texture Pack</value>
+ <value>Unlock Texture Pack</value>
</data>
<data name="IDS_UNLOCK_DLC_TEXTUREPACK_TEXT">
- <value>To use this texture pack for your world, you need to unlock it.
+ <value>To use this texture pack for your world, you need to unlock it.
Would you like to unlock it now?</value>
</data>
<data name="IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE">
- <value>Trial Texture Pack</value>
+ <value>Trial Texture Pack</value>
</data>
<data name="IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT">
- <value>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.
+ <value>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?</value>
</data>
<data name="IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE">
- <value>Texture Pack Not Present</value>
+ <value>Texture Pack Not Present</value>
</data>
<data name="IDS_DLC_TEXTUREPACK_UNLOCK_TITLE">
- <value>Unlock Full Version</value>
+ <value>Unlock Full Version</value>
</data>
- <data name="IDS_DLC_TEXTUREPACK_GET_TRIAL_TITLE">
- <value>Download Trial Version</value>
+ <data name="IDS_DLC_TEXTUREPACK_GET_TRIAL_TITLE">
+ <value>Download Trial Version</value>
</data>
- <data name="IDS_DLC_TEXTUREPACK_GET_FULL_TITLE">
- <value>Download Full Version</value>
+ <data name="IDS_DLC_TEXTUREPACK_GET_FULL_TITLE">
+ <value>Download Full Version</value>
</data>
<data name="IDS_DLC_TEXTUREPACK_NOT_PRESENT">
- <value>This world uses a mash-up pack or texture pack you don't have!
+ <value>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?</value>
</data>
<data name="IDS_TEXTURE_PACK_TRIALVERSION">
- <value>Get Trial Version</value>
+ <value>Get Trial Version</value>
</data>
<data name="IDS_TEXTUREPACK_FULLVERSION">
- <value>Get Full Version</value>
+ <value>Get Full Version</value>
</data>
<data name="IDS_UNLOCK_KICK_PLAYER_TITLE">
- <value>Kick player</value>
+ <value>Kick player</value>
</data>
<data name="IDS_UNLOCK_KICK_PLAYER">
- <value>Are you sure you want to kick this player from the game? They will not be able to rejoin until you restart the world.</value>
+ <value>Are you sure you want to kick this player from the game? They will not be able to rejoin until you restart the world.</value>
</data>
<data name="IDS_GAMERPICS">
- <value>Gamerpics Packs</value>
+ <value>Gamerpics Packs</value>
</data>
<data name="IDS_THEMES">
- <value>Themes</value>
+ <value>Themes</value>
</data>
<data name="IDS_SKINS">
- <value>Skins Packs</value>
+ <value>Skins Packs</value>
</data>
<data name="IDS_ALLOWFRIENDSOFFRIENDS">
- <value>Allow friends of friends</value>
+ <value>Allow friends of friends</value>
</data>
<data name="IDS_NOTALLOWED_FRIENDSOFFRIENDS">
- <value>You cannot join this game because it has been limited to players who are friends of the host.</value>
+ <value>You cannot join this game because it has been limited to players who are friends of the host.</value>
</data>
<data name="IDS_CANTJOIN_TITLE">
- <value>Can't Join Game</value>
+ <value>Can't Join Game</value>
</data>
<data name="IDS_SELECTED">
- <value>Selected</value>
+ <value>Selected</value>
</data>
<data name="IDS_SELECTED_SKIN">
- <value>Selected skin:</value>
+ <value>Selected skin:</value>
</data>
<data name="IDS_CORRUPT_DLC_TITLE">
- <value>Corrupt Downloadable Content</value>
+ <value>Corrupt Downloadable Content</value>
</data>
<data name="IDS_CORRUPT_DLC">
- <value>This downloadable content is corrupt and cannot be used. You need to delete it, then re-install it from the Minecraft Store menu.</value>
+ <value>This downloadable content is corrupt and cannot be used. You need to delete it, then re-install it from the Minecraft Store menu.</value>
</data>
<data name="IDS_CORRUPT_DLC_MULTIPLE">
- <value>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.</value>
+ <value>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.</value>
</data>
<data name="IDS_GAME_MODE_CHANGED">
- <value>Your game mode has been changed</value>
+ <value>Your game mode has been changed</value>
</data>
<data name="IDS_RENAME_WORLD_TITLE">
- <value>Rename Your World</value>
+ <value>Rename Your World</value>
</data>
<data name="IDS_RENAME_WORLD_TEXT">
- <value>Enter the new name for your world</value>
+ <value>Enter the new name for your world</value>
</data>
<data name="IDS_GAMEMODE_SURVIVAL">
- <value>Game Mode: Survival</value>
+ <value>Game Mode: Survival</value>
</data>
<data name="IDS_GAMEMODE_CREATIVE">
- <value>Game Mode: Creative</value>
+ <value>Game Mode: Creative</value>
+ </data>
+ <data name="IDS_GAMEMODE_ADVENTURE">
+ <value>Game Mode: Adventure</value>
</data>
<data name="IDS_SURVIVAL">
- <value>Survival</value>
+ <value>Survival</value>
</data>
<data name="IDS_CREATIVE">
- <value>Creative</value>
+ <value>Creative</value>
+ </data>
+ <data name="IDS_ADVENTURE">
+ <value>Adventure</value>
</data>
<data name="IDS_CREATED_IN_SURVIVAL">
- <value>Created in Survival Mode</value>
+ <value>Created in Survival Mode</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE">
- <value>Created in Creative Mode</value>
+ <value>Created in Creative Mode</value>
</data>
<data name="IDS_CHECKBOX_RENDER_CLOUDS">
- <value>Render Clouds</value>
+ <value>Render Clouds</value>
</data>
<data name="IDS_TEXT_SAVEOPTIONS">
- <value>What would you like to do with this save game?</value>
+ <value>What would you like to do with this save game?</value>
</data>
<data name="IDS_TITLE_RENAMESAVE">
<value>Rename Save</value>
@@ -4890,6 +5390,9 @@ Would you like to install the mash-up pack or texture pack now?</value>
<data name="IDS_LEVELTYPE_SUPERFLAT">
<value>Superflat</value>
</data>
+<data name="IDS_GAMEOPTION_SEED">
+ <value>Enter a seed to generate the same terrain again. Leave blank for a random world.</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE">
<value>When enabled, the game will be an online game.</value>
</data>
@@ -4926,6 +5429,29 @@ Would you like to install the mash-up pack or texture pack now?</value>
<data name="IDS_GAMEOPTION_BONUS_CHEST">
<value>When enabled, a chest containing some useful items will be created near the player spawn point.</value>
</data>
+
+<data name="IDS_GAMEOPTION_MOB_GRIEFING">
+ <value>When disabled, prevents monsters and animals from changing blocks (for example, Creeper explosions won't destroy blocks and Sheep won't remove Grass) or picking up items.</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY">
+ <value>When enabled, players will keep their inventory when they die.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING">
+ <value>When disabled, mobs will not spawn naturally.</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT">
+ <value>When disabled, monsters and animals will not drop loot (for example, Creepers won't drop gunpowder).</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS">
+ <value>When disabled, blocks will not drop items when destroyed (for example, Stone blocks won't drop Cobblestone).</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN">
+ <value>When disabled, players will not regenerate health naturally.</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE">
+ <value>When disabled, the time of day will not change.</value>
+</data>
+
<data name="IDS_DLC_MENU_SKINPACKS">
<value>Skin Packs</value>
</data>
@@ -5001,7 +5527,72 @@ Would you like to install the mash-up pack or texture pack now?</value>
<value>{*PLAYER*} was pummeled by {*SOURCE*}</value>
</data>
<data name="IDS_DEATH_INDIRECT_MAGIC">
- <value>{*PLAYER*} was killed by {*SOURCE*}</value>
+ <value>{*PLAYER*} was killed by {*SOURCE*} using magic</value>
+</data>
+
+
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER">
+ <value>{*PLAYER*} fell off a ladder</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES">
+ <value>{*PLAYER*} fell off some vines</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER">
+ <value>{*PLAYER*} fell out of the water</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC">
+ <value>{*PLAYER*} fell from a high place</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER">
+ <value>{*PLAYER*} was doomed to fall by {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST">
+ <value>{*PLAYER*} was doomed to fall by {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM">
+ <value>{*PLAYER*} was doomed to fall by {*SOURCE*} using {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH">
+ <value>{*PLAYER*} fell too far and was finished by {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM">
+ <value>{*PLAYER*} fell too far and was finished by {*SOURCE*} using {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER">
+ <value>{*PLAYER*} walked into fire whilst fighting {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER">
+ <value>{*PLAYER*} was burnt to a crisp whilst fighting {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER">
+ <value>{*PLAYER*} tried to swim in lava to escape {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER">
+ <value>{*PLAYER*} drowned whilst trying to escape {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER">
+ <value>{*PLAYER*} walked into a cactus whilst trying to escape {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER">
+ <value>{*PLAYER*} was blown up by {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_WITHER">
+ <value>{*PLAYER*} withered away</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM">
+ <value>{*PLAYER*} was slain by {*SOURCE*} using {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM">
+ <value>{*PLAYER*} was shot by {*SOURCE*} using {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM">
+ <value>{*PLAYER*} was fireballed by {*SOURCE*} using {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM">
+ <value>{*PLAYER*} was pummeled by {*SOURCE*} using {*ITEM*}</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM">
+ <value>{*PLAYER*} was killed by {*SOURCE*} using {*ITEM*}</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG">
@@ -5210,348 +5801,380 @@ Would you like to install the mash-up pack or texture pack now?</value>
</data>
<data name="IDS_RESETNETHER_TITLE">
- <value>Reset Nether</value>
+ <value>Reset Nether</value>
</data>
<data name="IDS_RESETNETHER_TEXT">
- <value>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!</value>
+ <value>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!</value>
</data>
<data name="IDS_RESET_NETHER">
- <value>Reset Nether</value>
+ <value>Reset Nether</value>
</data>
<data name="IDS_DONT_RESET_NETHER">
- <value>Don't Reset Nether</value>
+ <value>Don't Reset Nether</value>
</data>
<data name="IDS_CANT_SHEAR_MOOSHROOM">
- <value>Can't shear this Mooshroom at the moment. The maximum number of Pigs, Sheep, Cows and Cats has been reached.</value>
+ <value>Can't shear this Mooshroom at the moment. The maximum number of Pigs, Sheep, Cows, Cats and Horses has been reached.</value>
</data>
<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED">
- <value>Can't use Spawn Egg at the moment. The maximum number of Pigs, Sheep, Cows and Cats has been reached.</value>
+ <value>Can't use Spawn Egg at the moment. The maximum number of Pigs, Sheep, Cows, Cats and Horses has been reached.</value>
</data>
<data name="IDS_MAX_MOOSHROOMS_SPAWNED">
- <value>Can't use Spawn Egg at the moment. The maximum number of Mooshrooms has been reached.</value>
+ <value>Can't use Spawn Egg at the moment. The maximum number of Mooshrooms has been reached.</value>
</data>
<data name="IDS_MAX_WOLVES_SPAWNED">
- <value>Can't use Spawn Egg at the moment. The maximum number of Wolves in a world has been reached.</value>
+ <value>Can't use Spawn Egg at the moment. The maximum number of Wolves in a world has been reached.</value>
</data>
<data name="IDS_MAX_CHICKENS_SPAWNED">
- <value>Can't use Spawn Egg at the moment. The maximum number of Chickens in a world has been reached.</value>
+ <value>Can't use Spawn Egg at the moment. The maximum number of Chickens in a world has been reached.</value>
</data>
<data name="IDS_MAX_SQUID_SPAWNED">
- <value>Can't use Spawn Egg at the moment. The maximum number of Squid in a world has been reached.</value>
+ <value>Can't use Spawn Egg at the moment. The maximum number of Squid in a world has been reached.</value>
+</data>
+<data name="IDS_MAX_BATS_SPAWNED">
+ <value>Can't use Spawn Egg at the moment. The maximum number of Bats in a world has been reached.</value>
</data>
<data name="IDS_MAX_ENEMIES_SPAWNED">
- <value>Can't use Spawn Egg at the moment. The maximum number of enemies in a world has been reached.</value>
+ <value>Can't use Spawn Egg at the moment. The maximum number of enemies in a world has been reached.</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED">
- <value>Can't use Spawn Egg at the moment. The maximum number of villagers in a world has been reached.</value>
+ <value>Can't use Spawn Egg at the moment. The maximum number of villagers in a world has been reached.</value>
</data>
<data name="IDS_MAX_HANGINGENTITIES">
- <value>The maximum number of Paintings/Item Frames in a world has been reached.</value>
+ <value>The maximum number of Paintings/Item Frames in a world has been reached.</value>
</data>
<data name="IDS_CANT_SPAWN_IN_PEACEFUL">
- <value>You can't spawn enemies in Peaceful mode.</value>
+ <value>You can't spawn enemies in Peaceful mode.</value>
</data>
<data name="IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED">
- <value>This animal can't enter Love Mode. The maximum number of breeding Pigs, Sheep, Cows and Cats has been reached.</value>
+ <value>This animal can't enter Love Mode. The maximum number of breeding Pigs, Sheep, Cows, Cats and Horses has been reached.</value>
</data>
<data name="IDS_MAX_WOLVES_BRED">
- <value>This animal can't enter Love Mode. The maximum number of breeding Wolves has been reached.</value>
+ <value>This animal can't enter Love Mode. The maximum number of breeding Wolves has been reached.</value>
</data>
<data name="IDS_MAX_CHICKENS_BRED">
- <value>This animal can't enter Love Mode. The maximum number of breeding Chickens has been reached.</value>
+ <value>This animal can't enter Love Mode. The maximum number of breeding Chickens has been reached.</value>
</data>
+<data name="IDS_MAX_HORSES_BRED">
+ <value>This animal can't enter Love Mode. The maximum number of breeding horses has been reached.</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED">
- <value>This animal can't enter Love Mode. The maximum number of breeding Mooshrooms has been reached.</value>
+ <value>This animal can't enter Love Mode. The maximum number of breeding Mooshrooms has been reached.</value>
</data>
<data name="IDS_MAX_BOATS">
- <value>The maximum number of Boats in a world has been reached.</value>
+ <value>The maximum number of Boats in a world has been reached.</value>
</data>
<data name="IDS_MAX_SKULL_TILES">
- <value>The maximum number of Mob Heads in a world has been reached.</value>
+ <value>The maximum number of Mob Heads in a world has been reached.</value>
</data>
- <data name="IDS_INVERT_LOOK">
- <value>Invert Look</value>
+ <data name="IDS_INVERT_LOOK">
+ <value>Invert Look</value>
</data>
- <data name="IDS_SOUTHPAW">
- <value>Southpaw</value>
+ <data name="IDS_SOUTHPAW">
+ <value>Southpaw</value>
</data>
- <data name="IDS_YOU_DIED">
- <value>You Died!</value>
+ <data name="IDS_YOU_DIED">
+ <value>You Died!</value>
</data>
- <data name="IDS_RESPAWN">
- <value>Respawn</value>
+ <data name="IDS_RESPAWN">
+ <value>Respawn</value>
</data>
- <data name="IDS_DOWNLOADABLE_CONTENT_OFFERS">
- <value>Downloadable Content Offers</value>
+ <data name="IDS_DOWNLOADABLE_CONTENT_OFFERS">
+ <value>Downloadable Content Offers</value>
</data>
- <data name="IDS_CHANGE_SKIN">
- <value>Change Skin</value>
- </data>
- <data name="IDS_HOW_TO_PLAY">
- <value>How To Play</value>
- </data>
- <data name="IDS_CONTROLS">
- <value>Controls</value>
+ <data name="IDS_CHANGE_SKIN">
+ <value>Change Skin</value>
</data>
- <data name="IDS_SETTINGS">
- <value>Settings</value>
+ <data name="IDS_HOW_TO_PLAY">
+ <value>How To Play</value>
</data>
- <data name="IDS_CREDITS">
- <value>Credits</value>
+ <data name="IDS_CONTROLS">
+ <value>Controls</value>
</data>
- <data name="IDS_REINSTALL_CONTENT">
- <value>Reinstall Content</value>
+ <data name="IDS_SETTINGS">
+ <value>Settings</value>
</data>
- <data name="IDS_DEBUG_SETTINGS">
- <value>Debug Settings</value>
+ <data name="IDS_CREDITS">
+ <value>Credits</value>
</data>
+ <data name="IDS_REINSTALL_CONTENT">
+ <value>Reinstall Content</value>
+ </data>
+ <data name="IDS_DEBUG_SETTINGS">
+ <value>Debug Settings</value>
+ </data>
- <data name="IDS_FIRE_SPREADS">
- <value>Fire Spreads</value>
- </data>
- <data name="IDS_TNT_EXPLODES">
- <value>TNT Explodes</value>
- </data>
- <data name="IDS_PLAYER_VS_PLAYER">
- <value>Player vs Player</value>
- </data>
- <data name="IDS_TRUST_PLAYERS">
- <value>Trust Players</value>
- </data>
- <data name="IDS_HOST_PRIVILEGES">
- <value>Host Privileges</value>
- </data>
- <data name="IDS_GENERATE_STRUCTURES">
- <value>Generate Structures</value>
- </data>
- <data name="IDS_SUPERFLAT_WORLD">
- <value>Superflat World</value>
- </data>
- <data name="IDS_BONUS_CHEST">
- <value>Bonus Chest</value>
- </data>
- <data name="IDS_WORLD_OPTIONS">
- <value>World Options</value>
- </data>
+ <data name="IDS_FIRE_SPREADS">
+ <value>Fire Spreads</value>
+ </data>
+ <data name="IDS_TNT_EXPLODES">
+ <value>TNT Explodes</value>
+ </data>
+ <data name="IDS_PLAYER_VS_PLAYER">
+ <value>Player vs Player</value>
+ </data>
+ <data name="IDS_TRUST_PLAYERS">
+ <value>Trust Players</value>
+ </data>
+ <data name="IDS_HOST_PRIVILEGES">
+ <value>Host Privileges</value>
+ </data>
+ <data name="IDS_GENERATE_STRUCTURES">
+ <value>Generate Structures</value>
+ </data>
+ <data name="IDS_SUPERFLAT_WORLD">
+ <value>Superflat World</value>
+ </data>
+ <data name="IDS_BONUS_CHEST">
+ <value>Bonus Chest</value>
+ </data>
+
+ <data name="IDS_WORLD_OPTIONS">
+ <value>World Options</value>
+ </data>
+ <data name="IDS_GAME_OPTIONS">
+ <value>Game Options</value>
+ </data>
+
+ <data name="IDS_MOB_GRIEFING">
+ <value>Mob Griefing</value>
+ </data>
+ <data name="IDS_KEEP_INVENTORY">
+ <value>Keep Inventory</value>
+ </data>
+ <data name="IDS_MOB_SPAWNING">
+ <value>Mob Spawning</value>
+ </data>
+ <data name="IDS_MOB_LOOT">
+ <value>Mob Loot</value>
+ </data>
+ <data name="IDS_TILE_DROPS">
+ <value>Tile Drops</value>
+ </data>
+ <data name="IDS_NATURAL_REGEN">
+ <value>Natural Regeneration</value>
+ </data>
+ <data name="IDS_DAYLIGHT_CYCLE">
+ <value>Daylight Cycle</value>
+ </data>
- <data name="IDS_CAN_BUILD_AND_MINE">
- <value>Can Build and Mine</value>
+ <data name="IDS_CAN_BUILD_AND_MINE">
+ <value>Can Build and Mine</value>
</data>
- <data name="IDS_CAN_USE_DOORS_AND_SWITCHES">
- <value>Can Use Doors and Switches</value>
+ <data name="IDS_CAN_USE_DOORS_AND_SWITCHES">
+ <value>Can Use Doors and Switches</value>
</data>
- <data name="IDS_CAN_OPEN_CONTAINERS">
- <value>Can Open Containers</value>
+ <data name="IDS_CAN_OPEN_CONTAINERS">
+ <value>Can Open Containers</value>
</data>
- <data name="IDS_CAN_ATTACK_PLAYERS">
- <value>Can Attack Players</value>
+ <data name="IDS_CAN_ATTACK_PLAYERS">
+ <value>Can Attack Players</value>
</data>
- <data name="IDS_CAN_ATTACK_ANIMALS">
- <value>Can Attack Animals</value>
+ <data name="IDS_CAN_ATTACK_ANIMALS">
+ <value>Can Attack Animals</value>
</data>
- <data name="IDS_MODERATOR">
- <value>Moderator</value>
+ <data name="IDS_MODERATOR">
+ <value>Moderator</value>
</data>
- <data name="IDS_KICK_PLAYER">
- <value>Kick Player</value>
+ <data name="IDS_KICK_PLAYER">
+ <value>Kick Player</value>
</data>
- <data name="IDS_CAN_FLY">
- <value>Can Fly</value>
+ <data name="IDS_CAN_FLY">
+ <value>Can Fly</value>
</data>
- <data name="IDS_DISABLE_EXHAUSTION">
- <value>Disable Exhaustion</value>
+ <data name="IDS_DISABLE_EXHAUSTION">
+ <value>Disable Exhaustion</value>
</data>
- <data name="IDS_INVISIBLE">
- <value>Invisible</value>
+ <data name="IDS_INVISIBLE">
+ <value>Invisible</value>
</data>
- <data name="IDS_HOST_OPTIONS">
- <value>Host Options</value>
+ <data name="IDS_HOST_OPTIONS">
+ <value>Host Options</value>
</data>
- <data name="IDS_PLAYERS_INVITE">
- <value>Players/Invite</value>
+ <data name="IDS_PLAYERS_INVITE">
+ <value>Players/Invite</value>
</data>
- <data name="IDS_ONLINE_GAME">
- <value>Online Game</value>
+ <data name="IDS_ONLINE_GAME">
+ <value>Online Game</value>
</data>
- <data name="IDS_INVITE_ONLY">
- <value>Invite Only</value>
+ <data name="IDS_INVITE_ONLY">
+ <value>Invite Only</value>
</data>
- <data name="IDS_MORE_OPTIONS">
- <value>More Options</value>
+ <data name="IDS_MORE_OPTIONS">
+ <value>More Options</value>
</data>
- <data name="IDS_LOAD">
- <value>Load</value>
+ <data name="IDS_LOAD">
+ <value>Load</value>
</data>
- <data name="IDS_DEFAULT_WORLD_NAME">
- <value>New World</value>
+ <data name="IDS_DEFAULT_WORLD_NAME">
+ <value>New World</value>
</data>
- <data name="IDS_WORLD_NAME">
- <value>World Name</value>
+ <data name="IDS_WORLD_NAME">
+ <value>World Name</value>
</data>
- <data name="IDS_CREATE_NEW_WORLD_SEED">
- <value>Seed for the World Generator</value>
+ <data name="IDS_CREATE_NEW_WORLD_SEED">
+ <value>Seed for the World Generator</value>
</data>
- <data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED">
- <value>Leave blank for a random seed</value>
+ <data name="IDS_CREATE_NEW_WORLD_RANDOM_SEED">
+ <value>Leave blank for a random seed</value>
</data>
- <data name="IDS_PLAYERS">
- <value>Players</value>
+ <data name="IDS_PLAYERS">
+ <value>Players</value>
</data>
- <data name="IDS_JOIN_GAME">
- <value>Join Game</value>
+ <data name="IDS_JOIN_GAME">
+ <value>Join Game</value>
</data>
- <data name="IDS_START_GAME">
- <value>Start Game</value>
+ <data name="IDS_START_GAME">
+ <value>Start Game</value>
</data>
- <data name="IDS_NO_GAMES_FOUND">
- <value>No Games Found</value>
+ <data name="IDS_NO_GAMES_FOUND">
+ <value>No Games Found</value>
</data>
- <data name="IDS_PLAY_GAME">
- <value>Play Game</value>
+ <data name="IDS_PLAY_GAME">
+ <value>Play Game</value>
</data>
- <data name="IDS_LEADERBOARDS">
- <value>Leaderboards</value>
+ <data name="IDS_LEADERBOARDS">
+ <value>Leaderboards</value>
</data>
- <data name="IDS_ACHIEVEMENTS">
- <value>Achievements</value>
+ <data name="IDS_ACHIEVEMENTS">
+ <value>Achievements</value>
</data>
- <data name="IDS_HELP_AND_OPTIONS">
- <value>Help &amp; Options</value>
+ <data name="IDS_HELP_AND_OPTIONS">
+ <value>Help &amp; Options</value>
</data>
- <data name="IDS_UNLOCK_FULL_GAME">
- <value>Unlock Full Game</value>
+ <data name="IDS_UNLOCK_FULL_GAME">
+ <value>Unlock Full Game</value>
</data>
- <data name="IDS_RESUME_GAME">
- <value>Resume Game</value>
+ <data name="IDS_RESUME_GAME">
+ <value>Resume Game</value>
</data>
- <data name="IDS_SAVE_GAME">
- <value>Save Game</value>
+ <data name="IDS_SAVE_GAME">
+ <value>Save Game</value>
</data>
- <data name="IDS_LABEL_DIFFICULTY">
- <value>Difficulty:</value>
+ <data name="IDS_LABEL_DIFFICULTY">
+ <value>Difficulty:</value>
</data>
- <data name="IDS_LABEL_GAME_TYPE">
- <value>Game Type:</value>
+ <data name="IDS_LABEL_GAME_TYPE">
+ <value>Game Type:</value>
</data>
- <data name="IDS_LABEL_GAMERTAGS">
- <value>Gamertags:</value>
+ <data name="IDS_LABEL_GAMERTAGS">
+ <value>Gamertags:</value>
</data>
- <data name="IDS_LABEL_STRUCTURES">
- <value>Structures:</value>
+ <data name="IDS_LABEL_STRUCTURES">
+ <value>Structures:</value>
</data>
- <data name="IDS_LABEL_LEVEL_TYPE">
- <value>Level Type:</value>
+ <data name="IDS_LABEL_LEVEL_TYPE">
+ <value>Level Type:</value>
</data>
- <data name="IDS_LABEL_PvP">
- <value>PvP:</value>
+ <data name="IDS_LABEL_PvP">
+ <value>PvP:</value>
</data>
- <data name="IDS_LABEL_TRUST">
- <value>Trust Players:</value>
+ <data name="IDS_LABEL_TRUST">
+ <value>Trust Players:</value>
</data>
- <data name="IDS_LABEL_TNT">
- <value>TNT:</value>
+ <data name="IDS_LABEL_TNT">
+ <value>TNT:</value>
</data>
- <data name="IDS_LABEL_FIRE_SPREADS">
- <value>Fire Spreads:</value>
+ <data name="IDS_LABEL_FIRE_SPREADS">
+ <value>Fire Spreads:</value>
</data>
- <data name="IDS_REINSTALL_THEME">
- <value>Reinstall Theme</value>
+ <data name="IDS_REINSTALL_THEME">
+ <value>Reinstall Theme</value>
</data>
- <data name="IDS_REINSTALL_GAMERPIC_1">
- <value>Reinstall Gamerpic 1</value>
+ <data name="IDS_REINSTALL_GAMERPIC_1">
+ <value>Reinstall Gamerpic 1</value>
</data>
- <data name="IDS_REINSTALL_GAMERPIC_2">
- <value>Reinstall Gamerpic 2</value>
+ <data name="IDS_REINSTALL_GAMERPIC_2">
+ <value>Reinstall Gamerpic 2</value>
</data>
- <data name="IDS_REINSTALL_AVATAR_ITEM_1">
- <value>Reinstall Avatar Item 1</value>
+ <data name="IDS_REINSTALL_AVATAR_ITEM_1">
+ <value>Reinstall Avatar Item 1</value>
</data>
- <data name="IDS_REINSTALL_AVATAR_ITEM_2">
- <value>Reinstall Avatar Item 2</value>
+ <data name="IDS_REINSTALL_AVATAR_ITEM_2">
+ <value>Reinstall Avatar Item 2</value>
</data>
- <data name="IDS_REINSTALL_AVATAR_ITEM_3">
- <value>Reinstall Avatar Item 3</value>
+ <data name="IDS_REINSTALL_AVATAR_ITEM_3">
+ <value>Reinstall Avatar Item 3</value>
</data>
- <data name="IDS_OPTIONS">
- <value>Options</value>
+ <data name="IDS_OPTIONS">
+ <value>Options</value>
</data>
- <data name="IDS_AUDIO">
- <value>Audio</value>
+ <data name="IDS_AUDIO">
+ <value>Audio</value>
</data>
- <data name="IDS_CONTROL">
- <value>Control</value>
+ <data name="IDS_CONTROL">
+ <value>Control</value>
</data>
- <data name="IDS_GRAPHICS">
- <value>Graphics</value>
+ <data name="IDS_GRAPHICS">
+ <value>Graphics</value>
</data>
- <data name="IDS_USER_INTERFACE">
- <value>User Interface</value>
+ <data name="IDS_USER_INTERFACE">
+ <value>User Interface</value>
</data>
- <data name="IDS_RESET_TO_DEFAULTS">
- <value>Reset to Defaults</value>
+ <data name="IDS_RESET_TO_DEFAULTS">
+ <value>Reset to Defaults</value>
</data>
- <data name="IDS_VIEW_BOBBING">
- <value>View Bobbing</value>
+ <data name="IDS_VIEW_BOBBING">
+ <value>View Bobbing</value>
</data>
- <data name="IDS_HINTS">
- <value>Hints</value>
+ <data name="IDS_HINTS">
+ <value>Hints</value>
</data>
- <data name="IDS_IN_GAME_TOOLTIPS">
- <value>In-Game Tooltips</value>
+ <data name="IDS_IN_GAME_TOOLTIPS">
+ <value>In-Game Tooltips</value>
</data>
- <data name="IDS_IN_GAME_GAMERTAGS">
- <value>In-Game Gamertags</value>
+ <data name="IDS_IN_GAME_GAMERTAGS">
+ <value>In-Game Gamertags</value>
</data>
- <data name="IDS_CHECKBOX_VERTICAL_SPLIT_SCREEN">
- <value>2 Player Split-screen Vertical</value>
+ <data name="IDS_CHECKBOX_VERTICAL_SPLIT_SCREEN">
+ <value>2 Player Split-screen Vertical</value>
</data>
- <data name="IDS_DONE">
- <value>Done</value>
+ <data name="IDS_DONE">
+ <value>Done</value>
</data>
- <data name="IDS_EDIT_SIGN_MESSAGE">
- <value>Edit sign message:</value>
+ <data name="IDS_EDIT_SIGN_MESSAGE">
+ <value>Edit sign message:</value>
</data>
- <data name="IDS_SOCIAL_TEXT">
- <value>Fill in the details to accompany your screenshot</value>
+ <data name="IDS_SOCIAL_TEXT">
+ <value>Fill in the details to accompany your screenshot</value>
</data>
- <data name="IDS_SOCIAL_LABEL_CAPTION">
- <value>Caption</value>
+ <data name="IDS_SOCIAL_LABEL_CAPTION">
+ <value>Caption</value>
</data>
- <data name="IDS_SOCIAL_DEFAULT_CAPTION">
- <value>Screenshot from in-game</value>
+ <data name="IDS_SOCIAL_DEFAULT_CAPTION">
+ <value>Screenshot from in-game</value>
</data>
- <data name="IDS_SOCIAL_LABEL_DESCRIPTION">
- <value>Edit sign message:</value>
+ <data name="IDS_SOCIAL_LABEL_DESCRIPTION">
+ <value>Edit sign message:</value>
</data>
- <data name="IDS_SOCIAL_DEFAULT_DESCRIPTION">
- <value>Look what I made in Minecraft: Xbox 360 Edition!</value>
+ <data name="IDS_SOCIAL_DEFAULT_DESCRIPTION">
+ <value>Look what I made in Minecraft: Xbox 360 Edition!</value>
</data>
- <data name="IDS_DEFAULT_TEXTUREPACK">
- <value>The classic Minecraft textures, icons and user interface!</value>
+ <data name="IDS_DEFAULT_TEXTUREPACK">
+ <value>The classic Minecraft textures, icons and user interface!</value>
</data>
- <data name="IDS_UNHIDE_MASHUP_WORLDS">
- <value>Show all Mash-up Worlds</value>
+ <data name="IDS_UNHIDE_MASHUP_WORLDS">
+ <value>Show all Mash-up Worlds</value>
</data>
<data name="IDS_XBONE_SELECTSLOT">
<value>Select Transfer Save Slot</value>
@@ -5635,6 +6258,18 @@ Would you like to install the mash-up pack or texture pack now?</value>
<data name="IDS_POTION_POISON">
<value>Poison</value>
</data>
+ <data name="IDS_POTION_WITHER">
+ <value>Wither</value>
+ </data>
+ <data name="IDS_POTION_HEALTHBOOST">
+ <value>Health Boost</value>
+ </data>
+ <data name="IDS_POTION_ABSORPTION">
+ <value>Absorption</value>
+ </data>
+ <data name="IDS_POTION_SATURATION">
+ <value>Saturation</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX">
<value>of Swiftness</value>
@@ -5693,6 +6328,18 @@ Would you like to install the mash-up pack or texture pack now?</value>
<data name="IDS_POTION_POISON_POSTFIX">
<value>of Poison</value>
</data>
+ <data name="IDS_POTION_WITHER_POSTFIX">
+ <value>of Decay</value>
+ </data>
+ <data name="IDS_POTION_HEALTHBOOST_POSTFIX">
+ <value>of Health Boost</value>
+ </data>
+ <data name="IDS_POTION_ABSORPTION_POSTFIX">
+ <value>of Absorption</value>
+ </data>
+ <data name="IDS_POTION_SATURATION_POSTFIX">
+ <value>of Saturation</value>
+ </data>
<data name="IDS_POTION_POTENCY_0">
<value></value>
@@ -5841,6 +6488,32 @@ Would you like to install the mash-up pack or texture pack now?</value>
<data name="IDS_POTION_DESC_POISON">
<value>Reduces health of the affected players, animals and monsters over time.</value>
</data>
+
+ <data name="IDS_POTION_EFFECTS_WHENDRANK">
+ <value>When Applied:</value>
+ </data>
+
+ <data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH">
+ <value>Horse Jump Strength</value>
+ </data>
+ <data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS">
+ <value>Zombie Reinforcements</value>
+ </data>
+ <data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH">
+ <value>Max Health</value>
+ </data>
+ <data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE">
+ <value>Mob Follow Range</value>
+ </data>
+ <data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE">
+ <value>Knockback Resistance</value>
+ </data>
+ <data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED">
+ <value>Speed</value>
+ </data>
+ <data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE">
+ <value>Attack Damage</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL">
<value>Sharpness</value>
@@ -5983,7 +6656,7 @@ Would you like to install the mash-up pack or texture pack now?</value>
<value>Restores 3{*ICON_SHANK_01*}. Created by cooking a potato in a furnace.</value>
</data>
<data name="IDS_DESC_POTATO_POISONOUS">
- <value>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.</value>
+ <value>Restores 1{*ICON_SHANK_01*}. Eating this can cause you to become poisoned.</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN">
<value>Restores 3{*ICON_SHANK_01*}. Crafted from a carrot and gold nuggets.</value>
diff --git a/Minecraft.Client/Common/Media/xuiscene_anvil_480.h b/Minecraft.Client/Common/Media/xuiscene_anvil_480.h
new file mode 100644
index 00000000..9d59bc38
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_anvil_480.h
@@ -0,0 +1,369 @@
+#define IDC_AnvilText L"AnvilText"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Ingredient L"Ingredient"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Ingredient2 L"Ingredient2"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Result L"Result"
+#define IDC_AnvilTextInput L"AnvilTextInput"
+#define IDC_LabelAffordable L"LabelAffordable"
+#define IDC_LabelExpensive L"LabelExpensive"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_AnvilHammer L"AnvilHammer"
+#define IDC_AnvilPlus L"AnvilPlus"
+#define IDC_AnvilArrow L"AnvilArrow"
+#define IDC_AnvilCross L"AnvilCross"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_XuiSceneAnvil L"XuiSceneAnvil"
diff --git a/Minecraft.Client/Common/Media/xuiscene_anvil_small.h b/Minecraft.Client/Common/Media/xuiscene_anvil_small.h
new file mode 100644
index 00000000..fdedc7b5
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_anvil_small.h
@@ -0,0 +1,390 @@
+#define IDC_AnvilText L"AnvilText"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Ingredient L"Ingredient"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Ingredient2 L"Ingredient2"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Result L"Result"
+#define IDC_AnvilTextInput L"AnvilTextInput"
+#define IDC_LabelAffordable L"LabelAffordable"
+#define IDC_LabelExpensive L"LabelExpensive"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_AnvilHammer L"AnvilHammer"
+#define IDC_AnvilPlus L"AnvilPlus"
+#define IDC_AnvilArrow L"AnvilArrow"
+#define IDC_AnvilCross L"AnvilCross"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_XuiSceneAnvil L"XuiSceneAnvil"
diff --git a/Minecraft.Client/Common/Media/xuiscene_base.h b/Minecraft.Client/Common/Media/xuiscene_base.h
index a4e71ad6..28701d0a 100644
--- a/Minecraft.Client/Common/Media/xuiscene_base.h
+++ b/Minecraft.Client/Common/Media/xuiscene_base.h
@@ -6,6 +6,7 @@
#define IDC_XuiSceneHudRoot L"XuiSceneHudRoot"
#define IDC_XuiSceneChatRoot L"XuiSceneChatRoot"
#define IDC_XuiSceneContainer L"XuiSceneContainer"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -16,6 +17,7 @@
#define IDC_BButton L"BButton"
#define IDC_AButton L"AButton"
#define IDC_Tooltips L"Tooltips"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -47,6 +49,7 @@
#define IDC_XuiSceneHudRoot L"XuiSceneHudRoot"
#define IDC_XuiSceneChatRoot L"XuiSceneChatRoot"
#define IDC_XuiSceneContainer L"XuiSceneContainer"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -57,6 +60,7 @@
#define IDC_BButton L"BButton"
#define IDC_AButton L"AButton"
#define IDC_Tooltips L"Tooltips"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -88,6 +92,7 @@
#define IDC_XuiSceneHudRoot L"XuiSceneHudRoot"
#define IDC_XuiSceneChatRoot L"XuiSceneChatRoot"
#define IDC_XuiSceneContainer L"XuiSceneContainer"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -98,6 +103,7 @@
#define IDC_BButton L"BButton"
#define IDC_AButton L"AButton"
#define IDC_Tooltips L"Tooltips"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -129,6 +135,7 @@
#define IDC_XuiSceneHudRoot L"XuiSceneHudRoot"
#define IDC_XuiSceneChatRoot L"XuiSceneChatRoot"
#define IDC_XuiSceneContainer L"XuiSceneContainer"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -139,6 +146,7 @@
#define IDC_BButton L"BButton"
#define IDC_AButton L"AButton"
#define IDC_Tooltips L"Tooltips"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
diff --git a/Minecraft.Client/Common/Media/xuiscene_base.xui b/Minecraft.Client/Common/Media/xuiscene_base.xui
index fcc7881d..bab72bca 100644
--- a/Minecraft.Client/Common/Media/xuiscene_base.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_base.xui
@@ -111,6 +111,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_Button</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>40.000000</Height>
@@ -227,6 +239,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>28.000000</Height>
@@ -549,6 +573,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_Button</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>40.000000</Height>
@@ -665,6 +701,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>28.000000</Height>
@@ -987,6 +1035,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_Button</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>40.000000</Height>
@@ -1103,6 +1163,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>28.000000</Height>
@@ -1425,6 +1497,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>40.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_Button</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>40.000000</Height>
@@ -1541,6 +1625,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>28.000000</Height>
diff --git a/Minecraft.Client/Common/Media/xuiscene_base_480.h b/Minecraft.Client/Common/Media/xuiscene_base_480.h
index ae2129db..e17dce13 100644
--- a/Minecraft.Client/Common/Media/xuiscene_base_480.h
+++ b/Minecraft.Client/Common/Media/xuiscene_base_480.h
@@ -16,6 +16,7 @@
#define IDC_Tooltips L"Tooltips"
#define IDC_BottomLeftAnchorPoint L"BottomLeftAnchorPoint"
#define IDC_TopLeftAnchorPoint L"TopLeftAnchorPoint"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -56,6 +57,7 @@
#define IDC_Tooltips L"Tooltips"
#define IDC_BottomLeftAnchorPoint L"BottomLeftAnchorPoint"
#define IDC_TopLeftAnchorPoint L"TopLeftAnchorPoint"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -96,6 +98,7 @@
#define IDC_Tooltips L"Tooltips"
#define IDC_BottomLeftAnchorPoint L"BottomLeftAnchorPoint"
#define IDC_TopLeftAnchorPoint L"TopLeftAnchorPoint"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
@@ -136,6 +139,7 @@
#define IDC_Tooltips L"Tooltips"
#define IDC_BottomLeftAnchorPoint L"BottomLeftAnchorPoint"
#define IDC_TopLeftAnchorPoint L"TopLeftAnchorPoint"
+#define IDC_RStick L"RStick"
#define IDC_LStick L"LStick"
#define IDC_LBButton L"LBButton"
#define IDC_RBButton L"RBButton"
diff --git a/Minecraft.Client/Common/Media/xuiscene_base_480.xui b/Minecraft.Client/Common/Media/xuiscene_base_480.xui
index 461421bf..6470bea4 100644
--- a/Minecraft.Client/Common/Media/xuiscene_base_480.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_base_480.xui
@@ -227,6 +227,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>25.000000</Height>
@@ -659,6 +671,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>25.000000</Height>
@@ -1091,6 +1115,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>25.000000</Height>
@@ -1523,6 +1559,18 @@
</Properties>
<XuiButton>
<Properties>
+<Id>RStick</Id>
+<Width>200.000000</Width>
+<Height>28.000000</Height>
+<Anchor>15</Anchor>
+<Show>false</Show>
+<Visual>RStick_ButtonSmall</Visual>
+<UnfocusedInput>true</UnfocusedInput>
+<PressKey>22532</PressKey>
+</Properties>
+</XuiButton>
+<XuiButton>
+<Properties>
<Id>LStick</Id>
<Width>200.000000</Width>
<Height>25.000000</Height>
diff --git a/Minecraft.Client/Common/Media/xuiscene_beacon.h b/Minecraft.Client/Common/Media/xuiscene_beacon.h
new file mode 100644
index 00000000..80fcd67f
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_beacon.h
@@ -0,0 +1,406 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_SecondaryPanel L"SecondaryPanel"
+#define IDC_PrimaryPanel L"PrimaryPanel"
+#define IDC_PrimaryText L"PrimaryText"
+#define IDC_SecondaryText L"SecondaryText"
+#define IDC_PrimaryTierOneOne L"PrimaryTierOneOne"
+#define IDC_PrimaryTierOneTwo L"PrimaryTierOneTwo"
+#define IDC_PrimaryTierTwoOne L"PrimaryTierTwoOne"
+#define IDC_PrimaryTierTwoTwo L"PrimaryTierTwoTwo"
+#define IDC_PrimaryTierThree L"PrimaryTierThree"
+#define IDC_SecondaryOne L"SecondaryOne"
+#define IDC_SecondaryTwo L"SecondaryTwo"
+#define IDC_Confirm L"Confirm"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Payment L"Payment"
+#define IDC_Emerald L"Emerald"
+#define IDC_Diamond L"Diamond"
+#define IDC_Gold L"Gold"
+#define IDC_Iron L"Iron"
+#define IDC_Beacon_4 L"Beacon_4"
+#define IDC_Beacon_3 L"Beacon_3"
+#define IDC_Beacon_2 L"Beacon_2"
+#define IDC_Beacon_1 L"Beacon_1"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_BeaconMenu L"BeaconMenu"
diff --git a/Minecraft.Client/Common/Media/xuiscene_beacon.xui b/Minecraft.Client/Common/Media/xuiscene_beacon.xui
new file mode 100644
index 00000000..5b422935
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_beacon.xui
@@ -0,0 +1,6508 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>BeaconMenu</Id>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+<ClassOverride>CXuiSceneBeacon</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>520.000000</Width>
+<Height>510.000000</Height>
+<Position>380.000031,120.000046,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>XuiScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>381.000000</Width>
+<Height>50.000000</Height>
+<Position>70.000000,444.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>378.000000</Width>
+<Height>150.000000</Height>
+<Position>70.000000,305.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>SecondaryPanel</Id>
+<Width>234.000000</Width>
+<Height>210.000000</Height>
+<Position>262.000000,24.000000,0.000000</Position>
+<Visual>PanelRecessed</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryPanel</Id>
+<Width>234.000000</Width>
+<Height>210.000000</Height>
+<Position>24.000000,24.000000,0.000000</Position>
+<Visual>PanelRecessed</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiLabel>
+<Properties>
+<Id>PrimaryText</Id>
+<Width>230.000000</Width>
+<Height>32.000000</Height>
+<Position>26.000000,26.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Visual>XuiLabelDarkCentredWrap</Visual>
+<Text>Primary Power</Text>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>SecondaryText</Id>
+<Width>230.000000</Width>
+<Height>63.000000</Height>
+<Position>264.000061,26.000008,0.000000</Position>
+<Anchor>3</Anchor>
+<Visual>XuiLabelDarkCentredWrap</Visual>
+<Text>Secondary Power</Text>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierOneOne</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>122.000000,66.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierOneTwo</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>186.000000,66.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierTwoOne</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>122.000000,120.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierTwoTwo</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>186.000000,120.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierThree</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>154.000000,174.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>SecondaryOne</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>324.000031,148.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>SecondaryTwo</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>388.000092,148.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Confirm</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>403.000000,246.000031,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButton</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiList>
+<Properties>
+<Id>Payment</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>280.000092,248.000046,0.000000</Position>
+<Anchor>9</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>Emerald</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>70.000046,247.999969,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Diamond</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>118.000031,248.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Gold</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>166.000015,248.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Iron</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>214.000000,248.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>Beacon_1</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>50.000000,68.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_1</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_2</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>50.000000,122.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_2</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_3</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>50.000000,176.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_3</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_4</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>358.000000,94.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_4</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>-185.000000,-9.000015,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointer</Visual>
+</Properties>
+</XuiControl>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+</NamedFrame>
+</NamedFrames>
+</Timelines>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>380.000031,120.000046,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>380.000000,120.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>380.000000,120.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>120.000000,120.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>120.000000,120.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>380.000000,120.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_beacon_480.xui b/Minecraft.Client/Common/Media/xuiscene_beacon_480.xui
new file mode 100644
index 00000000..9b5c4104
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_beacon_480.xui
@@ -0,0 +1,5215 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>BeaconMenu</Id>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
+<ClassOverride>CXuiSceneBeacon</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>336.000000</Width>
+<Height>290.000000</Height>
+<Position>190.000000,96.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>78.000000</Height>
+<Position>51.000000,164.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>51.000000,252.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>SecondaryPanel</Id>
+<Width>154.000000</Width>
+<Height>120.000000</Height>
+<Position>170.000000,12.000000,0.000000</Position>
+<Visual>PanelRecessed</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryPanel</Id>
+<Width>154.000000</Width>
+<Height>120.000000</Height>
+<Position>12.000000,12.000000,0.000000</Position>
+<Visual>PanelRecessed</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiLabel>
+<Properties>
+<Id>PrimaryText</Id>
+<Width>150.000000</Width>
+<Height>36.000000</Height>
+<Position>14.000000,14.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+<Text>Primary Power</Text>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>SecondaryText</Id>
+<Width>150.000000</Width>
+<Height>51.000000</Height>
+<Position>172.000000,14.000000,0.000000</Position>
+<Anchor>3</Anchor>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+<Text>Secondary Power</Text>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierOneOne</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>80.000000,46.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierOneTwo</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>111.000000,46.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierTwoOne</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>80.000000,74.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierTwoTwo</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>111.000000,74.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierThree</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>95.073303,104.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>SecondaryOne</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>220.000000,84.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>SecondaryTwo</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>254.000000,84.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Confirm</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>261.000092,137.000015,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiList>
+<Properties>
+<Id>Payment</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Position>182.000092,136.000046,0.000000</Position>
+<Anchor>9</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical24</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>Emerald</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>52.482300,136.999969,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Diamond</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>79.000031,137.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Gold</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>105.000015,137.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlankSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Iron</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>131.000000,137.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlankSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>Beacon_1</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>38.000000,46.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_1</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_2</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>38.000000,74.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_2</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_3</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>38.000000,104.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_3</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_4</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>238.000000,58.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_4</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-50.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,96.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,96.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>190.000000,96.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>33.750000,96.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>60.000000,96.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,96.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_beacon_Small.xui b/Minecraft.Client/Common/Media/xuiscene_beacon_Small.xui
new file mode 100644
index 00000000..622aeca9
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_beacon_Small.xui
@@ -0,0 +1,5215 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>BeaconMenu</Id>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+<ClassOverride>CXuiSceneBeacon</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>336.000000</Width>
+<Height>290.000000</Height>
+<Position>152.000031,2.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>78.000000</Height>
+<Position>51.000000,164.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>51.000000,252.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>SecondaryPanel</Id>
+<Width>154.000000</Width>
+<Height>120.000000</Height>
+<Position>170.000000,12.000000,0.000000</Position>
+<Visual>PanelRecessed</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryPanel</Id>
+<Width>154.000000</Width>
+<Height>120.000000</Height>
+<Position>12.000000,12.000000,0.000000</Position>
+<Visual>PanelRecessed</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiLabel>
+<Properties>
+<Id>PrimaryText</Id>
+<Width>150.000000</Width>
+<Height>35.000000</Height>
+<Position>14.000000,14.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+<Text>Primary Power</Text>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>SecondaryText</Id>
+<Width>150.000000</Width>
+<Height>40.000000</Height>
+<Position>172.000000,14.000000,0.000000</Position>
+<Anchor>3</Anchor>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+<Text>Secondary Power</Text>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierOneOne</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>80.000000,46.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierOneTwo</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>111.000000,46.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierTwoOne</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>80.000000,74.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierTwoTwo</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>111.000000,74.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>PrimaryTierThree</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>95.073303,104.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>SecondaryOne</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>220.000000,84.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>SecondaryTwo</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>254.000000,84.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Confirm</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>261.000092,137.000015,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlBeaconButton</ClassOverride>
+<Visual>BeaconButtonSmall</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiList>
+<Properties>
+<Id>Payment</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Position>182.000092,136.000046,0.000000</Position>
+<Anchor>9</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical24</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonEnchant</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>24.000000</Width>
+<Height>24.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton24</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>Emerald</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>52.482300,136.999969,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Diamond</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>79.000031,137.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlank</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Gold</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>105.000015,137.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlankSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>Iron</Id>
+<Width>22.000000</Width>
+<Height>22.000000</Height>
+<Position>131.000000,137.000000,0.000000</Position>
+<Anchor>4</Anchor>
+<Show>false</Show>
+<ColorWriteFlags>7</ColorWriteFlags>
+<ClassOverride>CXuiCtrlCraftIngredientSlot</ClassOverride>
+<Visual>ItemIconBlankSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>Beacon_1</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>38.000000,46.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_1</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_2</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>38.000000,74.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_2</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_3</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>38.000000,104.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_3</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Beacon_4</Id>
+<Width>20.000000</Width>
+<Height>20.000000</Height>
+<Position>238.000000,56.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>Beacon_4</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-50.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>152.000031,2.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>152.000031,2.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>152.000031,2.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>50.000000,2.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>50.000000,2.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>152.000031,2.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.h b/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.h
index 9400ba1e..cd3c9870 100644
--- a/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.h
+++ b/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.h
@@ -130,6 +130,24 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_Inventory L"Inventory"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
@@ -207,6 +225,24 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_UseRow L"UseRow"
#define IDC_InventoryGrid L"InventoryGrid"
#define IDC_Group L"Group"
diff --git a/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.xui b/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.xui
index b3386eda..1895ecc3 100644
--- a/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_craftingpanel_3x3.xui
@@ -537,7 +537,7 @@
<Id>XuiItemName</Id>
<Width>281.000000</Width>
<Height>50.000000</Height>
-<Position>-2.000000,-24.000000,0.000000</Position>
+<Position>-2.000000,-29.000000,0.000000</Position>
<Visual>XuiLabelDarkCentredWrap</Visual>
<Text>yyyyyyWWWWWWWWWWWWWWWW
yyyyyyWWWWWWWWWWWWWW</Text>
@@ -1676,6 +1676,258 @@ yyyyyyWWWWWWWWWWWWWW</Text>
<Layout>4</Layout>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
<XuiList>
<Properties>
@@ -2749,6 +3001,258 @@ yyyyyyWWWWWWWWWWWWWW</Text>
<Layout>4</Layout>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton32</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
</XuiGroup>
</XuiGroup>
diff --git a/Minecraft.Client/Common/Media/xuiscene_enchant.h b/Minecraft.Client/Common/Media/xuiscene_enchant.h
index a074055a..d8a4fdc8 100644
--- a/Minecraft.Client/Common/Media/xuiscene_enchant.h
+++ b/Minecraft.Client/Common/Media/xuiscene_enchant.h
@@ -8,6 +8,7 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_Ingredient L"Ingredient"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
@@ -99,6 +100,15 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_Inventory L"Inventory"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
@@ -190,6 +200,15 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_UseRow L"UseRow"
#define IDC_EnchantText L"EnchantText"
#define IDC_InventoryText L"InventoryText"
diff --git a/Minecraft.Client/Common/Media/xuiscene_fireworks.h b/Minecraft.Client/Common/Media/xuiscene_fireworks.h
new file mode 100644
index 00000000..52c36d88
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_fireworks.h
@@ -0,0 +1,166 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Result L"Result"
+#define IDC_Arrow L"Arrow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_FireworksText L"FireworksText"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Ingredients L"Ingredients"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_FireworksScene L"FireworksScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_fireworks.xui b/Minecraft.Client/Common/Media/xuiscene_fireworks.xui
new file mode 100644
index 00000000..9bae3aec
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_fireworks.xui
@@ -0,0 +1,2359 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>FireworksScene</Id>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+<ClassOverride>CXuiSceneFireworks</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>428.000000</Width>
+<Height>450.000000</Height>
+<Position>426.000000,130.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>XuiScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Result</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Position>304.000000,96.000000,0.000000</Position>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical64</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>226.000000</Width>
+<Height>45.000000</Height>
+<Position>7.000000,22.000000,0.000000</Position>
+<Anchor>5</Anchor>
+<Show>false</Show>
+<Visual>XuiButton</Visual>
+<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton64</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton64</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton64</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton64</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton64</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton64</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>64.000000</Width>
+<Height>64.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton64</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiProgressBar>
+<Properties>
+<Id>Arrow</Id>
+<Width>72.000000</Width>
+<Height>48.000000</Height>
+<Position>206.000015,104.000000,0.000000</Position>
+<Visual>ArrowProgressState</Visual>
+<RangeMax>24</RangeMax>
+</Properties>
+</XuiProgressBar>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>380.000000</Width>
+<Height>128.000000</Height>
+<Position>25.000000,240.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>226.000000</Width>
+<Height>45.000000</Height>
+<Position>7.000000,22.000000,0.000000</Position>
+<Anchor>5</Anchor>
+<Show>false</Show>
+<Visual>XuiButton</Visual>
+<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>380.000000</Width>
+<Height>44.000000</Height>
+<Position>25.000000,379.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>226.000000</Width>
+<Height>45.000000</Height>
+<Position>7.000000,22.000000,0.000000</Position>
+<Anchor>5</Anchor>
+<Show>false</Show>
+<Visual>XuiButton</Visual>
+<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>378.000000</Width>
+<Height>34.000000</Height>
+<Position>26.000000,210.000000,0.000000</Position>
+<Anchor>12</Anchor>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>FireworksText</Id>
+<Width>380.000000</Width>
+<Height>34.000000</Height>
+<Position>26.000000,14.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiList>
+<Properties>
+<Id>Ingredients</Id>
+<Width>128.000000</Width>
+<Height>128.000000</Height>
+<Position>59.000065,64.000000,0.000000</Position>
+<Anchor>3</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>226.000000</Width>
+<Height>45.000000</Height>
+<Position>7.000000,22.000000,0.000000</Position>
+<Anchor>5</Anchor>
+<Show>false</Show>
+<Visual>XuiButton</Visual>
+<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>-185.000000,-63.000015,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointer</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>426.000000,130.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>426.000000,130.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>424.500031,130.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>160.000000,130.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>160.000000,130.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>426.000000,130.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_fireworks_480.xui b/Minecraft.Client/Common/Media/xuiscene_fireworks_480.xui
new file mode 100644
index 00000000..820736d6
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_fireworks_480.xui
@@ -0,0 +1,1973 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>DispenserScene</Id>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+<ClassOverride>CXuiSceneFireworks</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>260.000000</Width>
+<Height>280.000000</Height>
+<Position>190.000000,100.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>80.000000</Height>
+<Position>13.000009,152.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>13.000009,240.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Ingredients</Id>
+<Width>80.000000</Width>
+<Height>80.000000</Height>
+<Position>42.000000,38.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>232.000000</Width>
+<Height>22.000000</Height>
+<Position>12.000000,132.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>FireworksText</Id>
+<Width>240.000000</Width>
+<Height>25.000000</Height>
+<Position>12.000000,6.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiProgressBar>
+<Properties>
+<Id>Arrow</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Position>132.000000,62.000000,0.000000</Position>
+<Visual>ArrowProgressStateSmall</Visual>
+<RangeMax>24</RangeMax>
+</Properties>
+</XuiProgressBar>
+<XuiList>
+<Properties>
+<Id>Result</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>172.000000,56.000000,0.000000</Position>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-40.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,100.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,100.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>190.000000,100.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>33.750000,100.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>60.000000,100.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,100.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_fireworks_small.xui b/Minecraft.Client/Common/Media/xuiscene_fireworks_small.xui
new file mode 100644
index 00000000..d50b5ef7
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_fireworks_small.xui
@@ -0,0 +1,1558 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>DispenserScene</Id>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+<ClassOverride>CXuiSceneFireworks</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>260.000000</Width>
+<Height>280.000000</Height>
+<Position>190.000000,0.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>80.000000</Height>
+<Position>12.000000,151.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>12.000000,240.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Ingredients</Id>
+<Width>80.000000</Width>
+<Height>80.000000</Height>
+<Position>42.000000,38.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>232.000000</Width>
+<Height>22.000000</Height>
+<Position>12.000000,130.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>FireworksText</Id>
+<Width>240.000000</Width>
+<Height>25.000000</Height>
+<Position>12.000000,6.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiProgressBar>
+<Properties>
+<Id>Arrow</Id>
+<Width>32.000000</Width>
+<Height>32.000000</Height>
+<Position>132.000000,62.000000,0.000000</Position>
+<Visual>ArrowProgressStateSmall</Visual>
+<RangeMax>24</RangeMax>
+</Properties>
+</XuiProgressBar>
+<XuiList>
+<Properties>
+<Id>Result</Id>
+<Width>44.000000</Width>
+<Height>44.000000</Height>
+<Position>172.000000,56.000000,0.000000</Position>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-50.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>64.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>92.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_hopper.h b/Minecraft.Client/Common/Media/xuiscene_hopper.h
new file mode 100644
index 00000000..ca6d0389
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_hopper.h
@@ -0,0 +1,99 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Hopper L"Hopper"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_HopperText L"HopperText"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_HopperScene L"HopperScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_hopper.xui b/Minecraft.Client/Common/Media/xuiscene_hopper.xui
new file mode 100644
index 00000000..762f3f5d
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_hopper.xui
@@ -0,0 +1,1436 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>HopperScene</Id>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+<ClassOverride>CXuiSceneHopper</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>430.000000</Width>
+<Height>335.000000</Height>
+<Position>425.000000,192.500046,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>XuiScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>378.000000</Width>
+<Height>128.000000</Height>
+<Position>26.000017,138.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>378.000000</Width>
+<Height>45.000000</Height>
+<Position>26.000017,276.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Hopper</Id>
+<Width>210.000000</Width>
+<Height>45.000000</Height>
+<Position>110.000015,50.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>374.000000</Width>
+<Position>26.000000,108.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HopperText</Id>
+<Width>374.000000</Width>
+<Position>28.000017,16.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>LabelContainerSceneCentre</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>-185.000000,-246.000015,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointer</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>425.000000,192.500046,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>425.000000,192.500031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>425.000000,192.500031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>160.000000,192.500031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>160.000000,192.500031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>425.000000,192.500031,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_hopper_480.h b/Minecraft.Client/Common/Media/xuiscene_hopper_480.h
new file mode 100644
index 00000000..263aeddf
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_hopper_480.h
@@ -0,0 +1,141 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Hopper L"Hopper"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_HopperText L"HopperText"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_HoperScene L"HoperScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_hopper_480.xui b/Minecraft.Client/Common/Media/xuiscene_hopper_480.xui
new file mode 100644
index 00000000..ba4c2cbc
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_hopper_480.xui
@@ -0,0 +1,1891 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>HoperScene</Id>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
+<ClassOverride>CXuiSceneHopper</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>260.000000</Width>
+<Height>220.000000</Height>
+<Position>190.000015,130.000031,0.000000</Position>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>80.000000</Height>
+<Position>13.000001,92.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>13.000001,180.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Hopper</Id>
+<Width>130.000000</Width>
+<Position>65.000015,36.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>232.000000</Width>
+<Height>22.000000</Height>
+<Position>13.000000,72.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HopperText</Id>
+<Width>160.000000</Width>
+<Height>25.000000</Height>
+<Position>50.000008,14.000000,0.000000</Position>
+<Visual>LabelContainerSceneCentreSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-100.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000015,130.000031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,130.000031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>190.000000,130.000031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>33.750000,130.000031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>60.000000,130.000031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,130.000031,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_hopper_small.h b/Minecraft.Client/Common/Media/xuiscene_hopper_small.h
new file mode 100644
index 00000000..ca6d0389
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_hopper_small.h
@@ -0,0 +1,99 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Hopper L"Hopper"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_HopperText L"HopperText"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_HopperScene L"HopperScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_hopper_small.xui b/Minecraft.Client/Common/Media/xuiscene_hopper_small.xui
new file mode 100644
index 00000000..d6f09756
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_hopper_small.xui
@@ -0,0 +1,1348 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>HopperScene</Id>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+<ClassOverride>CXuiSceneHopper</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>260.000000</Width>
+<Height>220.000000</Height>
+<Position>190.000000,0.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>80.000000</Height>
+<Position>13.000009,91.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>13.000009,180.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Hopper</Id>
+<Width>130.000000</Width>
+<Position>65.000015,36.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>232.000000</Width>
+<Height>22.000000</Height>
+<Position>13.000000,70.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HopperText</Id>
+<Width>162.000000</Width>
+<Height>25.000000</Height>
+<Position>49.000008,14.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>LabelContainerSceneCentreSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-110.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>64.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>92.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_horse.h b/Minecraft.Client/Common/Media/xuiscene_horse.h
new file mode 100644
index 00000000..c122d1f7
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_horse.h
@@ -0,0 +1,160 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Chest L"Chest"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_HorseText L"HorseText"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Saddle L"Saddle"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Armor L"Armor"
+#define IDC_Horse L"Horse"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_HorseScene L"HorseScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_horse.xui b/Minecraft.Client/Common/Media/xuiscene_horse.xui
new file mode 100644
index 00000000..193df21a
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_horse.xui
@@ -0,0 +1,2281 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>HorseScene</Id>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
+<ClassOverride>CXuiSceneHorseInventory</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>430.000000</Width>
+<Height>430.000000</Height>
+<Position>425.000000,135.000031,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>XuiScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>378.000000</Width>
+<Height>128.000000</Height>
+<Position>26.000017,234.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>382.000000</Width>
+<Height>45.000000</Height>
+<Position>26.000000,372.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Chest</Id>
+<Width>210.000000</Width>
+<Height>126.000000</Height>
+<Position>194.000000,56.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>374.000000</Width>
+<Position>26.000000,202.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HorseText</Id>
+<Width>374.000000</Width>
+<Position>26.000000,16.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiList>
+<Properties>
+<Id>Saddle</Id>
+<Width>45.000000</Width>
+<Height>45.000000</Height>
+<Position>26.000000,56.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridHorseSaddle</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseSaddle</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseSaddle</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseSaddle</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Armor</Id>
+<Width>45.000000</Width>
+<Height>45.000000</Height>
+<Position>26.000000,102.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridHorseArmor</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseArmor</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseArmor</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButtonHorseArmor</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>Horse</Id>
+<Width>120.000000</Width>
+<Height>126.000000</Height>
+<Position>71.000000,56.000000,0.000000</Position>
+<Anchor>3</Anchor>
+<Visual>HorsePanel</Visual>
+<ImagePath>..\Images\img1.png</ImagePath>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Position>-185.000000,-151.000015,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointer</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>425.000000,135.000031,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>425.000000,135.000046,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>425.000000,135.000046,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>160.000000,135.000046,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>160.000000,135.000046,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>425.000000,135.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_horse_480.h b/Minecraft.Client/Common/Media/xuiscene_horse_480.h
new file mode 100644
index 00000000..f6375dc6
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_horse_480.h
@@ -0,0 +1,209 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Chest L"Chest"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_HopperText L"HopperText"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Saddle L"Saddle"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Armor L"Armor"
+#define IDC_Horse L"Horse"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_HorseScene L"HorseScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_horse_480.xui b/Minecraft.Client/Common/Media/xuiscene_horse_480.xui
new file mode 100644
index 00000000..83d3496f
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_horse_480.xui
@@ -0,0 +1,2770 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>HorseScene</Id>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
+<ClassOverride>CXuiSceneHorseInventory</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>260.000000</Width>
+<Height>285.000000</Height>
+<Position>190.000015,98.000000,0.000000</Position>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>80.000000</Height>
+<Position>12.000000,156.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>12.000000,244.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Chest</Id>
+<Width>130.000000</Width>
+<Height>90.000000</Height>
+<Position>116.000000,40.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>232.000000</Width>
+<Height>22.000000</Height>
+<Position>12.000000,132.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HopperText</Id>
+<Width>160.000000</Width>
+<Height>25.000000</Height>
+<Position>12.000000,14.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiList>
+<Properties>
+<Id>Saddle</Id>
+<Width>30.000000</Width>
+<Position>12.000000,40.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Armor</Id>
+<Width>30.000000</Width>
+<Position>12.000000,68.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>Horse</Id>
+<Width>74.000000</Width>
+<Height>78.000000</Height>
+<Position>40.000000,40.000000,0.000000</Position>
+<Anchor>3</Anchor>
+<Visual>HorsePanel</Visual>
+<ImagePath>..\Images\img1.png</ImagePath>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-35.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000015,98.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,98.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>190.000000,98.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>33.750000,98.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>60.000000,98.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,98.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_horse_small.h b/Minecraft.Client/Common/Media/xuiscene_horse_small.h
new file mode 100644
index 00000000..a1311742
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_horse_small.h
@@ -0,0 +1,163 @@
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Chest L"Chest"
+#define IDC_InventoryText L"InventoryText"
+#define IDC_HorseText L"HorseText"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Saddle L"Saddle"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Armor L"Armor"
+#define IDC_Horse L"Horse"
+#define IDC_Pointer L"Pointer"
+#define IDC_Group L"Group"
+#define IDC_HorseScene L"HorseScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_horse_small.xui b/Minecraft.Client/Common/Media/xuiscene_horse_small.xui
new file mode 100644
index 00000000..36d04ba6
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_horse_small.xui
@@ -0,0 +1,2175 @@
+<XuiCanvas version="000c">
+<Properties>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>HorseScene</Id>
+<Width>640.000000</Width>
+<Height>360.000000</Height>
+<ClassOverride>CXuiSceneHorseInventory</ClassOverride>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiScene>
+<Properties>
+<Id>Group</Id>
+<Width>260.000000</Width>
+<Height>285.000000</Height>
+<Position>190.000000,0.000000,0.000000</Position>
+<Anchor>15</Anchor>
+<Visual>GraphicPanel</Visual>
+<DefaultFocus>Pointer</DefaultFocus>
+</Properties>
+<XuiList>
+<Properties>
+<Id>Inventory</Id>
+<Width>234.000000</Width>
+<Height>80.000000</Height>
+<Position>12.000000,156.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>UseRow</Id>
+<Width>234.000000</Width>
+<Position>12.000000,244.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Chest</Id>
+<Width>130.000000</Width>
+<Height>78.000000</Height>
+<Position>116.000000,40.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiLabel>
+<Properties>
+<Id>InventoryText</Id>
+<Width>232.000000</Width>
+<Height>22.000000</Height>
+<Position>12.000000,134.000000,0.000000</Position>
+<Anchor>8</Anchor>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HorseText</Id>
+<Width>162.000000</Width>
+<Height>25.000000</Height>
+<Position>12.000000,14.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiList>
+<Properties>
+<Id>Saddle</Id>
+<Width>30.000000</Width>
+<Position>12.000000,40.000004,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiList>
+<Properties>
+<Id>Armor</Id>
+<Width>30.000000</Width>
+<Position>12.000000,68.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<ClassOverride>CXuiCtrlSlotList</ClassOverride>
+<Visual>ItemGridVertical26</Visual>
+</Properties>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>42.000000</Width>
+<Height>42.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Anchor>7</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton26</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+</XuiList>
+<XuiControl>
+<Properties>
+<Id>Horse</Id>
+<Width>74.000000</Width>
+<Height>78.000000</Height>
+<Position>40.000000,40.000000,0.000000</Position>
+<Anchor>3</Anchor>
+<Visual>HorsePanel</Visual>
+<ImagePath>..\Images\img1.png</ImagePath>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Pointer</Id>
+<Width>26.000000</Width>
+<Height>26.000000</Height>
+<Position>-50.000000,-45.000000,0.000000</Position>
+<Anchor>9</Anchor>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItem</ClassOverride>
+<Visual>ItemPointerSmall</Visual>
+</Properties>
+</XuiControl>
+</XuiScene>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>Normal</Name>
+<Time>0</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndNormal</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveLeft</Name>
+<Time>2</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveLeft</Name>
+<Time>32</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>MoveRight</Name>
+<Time>33</Time>
+</NamedFrame>
+<NamedFrame>
+<Name>EndMoveRight</Name>
+<Time>78</Time>
+<Command>gotoandstop</Command>
+<CommandParams>EndNormal</CommandParams>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>Group</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>2</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>32</Time>
+<Interpolation>0</Interpolation>
+<Prop>64.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>48</Time>
+<Interpolation>2</Interpolation>
+<EaseIn>100</EaseIn>
+<EaseOut>-100</EaseOut>
+<EaseScale>50</EaseScale>
+<Prop>92.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>78</Time>
+<Interpolation>0</Interpolation>
+<Prop>190.000000,0.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
+</XuiScene>
+</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_howtoplay.h b/Minecraft.Client/Common/Media/xuiscene_howtoplay.h
index 488aec69..c51696ea 100644
--- a/Minecraft.Client/Common/Media/xuiscene_howtoplay.h
+++ b/Minecraft.Client/Common/Media/xuiscene_howtoplay.h
@@ -70,4 +70,22 @@
#define IDC_TInventory L"TInventory"
#define IDC_XuiHtmlControlEnderchest L"XuiHtmlControlEnderchest"
#define IDC_XuiImageEnderchest L"XuiImageEnderchest"
+#define IDC_XuiHtmlControlHorses L"XuiHtmlControlHorses"
+#define IDC_XuiImageHorses L"XuiImageHorses"
+#define IDC_XuiHtmlControlBeacon L"XuiHtmlControlBeacon"
+#define IDC_XuiImageBeacon L"XuiImageBeacon"
+#define IDC_BeSecond L"BeSecond"
+#define IDC_BeFirst L"BeFirst"
+#define IDC_XuiImageDropper L"XuiImageDropper"
+#define IDC_XuiHtmlControlDropper L"XuiHtmlControlDropper"
+#define IDC_DrInventory L"DrInventory"
+#define IDC_DrText L"DrText"
+#define IDC_XuiImageHopper L"XuiImageHopper"
+#define IDC_XuiHtmlControlHopper L"XuiHtmlControlHopper"
+#define IDC_HInventory L"HInventory"
+#define IDC_HText L"HText"
+#define IDC_XuiImageFireworks L"XuiImageFireworks"
+#define IDC_XuiHtmlControlFireworks L"XuiHtmlControlFireworks"
+#define IDC_FiInventory L"FiInventory"
+#define IDC_FiText L"FiText"
#define IDC_SceneHowToPlay L"SceneHowToPlay"
diff --git a/Minecraft.Client/Common/Media/xuiscene_howtoplay.xui b/Minecraft.Client/Common/Media/xuiscene_howtoplay.xui
index 09960371..f169f718 100644
--- a/Minecraft.Client/Common/Media/xuiscene_howtoplay.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_howtoplay.xui
@@ -8,7 +8,7 @@
<Id>SceneHowToPlay</Id>
<Width>1280.000000</Width>
<Height>720.000000</Height>
-<DesignTimeData>[LayerFolders]0|-Enderchest|2|+|0|-Trading|7|+|0|-Anvil|5|+|0|-Enchantment|4|+|0|+Brewing|4|+|0|+FarmingAnimals|2|+|0|-Breeding|2|+|1|+Creative Mode|3|+|0|+What's New|1|+|1|+SocialMedia|1|+|0|-Multiplayer|1|+|0|+CraftingTable|5|+|0|+Crafting|5|+|0|+Furnace|6|+|0|+Large Chest|4|+|0|+SmallChest|4|+|0|+Inventory|3|+|0|+Basics|1|+|0|+HUD|2|+|0|+Dispenser|4|+|0|+TheEnd|2|+|0|-Nether Portal|2|+|0[/LayerFolders]</DesignTimeData>
+<DesignTimeData>[LayerFolders]0|-Fireworks|4|+|0|-Hopper|4|+|0|-Dropper|4|+|0|-Beacon|4|+|0|-Horses|2|+|0|-Enderchest|2|+|0|-Trading|7|+|0|-Anvil|5|+|0|-Enchantment|4|+|0|-Brewing|4|+|0|-FarmingAnimals|2|+|0|-Breeding|2|+|1|-Creative Mode|3|+|0|+What's New|1|+|1|-SocialMedia|1|+|0|-Multiplayer|1|+|0|-CraftingTable|5|+|0|-Crafting|5|+|0|-Furnace|6|+|0|-Large Chest|4|+|0|-SmallChest|4|+|0|-Inventory|3|+|0|-Basics|1|+|0|-HUD|2|+|0|-Dispenser|4|+|0|-TheEnd|2|+|0|-Nether Portal|2|+|0[/LayerFolders]</DesignTimeData>
<ClassOverride>CScene_HowToPlay</ClassOverride>
<Visual>XuiBlankScene</Visual>
<DefaultFocus>XuiSliderVolume</DefaultFocus>
@@ -441,7 +441,7 @@
<Id>XuiImageBreeding</Id>
<Width>339.000000</Width>
<Height>342.000000</Height>
-<Position>611.000000,246.000000,0.000000</Position>
+<Position>612.000000,246.000000,0.000000</Position>
<Visual>ImHowToPlayBreeding</Visual>
</Properties>
</XuiControl>
@@ -459,7 +459,7 @@
<Id>XuiImageFarmingAnimals</Id>
<Width>339.000000</Width>
<Height>342.000000</Height>
-<Position>611.000000,246.000000,0.000000</Position>
+<Position>612.000000,246.000000,0.000000</Position>
<Visual>ImHowToPlayFarmingAnimals</Visual>
</Properties>
</XuiControl>
@@ -477,7 +477,7 @@
<Id>XuiImageBrewing</Id>
<Width>339.000000</Width>
<Height>342.000000</Height>
-<Position>611.000000,241.000000,0.000000</Position>
+<Position>612.000000,241.000000,0.000000</Position>
<Visual>ImHowToPlayBrewing</Visual>
</Properties>
</XuiControl>
@@ -513,7 +513,7 @@
<Id>XuiImageEnchantment</Id>
<Width>339.000000</Width>
<Height>342.000000</Height>
-<Position>611.000000,226.000000,0.000000</Position>
+<Position>612.000000,226.000000,0.000000</Position>
<Visual>ImHowToPlayEnchantment</Visual>
</Properties>
</XuiControl>
@@ -657,9 +657,173 @@
<Id>XuiImageEnderchest</Id>
<Width>339.000000</Width>
<Height>342.000000</Height>
-<Position>611.000000,246.000000,0.000000</Position>
+<Position>612.000000,246.000000,0.000000</Position>
<Visual>ImHowToPlayEnderchest</Visual>
</Properties>
</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlHorses</Id>
+<Width>380.000000</Width>
+<Height>331.000000</Height>
+<Position>176.000076,242.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiControl>
+<Properties>
+<Id>XuiImageHorses</Id>
+<Width>516.000000</Width>
+<Height>302.000000</Height>
+<Position>588.000061,266.000000,0.000000</Position>
+<Visual>ImHowToPlayHorses</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlBeacon</Id>
+<Width>380.000000</Width>
+<Height>359.000000</Height>
+<Position>208.000000,222.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiControl>
+<Properties>
+<Id>XuiImageBeacon</Id>
+<Width>430.000000</Width>
+<Height>430.000000</Height>
+<Position>640.000000,198.000000,0.000000</Position>
+<Visual>ImHowToPlayBeacon</Visual>
+</Properties>
+</XuiControl>
+<XuiLabel>
+<Properties>
+<Id>BeSecond</Id>
+<Width>190.000000</Width>
+<Height>34.000000</Height>
+<Position>861.125000,218.000000,0.000000</Position>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+<Text>
+</Text>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>BeFirst</Id>
+<Width>190.000000</Width>
+<Height>34.000000</Height>
+<Position>659.125061,218.000000,0.000000</Position>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageDropper</Id>
+<Width>453.000000</Width>
+<Height>431.000000</Height>
+<Position>632.000000,186.000000,0.000000</Position>
+<Visual>ImHowToPlayDispenser</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlDropper</Id>
+<Width>380.000000</Width>
+<Height>296.000000</Height>
+<Position>194.000000,252.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>DrInventory</Id>
+<Width>372.000000</Width>
+<Height>28.000000</Height>
+<Position>670.500061,376.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>DrText</Id>
+<Width>260.000000</Width>
+<Height>32.000000</Height>
+<Position>794.500061,214.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageHopper</Id>
+<Width>430.000000</Width>
+<Height>336.000000</Height>
+<Position>620.000000,206.000000,0.000000</Position>
+<Visual>ImHowToPlayHopper</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlHopper</Id>
+<Width>380.000000</Width>
+<Height>296.000000</Height>
+<Position>206.000000,220.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>HInventory</Id>
+<Width>372.000000</Width>
+<Height>28.000000</Height>
+<Position>648.000000,316.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HText</Id>
+<Width>392.000000</Width>
+<Height>32.000000</Height>
+<Position>640.000000,220.000000,0.000000</Position>
+<Visual>LabelContainerSceneCentre</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageFireworks</Id>
+<Width>428.000000</Width>
+<Height>450.000000</Height>
+<Position>636.000000,176.000000,0.000000</Position>
+<Visual>ImHowToPlayFireworks</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlFireworks</Id>
+<Width>380.000000</Width>
+<Height>400.000000</Height>
+<Position>214.000000,196.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>FiInventory</Id>
+<Width>372.000000</Width>
+<Height>28.000000</Height>
+<Position>665.500061,382.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>FiText</Id>
+<Width>260.000000</Width>
+<Height>32.000000</Height>
+<Position>665.500061,194.000000,0.000000</Position>
+<Visual>LabelContainerSceneLeft</Visual>
+</Properties>
+</XuiLabel>
</XuiScene>
</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.h b/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.h
index 8ef840c6..447482ea 100644
--- a/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.h
+++ b/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.h
@@ -69,4 +69,22 @@
#define IDC_TVillagerOffers L"TVillagerOffers"
#define IDC_XuiHtmlControlEnderchest L"XuiHtmlControlEnderchest"
#define IDC_XuiImageEnderchest L"XuiImageEnderchest"
+#define IDC_XuiHtmlControlHorses L"XuiHtmlControlHorses"
+#define IDC_XuiImageHorses L"XuiImageHorses"
+#define IDC_XuiHtmlControlBeacon L"XuiHtmlControlBeacon"
+#define IDC_XuiImageBeacon L"XuiImageBeacon"
+#define IDC_BeSecond L"BeSecond"
+#define IDC_BeFirst L"BeFirst"
+#define IDC_XuiImageDropper L"XuiImageDropper"
+#define IDC_XuiHtmlControlDropper L"XuiHtmlControlDropper"
+#define IDC_DrInventory L"DrInventory"
+#define IDC_DrText L"DrText"
+#define IDC_XuiImageHopper L"XuiImageHopper"
+#define IDC_XuiHtmlControlHopper L"XuiHtmlControlHopper"
+#define IDC_HInventory L"HInventory"
+#define IDC_HText L"HText"
+#define IDC_XuiImageFireworks L"XuiImageFireworks"
+#define IDC_XuiHtmlControlFireworks L"XuiHtmlControlFireworks"
+#define IDC_FiInventory L"FiInventory"
+#define IDC_FiText L"FiText"
#define IDC_SceneHowToPlay L"SceneHowToPlay"
diff --git a/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.xui b/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.xui
index f0d5790f..b4612e3e 100644
--- a/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_howtoplay_480.xui
@@ -8,7 +8,7 @@
<Id>SceneHowToPlay</Id>
<Width>640.000000</Width>
<Height>480.000000</Height>
-<DesignTimeData>[LayerFolders]0|-Enderchest|2|+|0|-Trading|6|+|0|-Anvil|5|+|0|+Enchantment|4|+|0|+Brewing|4|+|0|-FarmingAnimals|2|+|0|+Breeding|2|+|1|+Creative Mode|3|+|1|+What's New|1|+|0|+Multiplayer|1|+|0|+SocialMedia|1|+|0|+CraftingTable|5|+|0|+Crafting|5|+|0|-Furnace|6|+|0|+Large Chest|4|+|0|+SmallChest|4|+|0|+Inventory|3|+|0|+Basics|1|+|0|+HUD|2|+|0|+Dispenser|4|+|0|+Nether Portal|2|+|0|-TheEnd|2|+|0[/LayerFolders]</DesignTimeData>
+<DesignTimeData>[LayerFolders]0|-Fireworks|4|+|0|-Hopper|4|+|0|-Dropper|4|+|0|-Beacon|4|+|0|-Horses|2|+|0|-Enderchest|2|+|0|-Trading|6|+|0|-Anvil|5|+|0|+Enchantment|4|+|0|+Brewing|4|+|0|-FarmingAnimals|2|+|0|+Breeding|2|+|1|+Creative Mode|3|+|1|+What's New|1|+|0|+Multiplayer|1|+|0|+SocialMedia|1|+|0|+CraftingTable|5|+|0|+Crafting|5|+|0|-Furnace|6|+|0|+Large Chest|4|+|0|+SmallChest|4|+|0|+Inventory|3|+|0|+Basics|1|+|0|+HUD|2|+|0|+Dispenser|4|+|0|+Nether Portal|2|+|0|-TheEnd|2|+|0[/LayerFolders]</DesignTimeData>
<ClassOverride>CScene_HowToPlay</ClassOverride>
<Visual>XuiBlankScene</Visual>
<DefaultFocus>XuiSliderVolume</DefaultFocus>
@@ -664,5 +664,168 @@
<Visual>ImHowToPlayEnderchestSmall</Visual>
</Properties>
</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlHorses</Id>
+<Width>282.000000</Width>
+<Height>239.000000</Height>
+<Position>48.000114,134.000061,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiControl>
+<Properties>
+<Id>XuiImageHorses</Id>
+<Width>248.000000</Width>
+<Height>146.000000</Height>
+<Position>346.000092,178.000061,0.000000</Position>
+<Visual>ImHowToPlayHorsesSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlBeacon</Id>
+<Width>204.000000</Width>
+<Height>240.000000</Height>
+<Position>49.999985,136.000061,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiControl>
+<Properties>
+<Id>XuiImageBeacon</Id>
+<Width>336.000000</Width>
+<Height>290.000000</Height>
+<Position>270.000000,124.000053,0.000000</Position>
+<Visual>ImHowToPlayBeaconSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiLabel>
+<Properties>
+<Id>BeSecond</Id>
+<Width>144.000000</Width>
+<Height>34.000000</Height>
+<Position>444.000000,138.000061,0.000000</Position>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>BeFirst</Id>
+<Width>144.000000</Width>
+<Height>34.000000</Height>
+<Position>286.000000,138.000061,0.000000</Position>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageDropper</Id>
+<Width>262.000000</Width>
+<Height>280.000000</Height>
+<Position>340.000000,132.000061,0.000000</Position>
+<Visual>ImHowToPlayDispenserSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlDropper</Id>
+<Width>282.000000</Width>
+<Height>240.000000</Height>
+<Position>42.000000,138.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>DrInventory</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>354.000000,262.000061,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>DrText</Id>
+<Width>160.000000</Width>
+<Height>24.000000</Height>
+<Position>422.000000,142.000061,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageHopper</Id>
+<Width>260.000000</Width>
+<Height>220.000000</Height>
+<Position>340.000000,162.000000,0.000000</Position>
+<Visual>ImHowToPlayHopperSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlHopper</Id>
+<Width>282.000000</Width>
+<Height>240.000000</Height>
+<Position>42.000000,140.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>HInventory</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>354.000000,236.000061,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HText</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>356.000000,170.000061,0.000000</Position>
+<Visual>LabelContainerSceneCentreSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageFireworks</Id>
+<Width>260.000000</Width>
+<Height>280.000000</Height>
+<Position>344.000000,134.000061,0.000000</Position>
+<Visual>ImHowToPlayFireworksSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlFireworks</Id>
+<Width>282.000000</Width>
+<Height>240.000000</Height>
+<Position>46.000000,140.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>FiInventory</Id>
+<Width>230.000000</Width>
+<Height>28.000000</Height>
+<Position>358.000000,266.000061,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>FiText</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>358.000000,144.000061,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
</XuiScene>
</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.h b/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.h
index 29f6a8a2..12377729 100644
--- a/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.h
+++ b/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.h
@@ -69,4 +69,22 @@
#define IDC_TInventory L"TInventory"
#define IDC_XuiImageEnderchest L"XuiImageEnderchest"
#define IDC_XuiHtmlControlEnderchest L"XuiHtmlControlEnderchest"
+#define IDC_XuiHtmlControlHorses L"XuiHtmlControlHorses"
+#define IDC_XuiImageHorses L"XuiImageHorses"
+#define IDC_XuiHtmlControlBeacon L"XuiHtmlControlBeacon"
+#define IDC_XuiImageBeacon L"XuiImageBeacon"
+#define IDC_BeSecond L"BeSecond"
+#define IDC_BeFirst L"BeFirst"
+#define IDC_XuiImageDropper L"XuiImageDropper"
+#define IDC_XuiHtmlControlDropper L"XuiHtmlControlDropper"
+#define IDC_DrInventory L"DrInventory"
+#define IDC_DrText L"DrText"
+#define IDC_XuiImageHopper L"XuiImageHopper"
+#define IDC_XuiHtmlControlHopper L"XuiHtmlControlHopper"
+#define IDC_HInventory L"HInventory"
+#define IDC_HText L"HText"
+#define IDC_XuiImageFireworks L"XuiImageFireworks"
+#define IDC_XuiHtmlControlFireworks L"XuiHtmlControlFireworks"
+#define IDC_FiInventory L"FiInventory"
+#define IDC_FiText L"FiText"
#define IDC_SceneHowToPlay L"SceneHowToPlay"
diff --git a/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.xui b/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.xui
index 359860d1..989ab6c0 100644
--- a/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_howtoplay_small.xui
@@ -8,7 +8,7 @@
<Id>SceneHowToPlay</Id>
<Width>640.000000</Width>
<Height>360.000000</Height>
-<DesignTimeData>[LayerFolders]0|-Enderchest|2|+|0|-Trading|6|+|0|+Anvil|5|+|0|-Enchantment|4|+|0|+Brewing|4|+|0|+FarmingAnimals|2|+|0|-Breeding|2|+|1|+Creative Mode|3|+|4|+CraftingTable|5|+|0|+Crafting|5|+|0|-Furnace|6|+|0|+Large Chest|4|+|0|+SmallChest|4|+|0|+Inventory|3|+|0|+Basics|1|+|0|+HUD|2|+|0|+Dispenser|4|+|0|-Nether Portal|2|+|0|+TheEnd|2|+|0[/LayerFolders]</DesignTimeData>
+<DesignTimeData>[LayerFolders]0|-Fireworks|4|+|0|-Hopper|4|+|0|-Dropper|4|+|0|-Beacon|4|+|0|-Horses|2|+|0|-Enderchest|2|+|0|-Trading|6|+|0|-Anvil|5|+|0|-Enchantment|4|+|0|+Brewing|4|+|0|+FarmingAnimals|2|+|0|-Breeding|2|+|1|+Creative Mode|3|+|4|+CraftingTable|5|+|0|+Crafting|5|+|0|-Furnace|6|+|0|+Large Chest|4|+|0|+SmallChest|4|+|0|+Inventory|3|+|0|+Basics|1|+|0|+HUD|2|+|0|+Dispenser|4|+|0|-Nether Portal|2|+|0|+TheEnd|2|+|0[/LayerFolders]</DesignTimeData>
<ClassOverride>CScene_HowToPlay</ClassOverride>
<Visual>XuiBlankScene</Visual>
<DefaultFocus>XuiSliderVolume</DefaultFocus>
@@ -665,5 +665,168 @@
<Visual>XuiHtmlControl_H2P_Small</Visual>
</Properties>
</XuiHtmlControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlHorses</Id>
+<Width>282.000000</Width>
+<Height>239.000000</Height>
+<Position>74.000114,13.000046,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiControl>
+<Properties>
+<Id>XuiImageHorses</Id>
+<Width>248.000000</Width>
+<Height>146.000000</Height>
+<Position>372.000092,58.000046,0.000000</Position>
+<Visual>ImHowToPlayHorsesSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlBeacon</Id>
+<Width>204.000000</Width>
+<Height>240.000000</Height>
+<Position>76.999985,14.000046,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiControl>
+<Properties>
+<Id>XuiImageBeacon</Id>
+<Width>336.000000</Width>
+<Height>290.000000</Height>
+<Position>296.000000,2.000048,0.000000</Position>
+<Visual>ImHowToPlayBeaconSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiLabel>
+<Properties>
+<Id>BeSecond</Id>
+<Width>144.000000</Width>
+<Height>34.000000</Height>
+<Position>470.000000,16.000046,0.000000</Position>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>BeFirst</Id>
+<Width>144.000000</Width>
+<Height>34.000000</Height>
+<Position>312.000000,16.000046,0.000000</Position>
+<Visual>XuiLabelDarkCentredWrapSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageDropper</Id>
+<Width>262.000000</Width>
+<Height>280.000000</Height>
+<Position>372.000000,8.000046,0.000000</Position>
+<Visual>ImHowToPlayDispenserSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlDropper</Id>
+<Width>282.000000</Width>
+<Height>240.000000</Height>
+<Position>74.000000,14.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>DrInventory</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>386.000000,139.000046,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>DrText</Id>
+<Width>160.000000</Width>
+<Height>24.000000</Height>
+<Position>454.000000,18.000048,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageHopper</Id>
+<Width>260.000000</Width>
+<Height>220.000000</Height>
+<Position>372.000000,36.000000,0.000000</Position>
+<Visual>ImHowToPlayHopperSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlHopper</Id>
+<Width>282.000000</Width>
+<Height>240.000000</Height>
+<Position>74.000000,14.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>HInventory</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>386.000000,110.000046,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>HText</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>387.000000,44.000046,0.000000</Position>
+<Visual>LabelContainerSceneCentreSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiControl>
+<Properties>
+<Id>XuiImageFireworks</Id>
+<Width>260.000000</Width>
+<Height>280.000000</Height>
+<Position>372.000000,8.000050,0.000000</Position>
+<Visual>ImHowToPlayFireworksSmall</Visual>
+</Properties>
+</XuiControl>
+<XuiHtmlControl>
+<Properties>
+<Id>XuiHtmlControlFireworks</Id>
+<Width>282.000000</Width>
+<Height>240.000000</Height>
+<Position>74.000000,14.000000,0.000000</Position>
+<Visual>XuiHtmlControl_H2P_Small</Visual>
+<Enabled>false</Enabled>
+</Properties>
+</XuiHtmlControl>
+<XuiLabel>
+<Properties>
+<Id>FiInventory</Id>
+<Width>230.000000</Width>
+<Height>28.000000</Height>
+<Position>386.000000,140.000046,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>FiText</Id>
+<Width>230.000000</Width>
+<Height>24.000000</Height>
+<Position>386.000000,18.000046,0.000000</Position>
+<Visual>LabelContainerSceneLeftSmall</Visual>
+</Properties>
+</XuiLabel>
</XuiScene>
</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_hud.h b/Minecraft.Client/Common/Media/xuiscene_hud.h
index 8bf537f5..1c1fb549 100644
--- a/Minecraft.Client/Common/Media/xuiscene_hud.h
+++ b/Minecraft.Client/Common/Media/xuiscene_hud.h
@@ -11,17 +11,7 @@
#define IDC_Inventory9 L"Inventory9"
#define IDC_Hotbar L"Hotbar"
#define IDC_ExperienceProgress L"ExperienceProgress"
-#define IDC_Health0 L"Health0"
-#define IDC_Health1 L"Health1"
-#define IDC_Health2 L"Health2"
-#define IDC_Health3 L"Health3"
-#define IDC_Health4 L"Health4"
-#define IDC_Health5 L"Health5"
-#define IDC_Health6 L"Health6"
-#define IDC_Health7 L"Health7"
-#define IDC_Health8 L"Health8"
-#define IDC_Health9 L"Health9"
-#define IDC_Health L"Health"
+#define IDC_HorseJumpProgress L"HorseJumpProgress"
#define IDC_Armour0 L"Armour0"
#define IDC_Armour1 L"Armour1"
#define IDC_Armour2 L"Armour2"
@@ -33,6 +23,49 @@
#define IDC_Armour8 L"Armour8"
#define IDC_Armour9 L"Armour9"
#define IDC_Armour L"Armour"
+#define IDC_Health0 L"Health0"
+#define IDC_Health1 L"Health1"
+#define IDC_Health2 L"Health2"
+#define IDC_Health3 L"Health3"
+#define IDC_Health4 L"Health4"
+#define IDC_Health5 L"Health5"
+#define IDC_Health6 L"Health6"
+#define IDC_Health7 L"Health7"
+#define IDC_Health8 L"Health8"
+#define IDC_Health9 L"Health9"
+#define IDC_HealthAbsorb L"HealthAbsorb"
+#define IDC_Health0 L"Health0"
+#define IDC_Health1 L"Health1"
+#define IDC_Health2 L"Health2"
+#define IDC_Health3 L"Health3"
+#define IDC_Health4 L"Health4"
+#define IDC_Health5 L"Health5"
+#define IDC_Health6 L"Health6"
+#define IDC_Health7 L"Health7"
+#define IDC_Health8 L"Health8"
+#define IDC_Health9 L"Health9"
+#define IDC_Health L"Health"
+#define IDC_Health9 L"Health9"
+#define IDC_Health8 L"Health8"
+#define IDC_Health7 L"Health7"
+#define IDC_Health6 L"Health6"
+#define IDC_Health5 L"Health5"
+#define IDC_Health4 L"Health4"
+#define IDC_Health3 L"Health3"
+#define IDC_Health2 L"Health2"
+#define IDC_Health1 L"Health1"
+#define IDC_Health0 L"Health0"
+#define IDC_Health19 L"Health19"
+#define IDC_Health18 L"Health18"
+#define IDC_Health17 L"Health17"
+#define IDC_Health16 L"Health16"
+#define IDC_Health15 L"Health15"
+#define IDC_Health14 L"Health14"
+#define IDC_Health13 L"Health13"
+#define IDC_Health12 L"Health12"
+#define IDC_Health11 L"Health11"
+#define IDC_Health10 L"Health10"
+#define IDC_HorseHealth L"HorseHealth"
#define IDC_Food9 L"Food9"
#define IDC_Food8 L"Food8"
#define IDC_Food7 L"Food7"
diff --git a/Minecraft.Client/Common/Media/xuiscene_hud.xui b/Minecraft.Client/Common/Media/xuiscene_hud.xui
index 13986320..7eea76d4 100644
--- a/Minecraft.Client/Common/Media/xuiscene_hud.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_hud.xui
@@ -160,6 +160,210 @@
<RangeMax>200</RangeMax>
</Properties>
</XuiProgressBar>
+<XuiProgressBar>
+<Properties>
+<Id>HorseJumpProgress</Id>
+<Width>182.000000</Width>
+<Height>5.000000</Height>
+<Position>0.000031,20.000031,0.000000</Position>
+<Visual>HorseJumpProgress</Visual>
+<RangeMax>200</RangeMax>
+</Properties>
+</XuiProgressBar>
+<XuiGroup>
+<Properties>
+<Id>Armour</Id>
+<Width>81.000000</Width>
+<Height>9.000000</Height>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Armour0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>0.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000029,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour9</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+</XuiGroup>
+<XuiGroup>
+<Properties>
+<Id>HealthAbsorb</Id>
+<Width>81.000000</Width>
+<Height>9.000000</Height>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Health0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>0.000031,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health9</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+</XuiGroup>
<XuiGroup>
<Properties>
<Id>Health</Id>
@@ -260,98 +464,189 @@
</XuiGroup>
<XuiGroup>
<Properties>
-<Id>Armour</Id>
+<Id>HorseHealth</Id>
<Width>81.000000</Width>
+<Height>19.000000</Height>
+<Position>101.000000,0.000000,0.000000</Position>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Health9</Id>
+<Width>9.000000</Width>
<Height>9.000000</Height>
+<Position>0.000031,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
+</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour0</Id>
+<Id>Health8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health19</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
<Position>0.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour1</Id>
+<Id>Health18</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>8.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>8.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour2</Id>
+<Id>Health17</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>16.000029,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>16.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour3</Id>
+<Id>Health16</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>24.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>24.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour4</Id>
+<Id>Health15</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>32.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>32.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour5</Id>
+<Id>Health14</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>40.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>40.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour6</Id>
+<Id>Health13</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>48.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>48.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour7</Id>
+<Id>Health12</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>56.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>56.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour8</Id>
+<Id>Health11</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>64.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>64.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour9</Id>
+<Id>Health10</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
<Position>72.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
</XuiGroup>
diff --git a/Minecraft.Client/Common/Media/xuiscene_hud_480.h b/Minecraft.Client/Common/Media/xuiscene_hud_480.h
index 8bf537f5..1c1fb549 100644
--- a/Minecraft.Client/Common/Media/xuiscene_hud_480.h
+++ b/Minecraft.Client/Common/Media/xuiscene_hud_480.h
@@ -11,17 +11,7 @@
#define IDC_Inventory9 L"Inventory9"
#define IDC_Hotbar L"Hotbar"
#define IDC_ExperienceProgress L"ExperienceProgress"
-#define IDC_Health0 L"Health0"
-#define IDC_Health1 L"Health1"
-#define IDC_Health2 L"Health2"
-#define IDC_Health3 L"Health3"
-#define IDC_Health4 L"Health4"
-#define IDC_Health5 L"Health5"
-#define IDC_Health6 L"Health6"
-#define IDC_Health7 L"Health7"
-#define IDC_Health8 L"Health8"
-#define IDC_Health9 L"Health9"
-#define IDC_Health L"Health"
+#define IDC_HorseJumpProgress L"HorseJumpProgress"
#define IDC_Armour0 L"Armour0"
#define IDC_Armour1 L"Armour1"
#define IDC_Armour2 L"Armour2"
@@ -33,6 +23,49 @@
#define IDC_Armour8 L"Armour8"
#define IDC_Armour9 L"Armour9"
#define IDC_Armour L"Armour"
+#define IDC_Health0 L"Health0"
+#define IDC_Health1 L"Health1"
+#define IDC_Health2 L"Health2"
+#define IDC_Health3 L"Health3"
+#define IDC_Health4 L"Health4"
+#define IDC_Health5 L"Health5"
+#define IDC_Health6 L"Health6"
+#define IDC_Health7 L"Health7"
+#define IDC_Health8 L"Health8"
+#define IDC_Health9 L"Health9"
+#define IDC_HealthAbsorb L"HealthAbsorb"
+#define IDC_Health0 L"Health0"
+#define IDC_Health1 L"Health1"
+#define IDC_Health2 L"Health2"
+#define IDC_Health3 L"Health3"
+#define IDC_Health4 L"Health4"
+#define IDC_Health5 L"Health5"
+#define IDC_Health6 L"Health6"
+#define IDC_Health7 L"Health7"
+#define IDC_Health8 L"Health8"
+#define IDC_Health9 L"Health9"
+#define IDC_Health L"Health"
+#define IDC_Health9 L"Health9"
+#define IDC_Health8 L"Health8"
+#define IDC_Health7 L"Health7"
+#define IDC_Health6 L"Health6"
+#define IDC_Health5 L"Health5"
+#define IDC_Health4 L"Health4"
+#define IDC_Health3 L"Health3"
+#define IDC_Health2 L"Health2"
+#define IDC_Health1 L"Health1"
+#define IDC_Health0 L"Health0"
+#define IDC_Health19 L"Health19"
+#define IDC_Health18 L"Health18"
+#define IDC_Health17 L"Health17"
+#define IDC_Health16 L"Health16"
+#define IDC_Health15 L"Health15"
+#define IDC_Health14 L"Health14"
+#define IDC_Health13 L"Health13"
+#define IDC_Health12 L"Health12"
+#define IDC_Health11 L"Health11"
+#define IDC_Health10 L"Health10"
+#define IDC_HorseHealth L"HorseHealth"
#define IDC_Food9 L"Food9"
#define IDC_Food8 L"Food8"
#define IDC_Food7 L"Food7"
diff --git a/Minecraft.Client/Common/Media/xuiscene_hud_480.xui b/Minecraft.Client/Common/Media/xuiscene_hud_480.xui
index 4364039e..14d62faa 100644
--- a/Minecraft.Client/Common/Media/xuiscene_hud_480.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_hud_480.xui
@@ -160,6 +160,210 @@
<RangeMax>200</RangeMax>
</Properties>
</XuiProgressBar>
+<XuiProgressBar>
+<Properties>
+<Id>HorseJumpProgress</Id>
+<Width>182.000000</Width>
+<Height>5.000000</Height>
+<Position>0.000031,20.000031,0.000000</Position>
+<Visual>HorseJumpProgress</Visual>
+<RangeMax>200</RangeMax>
+</Properties>
+</XuiProgressBar>
+<XuiGroup>
+<Properties>
+<Id>Armour</Id>
+<Width>81.000000</Width>
+<Height>9.000000</Height>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Armour0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>0.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000029,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour9</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+</XuiGroup>
+<XuiGroup>
+<Properties>
+<Id>HealthAbsorb</Id>
+<Width>81.000000</Width>
+<Height>9.000000</Height>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Health0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>0.000031,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health9</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+</XuiGroup>
<XuiGroup>
<Properties>
<Id>Health</Id>
@@ -260,98 +464,189 @@
</XuiGroup>
<XuiGroup>
<Properties>
-<Id>Armour</Id>
+<Id>HorseHealth</Id>
<Width>81.000000</Width>
+<Height>19.000000</Height>
+<Position>101.000000,0.000000,0.000000</Position>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Health9</Id>
+<Width>9.000000</Width>
<Height>9.000000</Height>
+<Position>0.000031,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
+</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour0</Id>
+<Id>Health8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health19</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
<Position>0.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour1</Id>
+<Id>Health18</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>8.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>8.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour2</Id>
+<Id>Health17</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>16.000029,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>16.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour3</Id>
+<Id>Health16</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>24.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>24.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour4</Id>
+<Id>Health15</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>32.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>32.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour5</Id>
+<Id>Health14</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>40.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>40.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour6</Id>
+<Id>Health13</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>48.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>48.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour7</Id>
+<Id>Health12</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>56.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>56.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour8</Id>
+<Id>Health11</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>64.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>64.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour9</Id>
+<Id>Health10</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
<Position>72.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
</XuiGroup>
diff --git a/Minecraft.Client/Common/Media/xuiscene_hud_small.h b/Minecraft.Client/Common/Media/xuiscene_hud_small.h
index 8bf537f5..1c1fb549 100644
--- a/Minecraft.Client/Common/Media/xuiscene_hud_small.h
+++ b/Minecraft.Client/Common/Media/xuiscene_hud_small.h
@@ -11,17 +11,7 @@
#define IDC_Inventory9 L"Inventory9"
#define IDC_Hotbar L"Hotbar"
#define IDC_ExperienceProgress L"ExperienceProgress"
-#define IDC_Health0 L"Health0"
-#define IDC_Health1 L"Health1"
-#define IDC_Health2 L"Health2"
-#define IDC_Health3 L"Health3"
-#define IDC_Health4 L"Health4"
-#define IDC_Health5 L"Health5"
-#define IDC_Health6 L"Health6"
-#define IDC_Health7 L"Health7"
-#define IDC_Health8 L"Health8"
-#define IDC_Health9 L"Health9"
-#define IDC_Health L"Health"
+#define IDC_HorseJumpProgress L"HorseJumpProgress"
#define IDC_Armour0 L"Armour0"
#define IDC_Armour1 L"Armour1"
#define IDC_Armour2 L"Armour2"
@@ -33,6 +23,49 @@
#define IDC_Armour8 L"Armour8"
#define IDC_Armour9 L"Armour9"
#define IDC_Armour L"Armour"
+#define IDC_Health0 L"Health0"
+#define IDC_Health1 L"Health1"
+#define IDC_Health2 L"Health2"
+#define IDC_Health3 L"Health3"
+#define IDC_Health4 L"Health4"
+#define IDC_Health5 L"Health5"
+#define IDC_Health6 L"Health6"
+#define IDC_Health7 L"Health7"
+#define IDC_Health8 L"Health8"
+#define IDC_Health9 L"Health9"
+#define IDC_HealthAbsorb L"HealthAbsorb"
+#define IDC_Health0 L"Health0"
+#define IDC_Health1 L"Health1"
+#define IDC_Health2 L"Health2"
+#define IDC_Health3 L"Health3"
+#define IDC_Health4 L"Health4"
+#define IDC_Health5 L"Health5"
+#define IDC_Health6 L"Health6"
+#define IDC_Health7 L"Health7"
+#define IDC_Health8 L"Health8"
+#define IDC_Health9 L"Health9"
+#define IDC_Health L"Health"
+#define IDC_Health9 L"Health9"
+#define IDC_Health8 L"Health8"
+#define IDC_Health7 L"Health7"
+#define IDC_Health6 L"Health6"
+#define IDC_Health5 L"Health5"
+#define IDC_Health4 L"Health4"
+#define IDC_Health3 L"Health3"
+#define IDC_Health2 L"Health2"
+#define IDC_Health1 L"Health1"
+#define IDC_Health0 L"Health0"
+#define IDC_Health19 L"Health19"
+#define IDC_Health18 L"Health18"
+#define IDC_Health17 L"Health17"
+#define IDC_Health16 L"Health16"
+#define IDC_Health15 L"Health15"
+#define IDC_Health14 L"Health14"
+#define IDC_Health13 L"Health13"
+#define IDC_Health12 L"Health12"
+#define IDC_Health11 L"Health11"
+#define IDC_Health10 L"Health10"
+#define IDC_HorseHealth L"HorseHealth"
#define IDC_Food9 L"Food9"
#define IDC_Food8 L"Food8"
#define IDC_Food7 L"Food7"
diff --git a/Minecraft.Client/Common/Media/xuiscene_hud_small.xui b/Minecraft.Client/Common/Media/xuiscene_hud_small.xui
index cea7e2bd..84d5b6df 100644
--- a/Minecraft.Client/Common/Media/xuiscene_hud_small.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_hud_small.xui
@@ -160,6 +160,210 @@
<RangeMax>200</RangeMax>
</Properties>
</XuiProgressBar>
+<XuiProgressBar>
+<Properties>
+<Id>HorseJumpProgress</Id>
+<Width>182.000000</Width>
+<Height>5.000000</Height>
+<Position>0.000031,20.000031,0.000000</Position>
+<Visual>HorseJumpProgress</Visual>
+<RangeMax>200</RangeMax>
+</Properties>
+</XuiProgressBar>
+<XuiGroup>
+<Properties>
+<Id>Armour</Id>
+<Width>81.000000</Width>
+<Height>9.000000</Height>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Armour0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>0.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000029,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000027,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000023,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Armour9</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,0.000061,0.000000</Position>
+<Visual>HudArmour</Visual>
+</Properties>
+</XuiControl>
+</XuiGroup>
+<XuiGroup>
+<Properties>
+<Id>HealthAbsorb</Id>
+<Width>81.000000</Width>
+<Height>9.000000</Height>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Health0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>0.000031,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health9</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+</XuiGroup>
<XuiGroup>
<Properties>
<Id>Health</Id>
@@ -260,98 +464,189 @@
</XuiGroup>
<XuiGroup>
<Properties>
-<Id>Armour</Id>
+<Id>HorseHealth</Id>
<Width>81.000000</Width>
+<Height>19.000000</Height>
+<Position>101.000000,0.000000,0.000000</Position>
+</Properties>
+<XuiControl>
+<Properties>
+<Id>Health9</Id>
+<Width>9.000000</Width>
<Height>9.000000</Height>
+<Position>0.000031,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
+</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour0</Id>
+<Id>Health8</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>8.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health7</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>16.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health6</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>24.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health5</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>32.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health4</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>40.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health3</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>48.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health2</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>56.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health1</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>64.000000,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health0</Id>
+<Width>9.000000</Width>
+<Height>9.000000</Height>
+<Position>72.000031,10.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
+</Properties>
+</XuiControl>
+<XuiControl>
+<Properties>
+<Id>Health19</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
<Position>0.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour1</Id>
+<Id>Health18</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>8.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>8.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour2</Id>
+<Id>Health17</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>16.000029,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>16.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour3</Id>
+<Id>Health16</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>24.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>24.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour4</Id>
+<Id>Health15</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>32.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>32.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour5</Id>
+<Id>Health14</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>40.000027,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>40.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour6</Id>
+<Id>Health13</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>48.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>48.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour7</Id>
+<Id>Health12</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>56.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>56.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour8</Id>
+<Id>Health11</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
-<Position>64.000023,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Position>64.000000,0.000061,0.000000</Position>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
<XuiControl>
<Properties>
-<Id>Armour9</Id>
+<Id>Health10</Id>
<Width>9.000000</Width>
<Height>9.000000</Height>
<Position>72.000031,0.000061,0.000000</Position>
-<Visual>HudArmour</Visual>
+<Visual>HudHealth</Visual>
</Properties>
</XuiControl>
</XuiGroup>
diff --git a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.h b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.h
index 330eac41..4ba8da05 100644
--- a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.h
+++ b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.h
@@ -1,3 +1,10 @@
+#define IDC_CheckboxNaturalRegen L"CheckboxNaturalRegen"
+#define IDC_CheckboxTileDrops L"CheckboxTileDrops"
+#define IDC_CheckboxMobLoot L"CheckboxMobLoot"
+#define IDC_CheckboxMobGriefing L"CheckboxMobGriefing"
+#define IDC_CheckboxMobSpawning L"CheckboxMobSpawning"
+#define IDC_CheckboxKeepInventory L"CheckboxKeepInventory"
+#define IDC_CheckboxDaylightCycle L"CheckboxDaylightCycle"
#define IDC_CheckboxTNT L"CheckboxTNT"
#define IDC_CheckboxFireSpreads L"CheckboxFireSpreads"
#define IDC_ButtonTeleportToPlayer L"ButtonTeleportToPlayer"
diff --git a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.xui b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.xui
index af2b53ca..decdffab 100644
--- a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options.xui
@@ -7,23 +7,109 @@
<Properties>
<Id>InGameHostOptions</Id>
<Width>454.666687</Width>
-<Height>196.000000</Height>
-<Position>412.666718,262.000031,0.000000</Position>
+<Height>435.000000</Height>
+<Position>412.666718,140.000031,0.000000</Position>
<ClassOverride>CScene_InGameHostOptions</ClassOverride>
<Visual>XuiScene</Visual>
<DefaultFocus>GameOptions\CheckboxFireSpreads</DefaultFocus>
+<InterruptTransitions>2</InterruptTransitions>
</Properties>
<XuiScene>
<Properties>
<Id>GameOptions</Id>
<Width>450.000000</Width>
-<Height>173.000000</Height>
-<Position>0.000000,18.000000,0.000000</Position>
+<Height>411.000000</Height>
+<Position>0.000000,16.000000,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiBlankScene</Visual>
</Properties>
<XuiCheckbox>
<Properties>
+<Id>CheckboxNaturalRegen</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>22.000000,274.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxTileDrops</NavUp>
+<NavDown>ButtonTeleportToPlayer</NavDown>
+<NavTabBackward>ButtonTeleportToPlayer</NavTabBackward>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxTileDrops</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>22.000000,240.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxMobLoot</NavUp>
+<NavDown>CheckboxNaturalRegen</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobLoot</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>22.000000,204.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxMobGriefing</NavUp>
+<NavDown>CheckboxTileDrops</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobGriefing</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>22.000000,170.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxMobSpawning</NavUp>
+<NavDown>CheckboxMobLoot</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobSpawning</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>22.000000,136.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxKeepInventory</NavUp>
+<NavDown>CheckboxMobGriefing</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxKeepInventory</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>22.000000,102.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxDaylightCycle</NavUp>
+<NavDown>CheckboxMobSpawning</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxDaylightCycle</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>22.000000,68.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxTNT</NavUp>
+<NavDown>CheckboxKeepInventory</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
<Id>CheckboxTNT</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
@@ -31,7 +117,7 @@
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
<NavUp>CheckboxFireSpreads</NavUp>
-<NavDown>ButtonTeleportToPlayer</NavDown>
+<NavDown>CheckboxDaylightCycle</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
@@ -39,7 +125,7 @@
<Id>CheckboxFireSpreads</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>22.000000,0.000000,0.000000</Position>
+<Position>22.000000,1.000000,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
<NavDown>CheckboxTNT</NavDown>
@@ -50,8 +136,8 @@
<Id>ButtonTeleportToPlayer</Id>
<Width>412.000000</Width>
<Height>40.000000</Height>
-<Position>22.000000,72.999985,0.000000</Position>
-<NavUp>CheckboxTNT</NavUp>
+<Position>21.000000,311.000000,0.000000</Position>
+<NavUp>CheckboxNaturalRegen</NavUp>
<NavDown>ButtonTeleportPlayerToMe</NavDown>
</Properties>
</XuiButton>
@@ -60,7 +146,7 @@
<Id>ButtonTeleportPlayerToMe</Id>
<Width>412.000000</Width>
<Height>40.000000</Height>
-<Position>22.000000,119.999985,0.000000</Position>
+<Position>21.000000,360.000000,0.000000</Position>
<NavUp>ButtonTeleportToPlayer</NavUp>
</Properties>
</XuiButton>
diff --git a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.h b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.h
index 330eac41..4ba8da05 100644
--- a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.h
+++ b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.h
@@ -1,3 +1,10 @@
+#define IDC_CheckboxNaturalRegen L"CheckboxNaturalRegen"
+#define IDC_CheckboxTileDrops L"CheckboxTileDrops"
+#define IDC_CheckboxMobLoot L"CheckboxMobLoot"
+#define IDC_CheckboxMobGriefing L"CheckboxMobGriefing"
+#define IDC_CheckboxMobSpawning L"CheckboxMobSpawning"
+#define IDC_CheckboxKeepInventory L"CheckboxKeepInventory"
+#define IDC_CheckboxDaylightCycle L"CheckboxDaylightCycle"
#define IDC_CheckboxTNT L"CheckboxTNT"
#define IDC_CheckboxFireSpreads L"CheckboxFireSpreads"
#define IDC_ButtonTeleportToPlayer L"ButtonTeleportToPlayer"
diff --git a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.xui b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.xui
index df6888f3..0db33e51 100644
--- a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_480.xui
@@ -6,42 +6,125 @@
<XuiScene>
<Properties>
<Id>InGameHostOptions</Id>
-<Width>462.444458</Width>
-<Height>189.444443</Height>
-<Position>88.777794,145.277802,0.000000</Position>
+<Width>440.000000</Width>
+<Height>330.000000</Height>
+<Position>100.000038,75.000000,0.000000</Position>
<ClassOverride>CScene_InGameHostOptions</ClassOverride>
-<Visual>XuiScene</Visual>
+<Visual>GraphicPanel</Visual>
<DefaultFocus>GameOptions\CheckboxFireSpreads</DefaultFocus>
</Properties>
<XuiScene>
<Properties>
<Id>GameOptions</Id>
-<Width>450.000000</Width>
-<Height>170.999985</Height>
-<Position>0.000000,18.000000,0.000000</Position>
+<Width>440.000000</Width>
+<Height>330.000000</Height>
<Anchor>2</Anchor>
<Visual>XuiBlankScene</Visual>
</Properties>
<XuiCheckbox>
<Properties>
+<Id>CheckboxNaturalRegen</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,206.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxTileDrops</NavUp>
+<NavDown>ButtonTeleportToPlayer</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxTileDrops</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,182.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxMobLoot</NavUp>
+<NavDown>CheckboxNaturalRegen</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobLoot</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,158.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxMobGriefing</NavUp>
+<NavDown>CheckboxTileDrops</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobGriefing</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,134.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxMobSpawning</NavUp>
+<NavDown>CheckboxMobLoot</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobSpawning</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,110.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxKeepInventory</NavUp>
+<NavDown>CheckboxMobGriefing</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxKeepInventory</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,86.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxDaylightCycle</NavUp>
+<NavDown>CheckboxMobSpawning</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxDaylightCycle</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,62.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxTNT</NavUp>
+<NavDown>CheckboxKeepInventory</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
<Id>CheckboxTNT</Id>
<Width>402.000000</Width>
-<Height>34.000000</Height>
-<Position>22.000000,34.000000,0.000000</Position>
+<Height>24.000000</Height>
+<Position>15.000016,38.000000,0.000000</Position>
<Anchor>2</Anchor>
-<Visual>XuiCheckbox</Visual>
+<Visual>XuiCheckboxSmall</Visual>
<NavUp>CheckboxFireSpreads</NavUp>
-<NavDown>ButtonTeleportToPlayer</NavDown>
+<NavDown>CheckboxDaylightCycle</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
<Id>CheckboxFireSpreads</Id>
<Width>402.000000</Width>
-<Height>34.000000</Height>
-<Position>22.000000,0.000000,0.000000</Position>
+<Height>24.000000</Height>
+<Position>15.000016,14.000000,0.000000</Position>
<Anchor>2</Anchor>
-<Visual>XuiCheckbox</Visual>
+<Visual>XuiCheckboxSmall</Visual>
<NavDown>CheckboxTNT</NavDown>
</Properties>
</XuiCheckbox>
@@ -50,9 +133,9 @@
<Id>ButtonTeleportToPlayer</Id>
<Width>410.000000</Width>
<Height>36.000000</Height>
-<Position>26.000004,72.000015,0.000000</Position>
+<Position>15.000020,232.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
-<NavUp>CheckboxTNT</NavUp>
+<NavUp>CheckboxNaturalRegen</NavUp>
<NavDown>ButtonTeleportPlayerToMe</NavDown>
</Properties>
</XuiButton>
@@ -61,7 +144,7 @@
<Id>ButtonTeleportPlayerToMe</Id>
<Width>410.000000</Width>
<Height>36.000000</Height>
-<Position>26.000004,116.000015,0.000000</Position>
+<Position>15.000020,276.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
<NavUp>ButtonTeleportToPlayer</NavUp>
</Properties>
diff --git a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.h b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.h
index 330eac41..4ba8da05 100644
--- a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.h
+++ b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.h
@@ -1,3 +1,10 @@
+#define IDC_CheckboxNaturalRegen L"CheckboxNaturalRegen"
+#define IDC_CheckboxTileDrops L"CheckboxTileDrops"
+#define IDC_CheckboxMobLoot L"CheckboxMobLoot"
+#define IDC_CheckboxMobGriefing L"CheckboxMobGriefing"
+#define IDC_CheckboxMobSpawning L"CheckboxMobSpawning"
+#define IDC_CheckboxKeepInventory L"CheckboxKeepInventory"
+#define IDC_CheckboxDaylightCycle L"CheckboxDaylightCycle"
#define IDC_CheckboxTNT L"CheckboxTNT"
#define IDC_CheckboxFireSpreads L"CheckboxFireSpreads"
#define IDC_ButtonTeleportToPlayer L"ButtonTeleportToPlayer"
diff --git a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.xui b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.xui
index 0b759663..9041e773 100644
--- a/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_ingame_host_options_small.xui
@@ -6,42 +6,125 @@
<XuiScene>
<Properties>
<Id>InGameHostOptions</Id>
-<Width>462.444458</Width>
-<Height>189.444443</Height>
-<Position>88.777809,85.277794,0.000000</Position>
+<Width>440.000000</Width>
+<Height>330.000000</Height>
+<Position>100.000038,0.000000,0.000000</Position>
<ClassOverride>CScene_InGameHostOptions</ClassOverride>
-<Visual>XuiScene</Visual>
+<Visual>GraphicPanel</Visual>
<DefaultFocus>GameOptions\CheckboxFireSpreads</DefaultFocus>
</Properties>
<XuiScene>
<Properties>
<Id>GameOptions</Id>
-<Width>450.000000</Width>
-<Height>170.999985</Height>
-<Position>0.000000,18.000000,0.000000</Position>
+<Width>440.000000</Width>
+<Height>330.000000</Height>
<Anchor>2</Anchor>
<Visual>XuiBlankScene</Visual>
</Properties>
<XuiCheckbox>
<Properties>
+<Id>CheckboxNaturalRegen</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,206.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxTileDrops</NavUp>
+<NavDown>ButtonTeleportToPlayer</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxTileDrops</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,182.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxMobLoot</NavUp>
+<NavDown>CheckboxNaturalRegen</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobLoot</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,158.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxMobGriefing</NavUp>
+<NavDown>CheckboxTileDrops</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobGriefing</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,134.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxMobSpawning</NavUp>
+<NavDown>CheckboxMobLoot</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxMobSpawning</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,110.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxKeepInventory</NavUp>
+<NavDown>CheckboxMobGriefing</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxKeepInventory</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,86.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxDaylightCycle</NavUp>
+<NavDown>CheckboxMobSpawning</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxDaylightCycle</Id>
+<Width>402.000000</Width>
+<Height>24.000000</Height>
+<Position>15.000016,62.000000,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxTNT</NavUp>
+<NavDown>CheckboxKeepInventory</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
<Id>CheckboxTNT</Id>
<Width>402.000000</Width>
-<Height>34.000000</Height>
-<Position>22.000000,34.000000,0.000000</Position>
+<Height>24.000000</Height>
+<Position>15.000016,38.000000,0.000000</Position>
<Anchor>2</Anchor>
-<Visual>XuiCheckbox</Visual>
+<Visual>XuiCheckboxSmall</Visual>
<NavUp>CheckboxFireSpreads</NavUp>
-<NavDown>ButtonTeleportToPlayer</NavDown>
+<NavDown>CheckboxDaylightCycle</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
<Id>CheckboxFireSpreads</Id>
<Width>402.000000</Width>
-<Height>34.000000</Height>
-<Position>22.000000,0.000000,0.000000</Position>
+<Height>24.000000</Height>
+<Position>15.000016,14.000000,0.000000</Position>
<Anchor>2</Anchor>
-<Visual>XuiCheckbox</Visual>
+<Visual>XuiCheckboxSmall</Visual>
<NavDown>CheckboxTNT</NavDown>
</Properties>
</XuiCheckbox>
@@ -50,9 +133,9 @@
<Id>ButtonTeleportToPlayer</Id>
<Width>410.000000</Width>
<Height>36.000000</Height>
-<Position>26.000004,72.000015,0.000000</Position>
+<Position>15.000020,232.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
-<NavUp>CheckboxTNT</NavUp>
+<NavUp>CheckboxNaturalRegen</NavUp>
<NavDown>ButtonTeleportPlayerToMe</NavDown>
</Properties>
</XuiButton>
@@ -61,7 +144,7 @@
<Id>ButtonTeleportPlayerToMe</Id>
<Width>410.000000</Width>
<Height>36.000000</Height>
-<Position>26.000004,116.000015,0.000000</Position>
+<Position>15.000020,276.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
<NavUp>ButtonTeleportToPlayer</NavUp>
</Properties>
diff --git a/Minecraft.Client/Common/Media/xuiscene_inventory_creative.h b/Minecraft.Client/Common/Media/xuiscene_inventory_creative.h
index 12dfbaf8..3eff3adc 100644
--- a/Minecraft.Client/Common/Media/xuiscene_inventory_creative.h
+++ b/Minecraft.Client/Common/Media/xuiscene_inventory_creative.h
@@ -228,6 +228,15 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_UseRow L"UseRow"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
@@ -490,6 +499,16 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_Container L"Container"
#define IDC_TabImage1 L"TabImage1"
#define IDC_TabImage2 L"TabImage2"
diff --git a/Minecraft.Client/Common/Media/xuiscene_inventory_creative.xui b/Minecraft.Client/Common/Media/xuiscene_inventory_creative.xui
index 0163464d..ca184ee5 100644
--- a/Minecraft.Client/Common/Media/xuiscene_inventory_creative.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_inventory_creative.xui
@@ -3241,6 +3241,132 @@
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
<XuiList>
<Properties>
@@ -6901,20 +7027,159 @@
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>54.000000</Width>
+<Height>54.000000</Height>
+<Anchor>7</Anchor>
+<Pivot>0.000000,50.000000,0.000000</Pivot>
+<Show>false</Show>
+<ClassOverride>CXuiCtrlSlotItemListItem</ClassOverride>
+<Visual>ItemButton54</Visual>
+<PressKey>22594</PressKey>
+<Layout>4</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
<XuiGroup>
<Properties>
<Id>Group_Tab_Images</Id>
-<Width>1280.000000</Width>
-<Height>200.000000</Height>
-<Position>-319.300049,-48.999992,0.000000</Position>
+<Width>643.000000</Width>
+<Height>78.000000</Height>
</Properties>
<XuiControl>
<Properties>
<Id>TabImage1</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>319.000000,46.000000,0.000000</Position>
+<Position>0.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabLeft</Visual>
</Properties>
</XuiControl>
@@ -6923,7 +7188,7 @@
<Id>TabImage2</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>399.000000,46.000000,0.000000</Position>
+<Position>80.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabMiddle</Visual>
</Properties>
</XuiControl>
@@ -6932,7 +7197,7 @@
<Id>TabImage3</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>479.000000,46.000000,0.000000</Position>
+<Position>160.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabMiddle</Visual>
</Properties>
</XuiControl>
@@ -6941,7 +7206,7 @@
<Id>TabImage4</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>559.000000,46.000000,0.000000</Position>
+<Position>240.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabMiddle</Visual>
</Properties>
</XuiControl>
@@ -6950,7 +7215,7 @@
<Id>TabImage5</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>639.000000,46.000000,0.000000</Position>
+<Position>320.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabMiddle</Visual>
</Properties>
</XuiControl>
@@ -6959,7 +7224,7 @@
<Id>TabImage6</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>719.000000,46.000000,0.000000</Position>
+<Position>400.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabMiddle</Visual>
</Properties>
</XuiControl>
@@ -6968,7 +7233,7 @@
<Id>TabImage7</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>799.000000,46.000000,0.000000</Position>
+<Position>480.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabMiddle</Visual>
</Properties>
</XuiControl>
@@ -6977,7 +7242,7 @@
<Id>TabImage8</Id>
<Width>83.000000</Width>
<Height>78.000000</Height>
-<Position>879.000000,46.000000,0.000000</Position>
+<Position>560.000000,-2.000000,0.000000</Position>
<Visual>CreativeInventoryTabRight</Visual>
</Properties>
</XuiControl>
diff --git a/Minecraft.Client/Common/Media/xuiscene_load_settings.h b/Minecraft.Client/Common/Media/xuiscene_load_settings.h
index fdacf6fd..027a45fb 100644
--- a/Minecraft.Client/Common/Media/xuiscene_load_settings.h
+++ b/Minecraft.Client/Common/Media/xuiscene_load_settings.h
@@ -6,6 +6,9 @@
#define IDC_Background L"Background"
#define IDC_XuiLoadSettings L"XuiLoadSettings"
#define IDC_XuiMoreOptions L"XuiMoreOptions"
+#define IDC_CheckboxOnline L"CheckboxOnline"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
diff --git a/Minecraft.Client/Common/Media/xuiscene_load_settings.xui b/Minecraft.Client/Common/Media/xuiscene_load_settings.xui
index 8cf791a0..781f3da2 100644
--- a/Minecraft.Client/Common/Media/xuiscene_load_settings.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_load_settings.xui
@@ -17,8 +17,8 @@
<Properties>
<Id>TexturePackDetails</Id>
<Width>334.000000</Width>
-<Height>432.000000</Height>
-<Position>260.000000,10.000000,0.000000</Position>
+<Height>462.000000</Height>
+<Position>260.000000,14.000000,0.000000</Position>
<Visual>LeaderboardHeaderPanel</Visual>
</Properties>
<XuiLabel>
@@ -26,7 +26,7 @@
<Id>ComparisonPic</Id>
<Width>292.000000</Width>
<Height>160.000000</Height>
-<Position>26.000000,256.000000,0.000000</Position>
+<Position>26.000000,291.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JIcon</ClassOverride>
<Visual>XuiVisualImagePresenter</Visual>
</Properties>
@@ -54,9 +54,9 @@
<Properties>
<Id>TexturePackDescription</Id>
<Width>292.000000</Width>
-<Height>160.000000</Height>
+<Height>180.000000</Height>
<Position>26.000000,86.000000,0.000000</Position>
-<Visual>XuiLabelDesc_LftWrp</Visual>
+<Visual>XuiHtmlControl</Visual>
</Properties>
</XuiLabel>
</XuiScene>
@@ -64,14 +64,14 @@
<Properties>
<Id>MainScene</Id>
<Width>490.000000</Width>
-<Height>450.000000</Height>
+<Height>484.000000</Height>
<Position>140.000031,0.000000,0.000000</Position>
</Properties>
<XuiControl>
<Properties>
<Id>Background</Id>
<Width>490.000000</Width>
-<Height>450.000000</Height>
+<Height>484.000000</Height>
<Anchor>15</Anchor>
<Visual>XuiScene</Visual>
</Properties>
@@ -81,7 +81,7 @@
<Id>XuiLoadSettings</Id>
<Width>440.000000</Width>
<Height>40.000000</Height>
-<Position>25.000015,384.000000,0.000000</Position>
+<Position>25.000015,420.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L</Visual>
<NavUp>XuiMoreOptions</NavUp>
</Properties>
@@ -91,13 +91,24 @@
<Id>XuiMoreOptions</Id>
<Width>440.000000</Width>
<Height>40.000000</Height>
-<Position>25.000015,334.000000,0.000000</Position>
+<Position>25.000015,370.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L</Visual>
-<NavUp>TexturePacksList</NavUp>
+<NavUp>CheckboxOnline</NavUp>
<NavDown>XuiLoadSettings</NavDown>
<PressKey>22528</PressKey>
</Properties>
</XuiButton>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxOnline</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>25.000015,330.000000,0.000000</Position>
+<Visual>XuiCheckbox</Visual>
+<NavUp>TexturePacksList</NavUp>
+<NavDown>XuiMoreOptions</NavDown>
+</Properties>
+</XuiCheckbox>
<XuiList>
<Properties>
<Id>TexturePacksList</Id>
@@ -107,7 +118,7 @@
<ClassOverride>CXuiCtrl4JList</ClassOverride>
<Visual>XuiListTexturePack</Visual>
<NavUp>XuiSliderDifficulty\XuiSlider</NavUp>
-<NavDown>XuiMoreOptions</NavDown>
+<NavDown>CheckboxOnline</NavDown>
<Wrap>true</Wrap>
</Properties>
<XuiListItem>
@@ -308,6 +319,28 @@
<Layout>1</Layout>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Height>60.000000</Height>
+<Position>34.000000,30.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButton</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Height>60.000000</Height>
+<Position>34.000000,30.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButton</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
<XuiScene>
<Properties>
@@ -449,27 +482,27 @@
<KeyFrame>
<Time>0</Time>
<Interpolation>0</Interpolation>
-<Prop>260.000000,10.000000,0.000000</Prop>
+<Prop>260.000000,14.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>1</Time>
<Interpolation>0</Interpolation>
-<Prop>260.000000,10.000000,0.000000</Prop>
+<Prop>260.000000,14.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>30</Time>
<Interpolation>0</Interpolation>
-<Prop>434.000000,10.000000,0.000000</Prop>
+<Prop>434.000000,14.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>31</Time>
<Interpolation>0</Interpolation>
-<Prop>434.000000,10.000000,0.000000</Prop>
+<Prop>434.000000,14.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>60</Time>
<Interpolation>0</Interpolation>
-<Prop>260.000000,10.000000,0.000000</Prop>
+<Prop>260.000000,14.000000,0.000000</Prop>
</KeyFrame>
</Timeline>
</Timelines>
diff --git a/Minecraft.Client/Common/Media/xuiscene_load_settings_480.h b/Minecraft.Client/Common/Media/xuiscene_load_settings_480.h
index 9942515e..df3b2198 100644
--- a/Minecraft.Client/Common/Media/xuiscene_load_settings_480.h
+++ b/Minecraft.Client/Common/Media/xuiscene_load_settings_480.h
@@ -6,6 +6,9 @@
#define IDC_Background L"Background"
#define IDC_XuiLoadSettings L"XuiLoadSettings"
#define IDC_XuiMoreOptions L"XuiMoreOptions"
+#define IDC_CheckboxOnline L"CheckboxOnline"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
diff --git a/Minecraft.Client/Common/Media/xuiscene_load_settings_480.xui b/Minecraft.Client/Common/Media/xuiscene_load_settings_480.xui
index fd9eaa91..d39f0940 100644
--- a/Minecraft.Client/Common/Media/xuiscene_load_settings_480.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_load_settings_480.xui
@@ -17,8 +17,8 @@
<Properties>
<Id>TexturePackDetails</Id>
<Width>230.000000</Width>
-<Height>358.000000</Height>
-<Position>183.500015,9.999999,0.000000</Position>
+<Height>378.000000</Height>
+<Position>184.000000,2.000000,0.000000</Position>
<Visual>LeaderboardHeaderPanel</Visual>
</Properties>
<XuiLabel>
@@ -26,7 +26,7 @@
<Id>ComparisonPic</Id>
<Width>196.000000</Width>
<Height>112.000000</Height>
-<Position>20.000000,234.000000,0.000000</Position>
+<Position>20.000000,254.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JIcon</ClassOverride>
<Visual>XuiVisualImagePresenter</Visual>
</Properties>
@@ -35,9 +35,9 @@
<Properties>
<Id>TexturePackDescription</Id>
<Width>196.000000</Width>
-<Height>96.000000</Height>
+<Height>106.000000</Height>
<Position>20.000010,132.000000,0.000000</Position>
-<Visual>XuiLabelDesc_LftWrp_Small</Visual>
+<Visual>XuiHtmlControl_Small</Visual>
</Properties>
</XuiLabel>
<XuiLabel>
@@ -64,14 +64,14 @@
<Properties>
<Id>MainScene</Id>
<Width>380.000000</Width>
-<Height>375.000000</Height>
-<Position>108.500015,0.000000,0.000000</Position>
+<Height>401.000000</Height>
+<Position>108.500015,-12.999970,0.000000</Position>
</Properties>
<XuiControl>
<Properties>
<Id>Background</Id>
<Width>380.000000</Width>
-<Height>375.000000</Height>
+<Height>401.000000</Height>
<Anchor>15</Anchor>
<Visual>XuiScene</Visual>
</Properties>
@@ -81,7 +81,7 @@
<Id>XuiLoadSettings</Id>
<Width>344.000000</Width>
<Height>36.000000</Height>
-<Position>18.000000,326.000000,0.000000</Position>
+<Position>18.000000,342.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
<NavUp>XuiMoreOptions</NavUp>
<PressKey>22528</PressKey>
@@ -92,13 +92,24 @@
<Id>XuiMoreOptions</Id>
<Width>344.000000</Width>
<Height>36.000000</Height>
-<Position>18.000000,281.000000,0.000000</Position>
+<Position>18.000000,297.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
-<NavUp>TexturePacksList</NavUp>
+<NavUp>CheckboxOnline</NavUp>
<NavDown>XuiLoadSettings</NavDown>
<PressKey>22528</PressKey>
</Properties>
</XuiButton>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxOnline</Id>
+<Width>304.000000</Width>
+<Height>26.000000</Height>
+<Position>20.000000,272.000000,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>TexturePacksList</NavUp>
+<NavDown>XuiMoreOptions</NavDown>
+</Properties>
+</XuiCheckbox>
<XuiList>
<Properties>
<Id>TexturePacksList</Id>
@@ -108,7 +119,7 @@
<ClassOverride>CXuiCtrl4JList</ClassOverride>
<Visual>XuiListTexturePackSmall</Visual>
<NavUp>XuiSliderDifficulty\XuiSlider</NavUp>
-<NavDown>XuiMoreOptions</NavDown>
+<NavDown>CheckboxOnline</NavDown>
<Wrap>true</Wrap>
</Properties>
<XuiListItem>
@@ -313,6 +324,30 @@
<Layout>1</Layout>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>35.000000,24.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButtonSmall</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>35.000000,24.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButtonSmall</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
<XuiScene>
<Properties>
@@ -424,27 +459,27 @@
<KeyFrame>
<Time>0</Time>
<Interpolation>0</Interpolation>
-<Prop>108.500015,0.000000,0.000000</Prop>
+<Prop>108.500015,-12.999970,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>1</Time>
<Interpolation>0</Interpolation>
-<Prop>108.500008,0.000000,0.000000</Prop>
+<Prop>108.500008,-12.999985,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>30</Time>
<Interpolation>0</Interpolation>
-<Prop>0.000000,0.000000,0.000000</Prop>
+<Prop>0.000000,-12.999985,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>31</Time>
<Interpolation>0</Interpolation>
-<Prop>0.000000,0.000000,0.000000</Prop>
+<Prop>0.000000,-12.999985,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>60</Time>
<Interpolation>0</Interpolation>
-<Prop>108.500015,0.000000,0.000000</Prop>
+<Prop>108.500015,-12.999985,0.000000</Prop>
</KeyFrame>
</Timeline>
<Timeline>
@@ -453,27 +488,27 @@
<KeyFrame>
<Time>0</Time>
<Interpolation>0</Interpolation>
-<Prop>183.500015,9.999999,0.000000</Prop>
+<Prop>184.000000,2.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>1</Time>
<Interpolation>0</Interpolation>
-<Prop>183.500015,9.999999,0.000000</Prop>
+<Prop>184.000000,2.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>30</Time>
<Interpolation>0</Interpolation>
-<Prop>366.000000,9.999999,0.000000</Prop>
+<Prop>366.000000,2.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>31</Time>
<Interpolation>0</Interpolation>
-<Prop>366.000000,9.999999,0.000000</Prop>
+<Prop>366.000000,2.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>60</Time>
<Interpolation>0</Interpolation>
-<Prop>183.500015,9.999999,0.000000</Prop>
+<Prop>183.500015,2.000000,0.000000</Prop>
</KeyFrame>
</Timeline>
</Timelines>
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_create.h b/Minecraft.Client/Common/Media/xuiscene_multi_create.h
index 69e78136..56e7204d 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_create.h
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_create.h
@@ -6,6 +6,7 @@
#define IDC_Background L"Background"
#define IDC_XuiNewWorld L"XuiNewWorld"
#define IDC_XuiMoreOptions L"XuiMoreOptions"
+#define IDC_CheckboxOnline L"CheckboxOnline"
#define IDC_XuiSlider L"XuiSlider"
#define IDC_FocusSink L"FocusSink"
#define IDC_XuiSliderDifficulty L"XuiSliderDifficulty"
@@ -24,12 +25,12 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_TexturePacksList L"TexturePacksList"
#define IDC_XuiGameModeToggle L"XuiGameModeToggle"
-#define IDC_XuiLabelRandomSeed L"XuiLabelRandomSeed"
-#define IDC_XuiEditSeed L"XuiEditSeed"
#define IDC_XuiEditWorldName L"XuiEditWorldName"
#define IDC_XuiLabelWorldName L"XuiLabelWorldName"
-#define IDC_XuiLabelSeed L"XuiLabelSeed"
#define IDC_MainScene L"MainScene"
#define IDC_MultiGameCreate L"MultiGameCreate"
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_create.xui b/Minecraft.Client/Common/Media/xuiscene_multi_create.xui
index 81e03066..e96753ab 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_create.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_create.xui
@@ -7,7 +7,7 @@
<Properties>
<Id>MultiGameCreate</Id>
<Width>810.000000</Width>
-<Height>498.000000</Height>
+<Height>532.000000</Height>
<Position>235.000092,110.000000,0.000000</Position>
<ClassOverride>CScene_MultiGameCreate</ClassOverride>
<Visual>XuiBlankScene</Visual>
@@ -17,8 +17,8 @@
<Properties>
<Id>TexturePackDetails</Id>
<Width>334.000000</Width>
-<Height>432.000000</Height>
-<Position>287.000000,48.000000,0.000000</Position>
+<Height>410.000000</Height>
+<Position>238.000046,64.000000,0.000000</Position>
<Visual>LeaderboardHeaderPanel</Visual>
</Properties>
<XuiLabel>
@@ -26,7 +26,7 @@
<Id>ComparisonPic</Id>
<Width>292.000000</Width>
<Height>160.000000</Height>
-<Position>26.000000,256.000000,0.000000</Position>
+<Position>26.000000,236.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JIcon</ClassOverride>
<Visual>XuiVisualImagePresenter</Visual>
</Properties>
@@ -50,28 +50,29 @@
<Visual>XuiLabelLight_FRONT_END_Shd_Wrp</Visual>
</Properties>
</XuiLabel>
-<XuiLabel>
+<XuiHtmlControl>
<Properties>
<Id>TexturePackDescription</Id>
<Width>292.000000</Width>
-<Height>160.000000</Height>
+<Height>126.000000</Height>
<Position>26.000000,86.000000,0.000000</Position>
-<Visual>XuiLabelDesc_LftWrp</Visual>
+<Visual>XuiHtmlControl</Visual>
</Properties>
-</XuiLabel>
+</XuiHtmlControl>
</XuiScene>
<XuiGroup>
<Properties>
<Id>MainScene</Id>
<Width>490.000000</Width>
-<Height>498.000000</Height>
-<Position>159.000000,0.000000,0.000000</Position>
+<Height>433.000000</Height>
+<Position>159.000000,49.000000,0.000000</Position>
</Properties>
<XuiControl>
<Properties>
<Id>Background</Id>
<Width>490.000000</Width>
-<Height>498.000000</Height>
+<Height>433.000000</Height>
+<Position>0.833344,0.000000,0.000000</Position>
<Anchor>15</Anchor>
<Visual>XuiScene</Visual>
</Properties>
@@ -81,7 +82,7 @@
<Id>XuiNewWorld</Id>
<Width>440.000000</Width>
<Height>40.000000</Height>
-<Position>25.000015,438.000000,0.000000</Position>
+<Position>25.000015,369.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L</Visual>
<NavUp>XuiMoreOptions</NavUp>
<PressKey>22528</PressKey>
@@ -92,24 +93,35 @@
<Id>XuiMoreOptions</Id>
<Width>440.000000</Width>
<Height>40.000000</Height>
-<Position>25.000015,388.000000,0.000000</Position>
+<Position>25.000015,319.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L</Visual>
-<NavUp>XuiSliderDifficulty\XuiSlider</NavUp>
+<NavUp>CheckboxOnline</NavUp>
<NavDown>XuiNewWorld</NavDown>
<PressKey>22528</PressKey>
</Properties>
</XuiButton>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxOnline</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>25.000015,285.000000,0.000000</Position>
+<Visual>XuiCheckbox</Visual>
+<NavUp>TexturePacksList</NavUp>
+<NavDown>XuiMoreOptions</NavDown>
+</Properties>
+</XuiCheckbox>
<XuiScene>
<Properties>
<Id>XuiSliderDifficulty</Id>
<Width>446.000000</Width>
<Height>38.000000</Height>
-<Position>22.000017,344.000000,0.000000</Position>
+<Position>22.000017,144.000000,0.000000</Position>
<Anchor>5</Anchor>
<ClassOverride>CXuiCtrlSliderWrapper</ClassOverride>
<Visual>XuiSliderWrapper</Visual>
-<NavUp>TexturePacksList</NavUp>
-<NavDown>XuiMoreOptions</NavDown>
+<NavUp>XuiGameModeToggle</NavUp>
+<NavDown>TexturePacksList</NavDown>
<DefaultFocus>FocusSink</DefaultFocus>
</Properties>
<XuiSlider>
@@ -134,11 +146,11 @@
<Id>TexturePacksList</Id>
<Width>428.000000</Width>
<Height>96.000000</Height>
-<Position>32.000000,244.000000,0.000000</Position>
+<Position>32.000000,189.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JList</ClassOverride>
<Visual>XuiListTexturePack</Visual>
-<NavUp>XuiGameModeToggle</NavUp>
-<NavDown>XuiSliderDifficulty\XuiSlider</NavDown>
+<NavUp>XuiSliderDifficulty\XuiSlider</NavUp>
+<NavDown>CheckboxOnline</NavDown>
<Wrap>true</Wrap>
</Properties>
<XuiListItem>
@@ -306,40 +318,52 @@
<Layout>1</Layout>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Height>60.000000</Height>
+<Position>34.000000,30.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButton</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Height>60.000000</Height>
+<Position>34.000000,30.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButton</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Height>60.000000</Height>
+<Position>34.000000,30.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButton</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
<XuiButton>
<Properties>
<Id>XuiGameModeToggle</Id>
<Width>440.000000</Width>
<Height>40.000000</Height>
-<Position>25.000015,194.000000,0.000000</Position>
+<Position>25.000015,96.999992,0.000000</Position>
<Visual>XuiMainMenuButton_L</Visual>
-<NavUp>XuiEditSeed</NavUp>
-<NavDown>TexturePacksList</NavDown>
+<NavUp>XuiEditWorldName</NavUp>
+<NavDown>XuiSliderDifficulty\XuiSlider</NavDown>
<PressKey>22528</PressKey>
</Properties>
</XuiButton>
-<XuiLabel>
-<Properties>
-<Id>XuiLabelRandomSeed</Id>
-<Width>439.000000</Width>
-<Height>31.000000</Height>
-<Position>25.000000,162.000000,0.000000</Position>
-<Visual>XuiLabelDarkLeftWrap</Visual>
-</Properties>
-</XuiLabel>
-<XuiEdit>
-<Properties>
-<Id>XuiEditSeed</Id>
-<Width>434.000000</Width>
-<Height>32.000000</Height>
-<Position>28.000000,124.000000,0.000000</Position>
-<ClassOverride>CXuiCtrl4JEdit</ClassOverride>
-<Visual>XuiEdit</Visual>
-<NavUp>XuiEditWorldName</NavUp>
-<NavDown>XuiGameModeToggle</NavDown>
-</Properties>
-</XuiEdit>
<XuiEdit>
<Properties>
<Id>XuiEditWorldName</Id>
@@ -348,8 +372,7 @@
<Position>28.000000,52.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JEdit</ClassOverride>
<Visual>XuiEdit</Visual>
-<NavUp>CheckboxAllowFoF</NavUp>
-<NavDown>XuiEditSeed</NavDown>
+<NavDown>XuiGameModeToggle</NavDown>
</Properties>
</XuiEdit>
<XuiLabel>
@@ -361,15 +384,6 @@
<Visual>XuiLabelDark</Visual>
</Properties>
</XuiLabel>
-<XuiLabel>
-<Properties>
-<Id>XuiLabelSeed</Id>
-<Width>440.000000</Width>
-<Height>26.172791</Height>
-<Position>25.000000,96.000000,0.000000</Position>
-<Visual>XuiLabelDark</Visual>
-</Properties>
-</XuiLabel>
</XuiGroup>
<Timelines>
<NamedFrames>
@@ -403,27 +417,27 @@
<KeyFrame>
<Time>0</Time>
<Interpolation>0</Interpolation>
-<Prop>159.000000,0.000000,0.000000</Prop>
+<Prop>159.000000,49.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>1</Time>
<Interpolation>0</Interpolation>
-<Prop>159.000000,0.000000,0.000000</Prop>
+<Prop>159.000000,49.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>30</Time>
<Interpolation>0</Interpolation>
-<Prop>0.000000,0.000000,0.000000</Prop>
+<Prop>0.000000,49.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>31</Time>
<Interpolation>0</Interpolation>
-<Prop>0.000000,0.000000,0.000000</Prop>
+<Prop>0.000000,49.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>60</Time>
<Interpolation>0</Interpolation>
-<Prop>159.000000,0.000000,0.000000</Prop>
+<Prop>159.000000,49.000000,0.000000</Prop>
</KeyFrame>
</Timeline>
<Timeline>
@@ -432,27 +446,27 @@
<KeyFrame>
<Time>0</Time>
<Interpolation>0</Interpolation>
-<Prop>287.000000,48.000000,0.000000</Prop>
+<Prop>238.000046,64.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>1</Time>
<Interpolation>0</Interpolation>
-<Prop>287.000000,48.000000,0.000000</Prop>
+<Prop>287.000000,65.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>30</Time>
<Interpolation>0</Interpolation>
-<Prop>477.000000,48.000000,0.000000</Prop>
+<Prop>477.000000,65.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>31</Time>
<Interpolation>0</Interpolation>
-<Prop>477.000000,48.000000,0.000000</Prop>
+<Prop>477.000000,65.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>60</Time>
<Interpolation>0</Interpolation>
-<Prop>287.000000,48.000000,0.000000</Prop>
+<Prop>287.000000,65.000000,0.000000</Prop>
</KeyFrame>
</Timeline>
</Timelines>
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_create_480.h b/Minecraft.Client/Common/Media/xuiscene_multi_create_480.h
index 41ef7a17..760e559e 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_create_480.h
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_create_480.h
@@ -6,6 +6,7 @@
#define IDC_Background L"Background"
#define IDC_XuiNewWorld L"XuiNewWorld"
#define IDC_XuiMoreOptions L"XuiMoreOptions"
+#define IDC_CheckboxOnline L"CheckboxOnline"
#define IDC_XuiSlider L"XuiSlider"
#define IDC_FocusSink L"FocusSink"
#define IDC_XuiSliderDifficulty L"XuiSliderDifficulty"
@@ -27,11 +28,11 @@
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
#define IDC_TexturePacksList L"TexturePacksList"
#define IDC_XuiGameModeToggle L"XuiGameModeToggle"
-#define IDC_XuiLabelRandomSeed L"XuiLabelRandomSeed"
-#define IDC_XuiEditSeed L"XuiEditSeed"
-#define IDC_XuiLabelSeed L"XuiLabelSeed"
#define IDC_XuiEditWorldName L"XuiEditWorldName"
#define IDC_XuiLabelWorldName L"XuiLabelWorldName"
#define IDC_MainScene L"MainScene"
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_create_480.xui b/Minecraft.Client/Common/Media/xuiscene_multi_create_480.xui
index 12efc6e6..ccf74533 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_create_480.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_create_480.xui
@@ -17,8 +17,8 @@
<Properties>
<Id>TexturePackDetails</Id>
<Width>230.000000</Width>
-<Height>382.000000</Height>
-<Position>163.500046,7.999999,0.000000</Position>
+<Height>334.000000</Height>
+<Position>163.500046,40.000000,0.000000</Position>
<Visual>LeaderboardHeaderPanel</Visual>
</Properties>
<XuiLabel>
@@ -26,26 +26,26 @@
<Id>ComparisonPic</Id>
<Width>196.000000</Width>
<Height>112.000000</Height>
-<Position>20.000000,258.000000,0.000000</Position>
+<Position>20.000000,212.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JIcon</ClassOverride>
<Visual>XuiVisualImagePresenter</Visual>
</Properties>
</XuiLabel>
-<XuiLabel>
+<XuiHtmlControl>
<Properties>
<Id>TexturePackDescription</Id>
<Width>196.000000</Width>
-<Height>122.000000</Height>
-<Position>20.000010,130.000000,0.000000</Position>
-<Visual>XuiLabelDesc_LftWrp_Small</Visual>
+<Height>80.000000</Height>
+<Position>20.000000,122.000000,0.000000</Position>
+<Visual>XuiHtmlControl</Visual>
</Properties>
-</XuiLabel>
+</XuiHtmlControl>
<XuiLabel>
<Properties>
<Id>TexturePackName</Id>
<Width>196.000000</Width>
<Height>43.000000</Height>
-<Position>20.000000,80.000008,0.000000</Position>
+<Position>20.000000,74.000008,0.000000</Position>
<Visual>XuiLabelLight_FRONT_END_Shd_Wrp_Small</Visual>
</Properties>
</XuiLabel>
@@ -54,7 +54,7 @@
<Id>Icon</Id>
<Width>64.000000</Width>
<Height>64.000000</Height>
-<Position>88.000000,10.000000,0.000000</Position>
+<Position>88.000000,6.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JIcon</ClassOverride>
<Visual>XuiVisualImagePresenter</Visual>
</Properties>
@@ -64,14 +64,14 @@
<Properties>
<Id>MainScene</Id>
<Width>340.000000</Width>
-<Height>400.000000</Height>
-<Position>108.500015,0.000000,0.000000</Position>
+<Height>355.000000</Height>
+<Position>108.500015,27.500019,0.000000</Position>
</Properties>
<XuiControl>
<Properties>
<Id>Background</Id>
<Width>340.000000</Width>
-<Height>398.000000</Height>
+<Height>353.000000</Height>
<Anchor>15</Anchor>
<Visual>XuiScene</Visual>
</Properties>
@@ -81,7 +81,7 @@
<Id>XuiNewWorld</Id>
<Width>304.000000</Width>
<Height>36.000000</Height>
-<Position>18.000000,344.000000,0.000000</Position>
+<Position>18.000000,292.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
<NavUp>XuiMoreOptions</NavUp>
<PressKey>22528</PressKey>
@@ -92,24 +92,35 @@
<Id>XuiMoreOptions</Id>
<Width>304.000000</Width>
<Height>36.000000</Height>
-<Position>18.000000,302.000000,0.000000</Position>
+<Position>18.000000,250.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
-<NavUp>XuiSliderDifficulty\XuiSlider</NavUp>
+<NavUp>CheckboxOnline</NavUp>
<NavDown>XuiNewWorld</NavDown>
<PressKey>22528</PressKey>
</Properties>
</XuiButton>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxOnline</Id>
+<Width>304.000000</Width>
+<Height>26.000000</Height>
+<Position>18.000000,228.000000,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>TexturePacksList</NavUp>
+<NavDown>XuiMoreOptions</NavDown>
+</Properties>
+</XuiCheckbox>
<XuiScene>
<Properties>
<Id>XuiSliderDifficulty</Id>
<Width>310.000000</Width>
<Height>38.000000</Height>
-<Position>15.000000,260.000000,0.000000</Position>
+<Position>15.000000,112.000000,0.000000</Position>
<Anchor>5</Anchor>
<ClassOverride>CXuiCtrlSliderWrapper</ClassOverride>
<Visual>XuiSliderWrapper</Visual>
-<NavUp>TexturePacksList</NavUp>
-<NavDown>XuiMoreOptions</NavDown>
+<NavUp>XuiGameModeToggle</NavUp>
+<NavDown>TexturePacksList</NavDown>
<DefaultFocus>FocusSink</DefaultFocus>
</Properties>
<XuiSlider>
@@ -134,11 +145,11 @@
<Id>TexturePacksList</Id>
<Width>304.000000</Width>
<Height>74.000000</Height>
-<Position>18.000000,186.000000,0.000000</Position>
+<Position>18.000000,150.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JList</ClassOverride>
<Visual>XuiListTexturePackSmall</Visual>
-<NavUp>XuiGameModeToggle</NavUp>
-<NavDown>XuiSliderDifficulty\XuiSlider</NavDown>
+<NavUp>XuiSliderDifficulty\XuiSlider</NavUp>
+<NavDown>CheckboxOnline</NavDown>
<Wrap>true</Wrap>
</Properties>
<XuiListItem>
@@ -345,48 +356,55 @@
<Layout>1</Layout>
</Properties>
</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>35.000000,24.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButtonSmall</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>35.000000,24.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButtonSmall</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
+<XuiListItem>
+<Properties>
+<Id>control_ListItem</Id>
+<Width>40.000000</Width>
+<Height>40.000000</Height>
+<Position>35.000000,24.000000,0.000000</Position>
+<Anchor>37</Anchor>
+<Show>false</Show>
+<Visual>XuiListTexturePackButtonSmall</Visual>
+<Layout>1</Layout>
+</Properties>
+</XuiListItem>
</XuiList>
<XuiButton>
<Properties>
<Id>XuiGameModeToggle</Id>
<Width>304.000000</Width>
<Height>36.000000</Height>
-<Position>18.000000,144.000000,0.000000</Position>
+<Position>18.000000,70.000000,0.000000</Position>
<Visual>XuiMainMenuButton_L_Thin</Visual>
-<NavUp>XuiEditSeed</NavUp>
-<NavDown>TexturePacksList</NavDown>
+<NavUp>XuiEditWorldName</NavUp>
+<NavDown>XuiSliderDifficulty\XuiSlider</NavDown>
<PressKey>22528</PressKey>
</Properties>
</XuiButton>
-<XuiLabel>
-<Properties>
-<Id>XuiLabelRandomSeed</Id>
-<Width>304.000000</Width>
-<Height>21.924896</Height>
-<Position>18.000000,122.000000,0.000000</Position>
-<Visual>XuiLabelDarkLeftWrapSmall8</Visual>
-</Properties>
-</XuiLabel>
-<XuiEdit>
-<Properties>
-<Id>XuiEditSeed</Id>
-<Width>298.000000</Width>
-<Position>21.000000,88.000000,0.000000</Position>
-<ClassOverride>CXuiCtrl4JEdit</ClassOverride>
-<Visual>XuiEdit</Visual>
-<NavUp>XuiEditWorldName</NavUp>
-<NavDown>XuiGameModeToggle</NavDown>
-</Properties>
-</XuiEdit>
-<XuiLabel>
-<Properties>
-<Id>XuiLabelSeed</Id>
-<Width>303.444427</Width>
-<Height>28.000000</Height>
-<Position>18.000000,70.000000,0.000000</Position>
-<Visual>XuiLabelDarkLeftWrapSmall10</Visual>
-</Properties>
-</XuiLabel>
<XuiEdit>
<Properties>
<Id>XuiEditWorldName</Id>
@@ -394,8 +412,7 @@
<Position>21.000000,32.000000,0.000000</Position>
<ClassOverride>CXuiCtrl4JEdit</ClassOverride>
<Visual>XuiEdit</Visual>
-<NavUp>CheckboxAllowFoF</NavUp>
-<NavDown>XuiEditSeed</NavDown>
+<NavDown>XuiGameModeToggle</NavDown>
</Properties>
</XuiEdit>
<XuiLabel>
@@ -440,27 +457,27 @@
<KeyFrame>
<Time>0</Time>
<Interpolation>0</Interpolation>
-<Prop>108.500015,0.000000,0.000000</Prop>
+<Prop>108.500015,27.500019,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>1</Time>
<Interpolation>0</Interpolation>
-<Prop>108.500015,0.000000,0.000000</Prop>
+<Prop>108.500015,27.500019,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>30</Time>
<Interpolation>0</Interpolation>
-<Prop>0.000000,0.000000,0.000000</Prop>
+<Prop>0.000000,27.500019,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>31</Time>
<Interpolation>0</Interpolation>
-<Prop>0.000000,0.000000,0.000000</Prop>
+<Prop>0.000000,27.500019,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>60</Time>
<Interpolation>0</Interpolation>
-<Prop>108.500015,0.000000,0.000000</Prop>
+<Prop>108.500015,27.500019,0.000000</Prop>
</KeyFrame>
</Timeline>
<Timeline>
@@ -469,27 +486,27 @@
<KeyFrame>
<Time>0</Time>
<Interpolation>0</Interpolation>
-<Prop>163.500046,7.999999,0.000000</Prop>
+<Prop>163.500046,40.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>1</Time>
<Interpolation>0</Interpolation>
-<Prop>163.500046,8.000000,0.000000</Prop>
+<Prop>163.500046,40.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>30</Time>
<Interpolation>0</Interpolation>
-<Prop>327.000000,8.000000,0.000000</Prop>
+<Prop>327.000000,40.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>31</Time>
<Interpolation>0</Interpolation>
-<Prop>327.000000,8.000000,0.000000</Prop>
+<Prop>327.000000,40.000000,0.000000</Prop>
</KeyFrame>
<KeyFrame>
<Time>60</Time>
<Interpolation>0</Interpolation>
-<Prop>163.500046,8.000000,0.000000</Prop>
+<Prop>163.500046,40.000000,0.000000</Prop>
</KeyFrame>
</Timeline>
</Timelines>
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.h b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.h
index ac9daa38..9a34c335 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.h
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.h
@@ -1,18 +1,34 @@
-#define IDC_CheckboxResetNether L"CheckboxResetNether"
+#define IDC_OptionsTab_off L"OptionsTab_off"
+#define IDC_GameOptionsDescription L"GameOptionsDescription"
+#define IDC_CheckboxNaturalRegeneration L"CheckboxNaturalRegeneration"
+#define IDC_CheckboxTileDrops L"CheckboxTileDrops"
+#define IDC_CheckboxMobLoot L"CheckboxMobLoot"
+#define IDC_CheckboxMobGriefing L"CheckboxMobGriefing"
+#define IDC_CheckboxMobSpawning L"CheckboxMobSpawning"
+#define IDC_CheckboxKeepInventory L"CheckboxKeepInventory"
+#define IDC_CheckboxDayLightCycle L"CheckboxDayLightCycle"
#define IDC_CheckboxHostPrivileges L"CheckboxHostPrivileges"
-#define IDC_CheckboxTNT L"CheckboxTNT"
-#define IDC_CheckboxFireSpreads L"CheckboxFireSpreads"
-#define IDC_CheckboxTrustSystem L"CheckboxTrustSystem"
#define IDC_CheckboxPVP L"CheckboxPVP"
#define IDC_CheckboxAllowFoF L"CheckboxAllowFoF"
#define IDC_CheckboxInviteOnly L"CheckboxInviteOnly"
#define IDC_CheckboxOnline L"CheckboxOnline"
-#define IDC_HostOptions L"HostOptions"
+#define IDC_GameOptions L"GameOptions"
+#define IDC_GameOptionsGroup L"GameOptionsGroup"
+#define IDC_WorldOptionsDescription L"WorldOptionsDescription"
+#define IDC_CheckboxFireSpreads L"CheckboxFireSpreads"
+#define IDC_CheckboxTNT L"CheckboxTNT"
+#define IDC_CheckboxTrustSystem L"CheckboxTrustSystem"
+#define IDC_CheckboxResetNether L"CheckboxResetNether"
#define IDC_CheckboxBonusChest L"CheckboxBonusChest"
#define IDC_CheckboxFlatWorld L"CheckboxFlatWorld"
#define IDC_CheckboxStructures L"CheckboxStructures"
+#define IDC_XuiLabelRandomSeed L"XuiLabelRandomSeed"
+#define IDC_XuiEditSeed L"XuiEditSeed"
+#define IDC_XuiLabelSeed L"XuiLabelSeed"
#define IDC_WorldOptions L"WorldOptions"
-#define IDC_WO_Box L"WO_Box"
-#define IDC_GenerationOptions L"GenerationOptions"
-#define IDC_Description L"Description"
+#define IDC_WorldOptionsGroup L"WorldOptionsGroup"
+#define IDC_WorldOptionsTab L"WorldOptionsTab"
+#define IDC_GameOptionsTab L"GameOptionsTab"
+#define IDC_LabelGameOptions L"LabelGameOptions"
+#define IDC_LabelWorldOptions L"LabelWorldOptions"
#define IDC_MultiGameLaunchMoreOptions L"MultiGameLaunchMoreOptions"
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.xui b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.xui
index 339ae0a4..25ee4a1d 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options.xui
@@ -6,80 +6,144 @@
<XuiScene>
<Properties>
<Id>MultiGameLaunchMoreOptions</Id>
-<Width>450.000000</Width>
-<Height>486.000000</Height>
-<Position>415.000031,55.000000,0.000000</Position>
+<Width>1280.000000</Width>
+<Height>720.000000</Height>
<ClassOverride>CScene_MultiGameLaunchMoreOptions</ClassOverride>
-<Visual>XuiScene</Visual>
-<DefaultFocus>HostOptions\CheckboxOnline</DefaultFocus>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>WorldOptionsGroup\WorldOptions\XuiEditSeed</DefaultFocus>
+</Properties>
+<XuiImage>
+<Properties>
+<Id>OptionsTab_off</Id>
+<Width>244.000000</Width>
+<Height>58.000000</Height>
+<Position>534.000000,108.000008,0.000000</Position>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\PanelsAndTabs\MoreOptionsTabOff.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiGroup>
+<Properties>
+<Id>GameOptionsGroup</Id>
+<Width>700.000000</Width>
+<Height>430.000000</Height>
+<Position>290.000061,146.000015,0.000000</Position>
+<Show>false</Show>
+<DisableTimelineRecursion>true</DisableTimelineRecursion>
</Properties>
+<XuiLabel>
+<Properties>
+<Id>GameOptionsDescription</Id>
+<Width>260.000000</Width>
+<Height>418.000000</Height>
+<Position>486.000000,14.000000,0.000000</Position>
+<Anchor>10</Anchor>
+<Visual>TipPanel</Visual>
+</Properties>
+</XuiLabel>
<XuiScene>
<Properties>
-<Id>HostOptions</Id>
-<Width>450.000000</Width>
-<Height>306.000000</Height>
-<Position>0.000000,10.000000,0.000000</Position>
+<Id>GameOptions</Id>
+<Width>488.000000</Width>
+<Height>440.000000</Height>
+<Position>0.000013,0.000000,0.000000</Position>
+<Anchor>10</Anchor>
+<Visual>XuiScene</Visual>
+</Properties>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxNaturalRegeneration</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>24.000015,393.000000,0.000000</Position>
<Anchor>2</Anchor>
-<Visual>XuiBlankScene</Visual>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxTileDrops</NavUp>
</Properties>
+</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxResetNether</Id>
+<Id>CheckboxTileDrops</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,272.000000,0.000000</Position>
+<Position>24.000015,359.000000,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
-<NavUp>CheckboxHostPrivileges</NavUp>
-<NavDown>..\GenerationOptions\CheckboxStructures</NavDown>
+<NavUp>CheckboxMobLoot</NavUp>
+<NavDown>CheckboxNaturalRegeneration</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxHostPrivileges</Id>
+<Id>CheckboxMobLoot</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,238.000000,0.000000</Position>
+<Position>24.000015,325.000000,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
-<NavUp>CheckboxTNT</NavUp>
-<NavDown>CheckboxResetNether</NavDown>
+<NavUp>CheckboxMobGriefing</NavUp>
+<NavDown>CheckboxTileDrops</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxTNT</Id>
+<Id>CheckboxMobGriefing</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,204.000000,0.000000</Position>
+<Position>24.000015,291.000000,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
-<NavUp>CheckboxFireSpreads</NavUp>
-<NavDown>CheckboxHostPrivileges</NavDown>
+<NavUp>CheckboxMobSpawning</NavUp>
+<NavDown>CheckboxMobLoot</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxFireSpreads</Id>
+<Id>CheckboxMobSpawning</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,170.000000,0.000000</Position>
+<Position>24.000015,257.000000,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
-<NavUp>CheckboxTrustSystem</NavUp>
-<NavDown>CheckboxTNT</NavDown>
+<NavUp>CheckboxKeepInventory</NavUp>
+<NavDown>CheckboxMobGriefing</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxTrustSystem</Id>
+<Id>CheckboxKeepInventory</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,136.000000,0.000000</Position>
+<Position>24.000015,223.000015,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxDayLightCycle</NavUp>
+<NavDown>CheckboxMobSpawning</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxDayLightCycle</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>24.000015,189.000015,0.000000</Position>
+<Anchor>2</Anchor>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxHostPrivileges</NavUp>
+<NavDown>CheckboxKeepInventory</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxHostPrivileges</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>24.000015,154.166672,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
<NavUp>CheckboxPVP</NavUp>
-<NavDown>CheckboxFireSpreads</NavDown>
+<NavDown>CheckboxDayLightCycle</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
@@ -87,11 +151,11 @@
<Id>CheckboxPVP</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,101.999992,0.000000</Position>
+<Position>24.000015,121.000008,0.000000</Position>
<Anchor>2</Anchor>
<Visual>XuiCheckbox</Visual>
<NavUp>CheckboxAllowFoF</NavUp>
-<NavDown>CheckboxTrustSystem</NavDown>
+<NavDown>CheckboxHostPrivileges</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
@@ -99,7 +163,7 @@
<Id>CheckboxAllowFoF</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,68.000000,0.000000</Position>
+<Position>24.000015,87.000015,0.000000</Position>
<Visual>XuiCheckbox</Visual>
<NavUp>CheckboxInviteOnly</NavUp>
<NavDown>CheckboxPVP</NavDown>
@@ -110,7 +174,7 @@
<Id>CheckboxInviteOnly</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,34.000000,0.000000</Position>
+<Position>24.000015,53.000015,0.000000</Position>
<Visual>XuiCheckbox</Visual>
<NavUp>CheckboxOnline</NavUp>
<NavDown>CheckboxAllowFoF</NavDown>
@@ -121,29 +185,92 @@
<Id>CheckboxOnline</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>23.000000,0.000000,0.000000</Position>
+<Position>24.000015,19.000015,0.000000</Position>
<Visual>XuiCheckbox</Visual>
<NavDown>CheckboxInviteOnly</NavDown>
</Properties>
</XuiCheckbox>
</XuiScene>
+</XuiGroup>
+<XuiGroup>
+<Properties>
+<Id>WorldOptionsGroup</Id>
+<Width>700.000000</Width>
+<Height>369.000000</Height>
+<Position>290.000031,146.000000,0.000000</Position>
+<DisableTimelineRecursion>true</DisableTimelineRecursion>
+</Properties>
+<XuiLabel>
+<Properties>
+<Id>WorldOptionsDescription</Id>
+<Width>260.000000</Width>
+<Height>352.000000</Height>
+<Position>486.000031,14.000000,0.000000</Position>
+<Anchor>10</Anchor>
+<Visual>TipPanel</Visual>
+</Properties>
+</XuiLabel>
<XuiScene>
<Properties>
-<Id>GenerationOptions</Id>
-<Width>450.000000</Width>
-<Height>138.000000</Height>
-<Position>0.000000,334.000000,0.000000</Position>
-<Visual>XuiBlankScene</Visual>
+<Id>WorldOptions</Id>
+<Width>488.000000</Width>
+<Height>370.000000</Height>
+<Position>0.000029,0.000008,0.000000</Position>
+<Anchor>10</Anchor>
+<Visual>XuiScene</Visual>
+</Properties>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxFireSpreads</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>24.000015,318.000000,0.000000</Position>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxTNT</NavUp>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxTNT</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>24.000015,284.000000,0.000000</Position>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxTrustSystem</NavUp>
+<NavDown>CheckboxFireSpreads</NavDown>
</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxTrustSystem</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>24.000015,250.000000,0.000000</Position>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxResetNether</NavUp>
+<NavDown>CheckboxTNT</NavDown>
+</Properties>
+</XuiCheckbox>
+<XuiCheckbox>
+<Properties>
+<Id>CheckboxResetNether</Id>
+<Width>402.000000</Width>
+<Height>34.000000</Height>
+<Position>24.000015,216.000000,0.000000</Position>
+<Visual>XuiCheckbox</Visual>
+<NavUp>CheckboxBonusChest</NavUp>
+<NavDown>CheckboxTrustSystem</NavDown>
+</Properties>
+</XuiCheckbox>
<XuiCheckbox>
<Properties>
<Id>CheckboxBonusChest</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>33.000000,98.000000,0.000000</Position>
+<Position>24.000015,182.000000,0.000000</Position>
<Visual>XuiCheckbox</Visual>
-<Enabled>false</Enabled>
<NavUp>CheckboxFlatWorld</NavUp>
+<NavDown>CheckboxResetNether</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
@@ -151,9 +278,8 @@
<Id>CheckboxFlatWorld</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>33.000000,63.999992,0.000000</Position>
+<Position>24.000015,148.000000,0.000000</Position>
<Visual>XuiCheckbox</Visual>
-<Enabled>false</Enabled>
<NavUp>CheckboxStructures</NavUp>
<NavDown>CheckboxBonusChest</NavDown>
</Properties>
@@ -163,120 +289,198 @@
<Id>CheckboxStructures</Id>
<Width>402.000000</Width>
<Height>34.000000</Height>
-<Position>33.000000,29.999992,0.000000</Position>
+<Position>24.000015,114.000000,0.000000</Position>
<Visual>XuiCheckbox</Visual>
-<Enabled>false</Enabled>
-<NavUp>..\HostOptions\CheckboxResetNether</NavUp>
+<NavUp>XuiEditSeed</NavUp>
<NavDown>CheckboxFlatWorld</NavDown>
</Properties>
</XuiCheckbox>
<XuiLabel>
<Properties>
-<Id>WorldOptions</Id>
+<Id>XuiLabelRandomSeed</Id>
<Width>402.000000</Width>
-<Height>26.000000</Height>
-<Position>23.000000,0.000000,0.000000</Position>
-<Visual>XuiLabelDark</Visual>
+<Height>31.000000</Height>
+<Position>24.000000,82.000000,0.000000</Position>
+<Visual>XuiLabelDarkLeftWrap</Visual>
</Properties>
</XuiLabel>
-<XuiGroup>
+<XuiEdit>
<Properties>
-<Id>WO_Box</Id>
-<Width>405.000000</Width>
-<Height>112.000000</Height>
-<Position>22.999971,23.999985,0.000000</Position>
-</Properties>
-<XuiFigure>
-<Properties>
-<Width>2.000000</Width>
-<Height>112.000000</Height>
-<Position>401.000031,0.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
-</Properties>
-</Stroke>
-<Fill>
-<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
-</Properties>
-</XuiFigure>
-<XuiFigure>
-<Properties>
-<Width>2.000000</Width>
-<Height>112.000000</Height>
-<Position>0.000029,0.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
-</Properties>
-</Stroke>
-<Fill>
-<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
+<Id>XuiEditSeed</Id>
+<Width>402.000000</Width>
+<Height>32.000000</Height>
+<Position>24.000000,44.000000,0.000000</Position>
+<ClassOverride>CXuiCtrl4JEdit</ClassOverride>
+<Visual>XuiEdit</Visual>
+<NavDown>CheckboxStructures</NavDown>
</Properties>
-</XuiFigure>
-<XuiFigure>
+</XuiEdit>
+<XuiLabel>
<Properties>
+<Id>XuiLabelSeed</Id>
<Width>402.000000</Width>
-<Height>2.000000</Height>
-<Position>0.000029,0.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
+<Height>26.000000</Height>
+<Position>24.000000,16.000000,0.000000</Position>
+<Visual>XuiLabelDark</Visual>
</Properties>
-</Stroke>
-<Fill>
+</XuiLabel>
+</XuiScene>
+</XuiGroup>
+<XuiImage>
<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
+<Id>WorldOptionsTab</Id>
+<Width>244.000000</Width>
+<Height>58.000000</Height>
+<Position>290.000000,103.000008,0.000000</Position>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\PanelsAndTabs\WorldOptionsTabOn.png</ImagePath>
+<BrushFlags>48</BrushFlags>
</Properties>
-</XuiFigure>
-<XuiFigure>
+</XuiImage>
+<XuiImage>
<Properties>
-<Width>402.000000</Width>
-<Height>2.000000</Height>
-<Position>0.000029,110.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
+<Id>GameOptionsTab</Id>
+<Width>244.000000</Width>
+<Height>58.000000</Height>
+<Position>534.000000,103.000008,0.000000</Position>
+<Show>false</Show>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\PanelsAndTabs\GameOptionsTabOn.png</ImagePath>
+<BrushFlags>48</BrushFlags>
</Properties>
-</Stroke>
-<Fill>
+</XuiImage>
+<XuiLabel>
<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
+<Id>LabelGameOptions</Id>
+<Width>224.000000</Width>
+<Height>24.000000</Height>
+<Position>544.000000,122.000000,0.000000</Position>
+<Visual>XuiLabelDarkCentred</Visual>
+<Text>Game Options</Text>
</Properties>
-</XuiFigure>
-</XuiGroup>
-</XuiScene>
+</XuiLabel>
<XuiLabel>
<Properties>
-<Id>Description</Id>
-<Width>450.000000</Width>
-<Height>140.000000</Height>
-<Position>0.000015,496.000000,0.000000</Position>
-<Anchor>8</Anchor>
-<Visual>TipPanel</Visual>
+<Id>LabelWorldOptions</Id>
+<Width>224.000000</Width>
+<Height>24.000000</Height>
+<Position>300.000000,116.000000,0.000000</Position>
+<Visual>XuiLabelDarkCentred</Visual>
+<Text>World Options
+</Text>
</Properties>
</XuiLabel>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>WorldOptions</Name>
+<Time>0</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>GameOptions</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>GameOptionsGroup</Id>
+<TimelineProp>Show</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>WorldOptionsGroup</Id>
+<TimelineProp>Show</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>OptionsTab_off</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>534.000000,108.000008,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>290.000000,108.000008,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>WorldOptionsTab</Id>
+<TimelineProp>Show</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>GameOptionsTab</Id>
+<TimelineProp>Show</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>LabelGameOptions</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>544.000000,122.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>544.000000,116.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>LabelWorldOptions</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>300.000000,116.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>300.000000,122.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
</XuiScene>
</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.h b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.h
index b2de27dd..9a34c335 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.h
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.h
@@ -1,18 +1,34 @@
-#define IDC_CheckboxBonusChest L"CheckboxBonusChest"
-#define IDC_CheckboxFlatWorld L"CheckboxFlatWorld"
-#define IDC_CheckboxStructures L"CheckboxStructures"
-#define IDC_WorldOptions L"WorldOptions"
-#define IDC_WO_Box L"WO_Box"
-#define IDC_GenerationOptions L"GenerationOptions"
-#define IDC_CheckboxResetNether L"CheckboxResetNether"
+#define IDC_OptionsTab_off L"OptionsTab_off"
+#define IDC_GameOptionsDescription L"GameOptionsDescription"
+#define IDC_CheckboxNaturalRegeneration L"CheckboxNaturalRegeneration"
+#define IDC_CheckboxTileDrops L"CheckboxTileDrops"
+#define IDC_CheckboxMobLoot L"CheckboxMobLoot"
+#define IDC_CheckboxMobGriefing L"CheckboxMobGriefing"
+#define IDC_CheckboxMobSpawning L"CheckboxMobSpawning"
+#define IDC_CheckboxKeepInventory L"CheckboxKeepInventory"
+#define IDC_CheckboxDayLightCycle L"CheckboxDayLightCycle"
#define IDC_CheckboxHostPrivileges L"CheckboxHostPrivileges"
-#define IDC_CheckboxTNT L"CheckboxTNT"
-#define IDC_CheckboxFireSpreads L"CheckboxFireSpreads"
-#define IDC_CheckboxTrustSystem L"CheckboxTrustSystem"
#define IDC_CheckboxPVP L"CheckboxPVP"
#define IDC_CheckboxAllowFoF L"CheckboxAllowFoF"
#define IDC_CheckboxInviteOnly L"CheckboxInviteOnly"
#define IDC_CheckboxOnline L"CheckboxOnline"
-#define IDC_HostOptions L"HostOptions"
-#define IDC_Description L"Description"
+#define IDC_GameOptions L"GameOptions"
+#define IDC_GameOptionsGroup L"GameOptionsGroup"
+#define IDC_WorldOptionsDescription L"WorldOptionsDescription"
+#define IDC_CheckboxFireSpreads L"CheckboxFireSpreads"
+#define IDC_CheckboxTNT L"CheckboxTNT"
+#define IDC_CheckboxTrustSystem L"CheckboxTrustSystem"
+#define IDC_CheckboxResetNether L"CheckboxResetNether"
+#define IDC_CheckboxBonusChest L"CheckboxBonusChest"
+#define IDC_CheckboxFlatWorld L"CheckboxFlatWorld"
+#define IDC_CheckboxStructures L"CheckboxStructures"
+#define IDC_XuiLabelRandomSeed L"XuiLabelRandomSeed"
+#define IDC_XuiEditSeed L"XuiEditSeed"
+#define IDC_XuiLabelSeed L"XuiLabelSeed"
+#define IDC_WorldOptions L"WorldOptions"
+#define IDC_WorldOptionsGroup L"WorldOptionsGroup"
+#define IDC_WorldOptionsTab L"WorldOptionsTab"
+#define IDC_GameOptionsTab L"GameOptionsTab"
+#define IDC_LabelGameOptions L"LabelGameOptions"
+#define IDC_LabelWorldOptions L"LabelWorldOptions"
#define IDC_MultiGameLaunchMoreOptions L"MultiGameLaunchMoreOptions"
diff --git a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.xui b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.xui
index 976f9260..20fec429 100644
--- a/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.xui
+++ b/Minecraft.Client/Common/Media/xuiscene_multi_launch_more_options_480.xui
@@ -6,204 +6,228 @@
<XuiScene>
<Properties>
<Id>MultiGameLaunchMoreOptions</Id>
-<Width>340.000000</Width>
-<Height>356.000000</Height>
-<Position>150.000031,8.500015,0.000000</Position>
+<Width>640.000000</Width>
+<Height>480.000000</Height>
<ClassOverride>CScene_MultiGameLaunchMoreOptions</ClassOverride>
-<Visual>XuiScene</Visual>
-<DefaultFocus>HostOptions\CheckboxOnline</DefaultFocus>
+<Visual>XuiBlankScene</Visual>
+<DefaultFocus>WorldOptionsGroup\WorldOptions\XuiEditSeed</DefaultFocus>
</Properties>
+<XuiImage>
+<Properties>
+<Id>OptionsTab_off</Id>
+<Width>175.000000</Width>
+<Height>40.000000</Height>
+<Position>235.000000,44.000000,0.000000</Position>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\PanelsAndTabs\MoreOptionsTabOff_Small.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiGroup>
+<Properties>
+<Id>GameOptionsGroup</Id>
+<Width>510.000000</Width>
+<Height>328.000000</Height>
+<Position>60.000000,76.000015,0.000000</Position>
+<Show>false</Show>
+<DisableTimelineRecursion>true</DisableTimelineRecursion>
+</Properties>
+<XuiLabel>
+<Properties>
+<Id>GameOptionsDescription</Id>
+<Width>182.000000</Width>
+<Height>312.000000</Height>
+<Position>347.000000,10.000000,0.000000</Position>
+<Anchor>10</Anchor>
+<Visual>TipPanel</Visual>
+</Properties>
+</XuiLabel>
<XuiScene>
<Properties>
-<Id>GenerationOptions</Id>
-<Width>340.000000</Width>
-<Height>104.000000</Height>
-<Position>0.000000,244.000000,0.000000</Position>
-<Visual>XuiBlankScene</Visual>
+<Id>GameOptions</Id>
+<Width>350.000000</Width>
+<Height>328.000000</Height>
+<Position>0.000015,0.000002,0.000000</Position>
+<Visual>GraphicPanel</Visual>
</Properties>
<XuiCheckbox>
<Properties>
-<Id>CheckboxBonusChest</Id>
+<Id>CheckboxNaturalRegeneration</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>19.000000,77.000000,0.000000</Position>
+<Position>16.000000,299.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<Enabled>false</Enabled>
-<NavUp>CheckboxFlatWorld</NavUp>
+<NavUp>CheckboxTileDrops</NavUp>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxFlatWorld</Id>
+<Id>CheckboxTileDrops</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>19.000000,50.999992,0.000000</Position>
+<Position>16.000000,273.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<Enabled>false</Enabled>
-<NavUp>CheckboxStructures</NavUp>
-<NavDown>CheckboxBonusChest</NavDown>
+<NavUp>CheckboxMobLoot</NavUp>
+<NavDown>CheckboxNaturalRegeneration</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxStructures</Id>
+<Id>CheckboxMobLoot</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>19.000000,24.999992,0.000000</Position>
+<Position>16.000000,247.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<Enabled>false</Enabled>
-<NavUp>..\HostOptions\CheckboxResetNether</NavUp>
-<NavDown>CheckboxFlatWorld</NavDown>
+<NavUp>CheckboxMobGriefing</NavUp>
+<NavDown>CheckboxTileDrops</NavDown>
</Properties>
</XuiCheckbox>
-<XuiLabel>
+<XuiCheckbox>
<Properties>
-<Id>WorldOptions</Id>
+<Id>CheckboxMobGriefing</Id>
<Width>304.000000</Width>
-<Height>19.000000</Height>
-<Position>16.000000,0.000000,0.000000</Position>
-<Visual>XuiLabelDarkSmall</Visual>
-</Properties>
-</XuiLabel>
-<XuiGroup>
-<Properties>
-<Id>WO_Box</Id>
-<Width>307.000000</Width>
-<Height>85.000000</Height>
-<Position>15.999971,18.999985,0.000000</Position>
-</Properties>
-<XuiFigure>
-<Properties>
-<Width>2.000000</Width>
-<Height>82.000000</Height>
-<Position>302.000031,0.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
-</Properties>
-</Stroke>
-<Fill>
-<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
-</Properties>
-</XuiFigure>
-<XuiFigure>
-<Properties>
-<Width>2.000000</Width>
-<Height>82.000000</Height>
-<Position>0.000029,0.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
+<Height>26.000000</Height>
+<Position>16.000000,221.000000,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxMobSpawning</NavUp>
+<NavDown>CheckboxMobLoot</NavDown>
</Properties>
-</Stroke>
-<Fill>
+</XuiCheckbox>
+<XuiCheckbox>
<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
+<Id>CheckboxMobSpawning</Id>
+<Width>304.000000</Width>
+<Height>26.000000</Height>
+<Position>16.000000,195.000000,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxKeepInventory</NavUp>
+<NavDown>CheckboxMobGriefing</NavDown>
</Properties>
-</XuiFigure>
-<XuiFigure>
+</XuiCheckbox>
+<XuiCheckbox>
<Properties>
+<Id>CheckboxKeepInventory</Id>
<Width>304.000000</Width>
-<Height>2.000000</Height>
-<Position>0.000029,0.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
+<Height>26.000000</Height>
+<Position>16.000000,169.000000,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxDayLightCycle</NavUp>
+<NavDown>CheckboxMobSpawning</NavDown>
</Properties>
-</Stroke>
-<Fill>
+</XuiCheckbox>
+<XuiCheckbox>
<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
+<Id>CheckboxDayLightCycle</Id>
+<Width>304.000000</Width>
+<Height>26.000000</Height>
+<Position>16.000000,143.000000,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxHostPrivileges</NavUp>
+<NavDown>CheckboxKeepInventory</NavDown>
</Properties>
-</XuiFigure>
-<XuiFigure>
+</XuiCheckbox>
+<XuiCheckbox>
<Properties>
+<Id>CheckboxHostPrivileges</Id>
<Width>304.000000</Width>
-<Height>2.000000</Height>
-<Position>0.000029,80.000015,0.000000</Position>
-<Stroke>
-<Properties>
-<StrokeColor>0xff000000</StrokeColor>
+<Height>26.000000</Height>
+<Position>16.000000,116.999992,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxPVP</NavUp>
+<NavDown>CheckboxDayLightCycle</NavDown>
</Properties>
-</Stroke>
-<Fill>
+</XuiCheckbox>
+<XuiCheckbox>
<Properties>
-<FillColor>0xff505050</FillColor>
-<TransformVersion>1</TransformVersion>
-</Properties>
-</Fill>
-<Closed>true</Closed>
-<Points>4,0.000000,0.000000,0.000000,0.000000,49.000000,0.000000,0,49.000000,0.000000,49.000000,0.000000,49.000000,70.000000,0,49.000000,70.000000,49.000000,70.000000,0.000000,70.000000,0,0.000000,70.000000,0.000000,70.000000,0.000000,0.000000,0,</Points>
+<Id>CheckboxPVP</Id>
+<Width>304.000000</Width>
+<Height>26.000000</Height>
+<Position>16.000000,90.999992,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxAllowFoF</NavUp>
+<NavDown>CheckboxHostPrivileges</NavDown>
</Properties>
-</XuiFigure>
-</XuiGroup>
-</XuiScene>
-<XuiScene>
+</XuiCheckbox>
+<XuiCheckbox>
<Properties>
-<Id>HostOptions</Id>
-<Width>340.000000</Width>
-<Height>233.000000</Height>
-<Position>0.000000,11.000000,0.000000</Position>
-<Visual>XuiBlankScene</Visual>
+<Id>CheckboxAllowFoF</Id>
+<Width>304.000000</Width>
+<Height>25.000000</Height>
+<Position>16.000000,66.000000,0.000000</Position>
+<Visual>XuiCheckboxSmall</Visual>
+<NavUp>CheckboxInviteOnly</NavUp>
+<NavDown>CheckboxPVP</NavDown>
</Properties>
+</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxResetNether</Id>
+<Id>CheckboxInviteOnly</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,207.000000,0.000000</Position>
+<Position>16.000000,39.999992,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavUp>CheckboxHostPrivileges</NavUp>
-<NavDown>..\GenerationOptions\CheckboxStructures</NavDown>
+<NavUp>CheckboxOnline</NavUp>
+<NavDown>CheckboxAllowFoF</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxHostPrivileges</Id>
+<Id>CheckboxOnline</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,181.000000,0.000000</Position>
+<Position>16.000000,13.999992,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavUp>CheckboxTNT</NavUp>
-<NavDown>CheckboxResetNether</NavDown>
+<NavDown>CheckboxInviteOnly</NavDown>
</Properties>
</XuiCheckbox>
+</XuiScene>
+</XuiGroup>
+<XuiGroup>
+<Properties>
+<Id>WorldOptionsGroup</Id>
+<Width>510.000000</Width>
+<Height>305.000000</Height>
+<Position>60.000000,76.000000,0.000000</Position>
+<DisableTimelineRecursion>true</DisableTimelineRecursion>
+</Properties>
+<XuiLabel>
+<Properties>
+<Id>WorldOptionsDescription</Id>
+<Width>182.000000</Width>
+<Height>298.000000</Height>
+<Position>347.000000,10.000000,0.000000</Position>
+<Anchor>10</Anchor>
+<Visual>TipPanel</Visual>
+</Properties>
+</XuiLabel>
+<XuiScene>
+<Properties>
+<Id>WorldOptions</Id>
+<Width>350.000000</Width>
+<Height>315.000000</Height>
+<Position>0.000015,0.000000,0.000000</Position>
+<Anchor>10</Anchor>
+<Visual>GraphicPanel</Visual>
+</Properties>
<XuiCheckbox>
<Properties>
-<Id>CheckboxTNT</Id>
+<Id>CheckboxFireSpreads</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,155.000000,0.000000</Position>
+<Position>19.000000,253.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavUp>CheckboxFireSpreads</NavUp>
-<NavDown>CheckboxHostPrivileges</NavDown>
+<NavUp>CheckboxTNT</NavUp>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxFireSpreads</Id>
+<Id>CheckboxTNT</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,129.000000,0.000000</Position>
+<Position>19.000000,227.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
<NavUp>CheckboxTrustSystem</NavUp>
-<NavDown>CheckboxTNT</NavDown>
+<NavDown>CheckboxFireSpreads</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
@@ -211,68 +235,247 @@
<Id>CheckboxTrustSystem</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,102.999992,0.000000</Position>
+<Position>19.000000,201.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavUp>CheckboxPVP</NavUp>
-<NavDown>CheckboxFireSpreads</NavDown>
+<NavUp>CheckboxResetNether</NavUp>
+<NavDown>CheckboxTNT</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxPVP</Id>
+<Id>CheckboxResetNether</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,76.999992,0.000000</Position>
+<Position>19.000000,175.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavUp>CheckboxAllowFoF</NavUp>
+<NavUp>CheckboxBonusChest</NavUp>
<NavDown>CheckboxTrustSystem</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxAllowFoF</Id>
+<Id>CheckboxBonusChest</Id>
<Width>304.000000</Width>
-<Height>25.000000</Height>
-<Position>16.000000,52.000000,0.000000</Position>
+<Height>26.000000</Height>
+<Position>19.000000,149.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavUp>CheckboxInviteOnly</NavUp>
-<NavDown>CheckboxPVP</NavDown>
+<NavUp>CheckboxFlatWorld</NavUp>
+<NavDown>CheckboxResetNether</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxInviteOnly</Id>
+<Id>CheckboxFlatWorld</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,25.999992,0.000000</Position>
+<Position>19.000000,123.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavUp>CheckboxOnline</NavUp>
-<NavDown>CheckboxAllowFoF</NavDown>
+<NavUp>CheckboxStructures</NavUp>
+<NavDown>CheckboxBonusChest</NavDown>
</Properties>
</XuiCheckbox>
<XuiCheckbox>
<Properties>
-<Id>CheckboxOnline</Id>
+<Id>CheckboxStructures</Id>
<Width>304.000000</Width>
<Height>26.000000</Height>
-<Position>16.000000,-0.000008,0.000000</Position>
+<Position>19.000000,97.000000,0.000000</Position>
<Visual>XuiCheckboxSmall</Visual>
-<NavDown>CheckboxInviteOnly</NavDown>
+<NavUp>XuiEditSeed</NavUp>
+<NavDown>CheckboxFlatWorld</NavDown>
</Properties>
</XuiCheckbox>
+<XuiLabel>
+<Properties>
+<Id>XuiLabelRandomSeed</Id>
+<Width>304.000000</Width>
+<Height>21.924896</Height>
+<Position>18.000000,70.000000,0.000000</Position>
+<Visual>XuiLabelDarkLeftWrapSmall8</Visual>
+</Properties>
+</XuiLabel>
+<XuiEdit>
+<Properties>
+<Id>XuiEditSeed</Id>
+<Width>310.000000</Width>
+<Position>20.000000,36.000000,0.000000</Position>
+<ClassOverride>CXuiCtrl4JEdit</ClassOverride>
+<Visual>XuiEdit</Visual>
+<NavDown>CheckboxStructures</NavDown>
+</Properties>
+</XuiEdit>
+<XuiLabel>
+<Properties>
+<Id>XuiLabelSeed</Id>
+<Width>303.444427</Width>
+<Height>28.000000</Height>
+<Position>18.000000,18.000000,0.000000</Position>
+<Visual>XuiLabelDarkLeftWrapSmall10</Visual>
+</Properties>
+</XuiLabel>
</XuiScene>
+</XuiGroup>
+<XuiImage>
+<Properties>
+<Id>WorldOptionsTab</Id>
+<Width>175.000000</Width>
+<Height>40.000000</Height>
+<Position>60.000000,44.000000,0.000000</Position>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\PanelsAndTabs\WorldOptionsTabOn_Small.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
+<XuiImage>
+<Properties>
+<Id>GameOptionsTab</Id>
+<Width>175.000000</Width>
+<Height>40.000000</Height>
+<Position>235.000000,44.000000,0.000000</Position>
+<Show>false</Show>
+<SizeMode>1</SizeMode>
+<ImagePath>Graphics\PanelsAndTabs\GameOptionsTabOn_Small.png</ImagePath>
+<BrushFlags>48</BrushFlags>
+</Properties>
+</XuiImage>
<XuiLabel>
<Properties>
-<Id>Description</Id>
-<Width>500.000000</Width>
-<Height>64.000000</Height>
-<Position>-80.000000,358.000000,0.000000</Position>
-<Anchor>8</Anchor>
-<Visual>TipPanel</Visual>
-<Text>6666666666666666666666
-666666666666666666666666
-6666666666666666666666666</Text>
+<Id>LabelGameOptions</Id>
+<Width>160.000000</Width>
+<Height>24.000000</Height>
+<Position>242.000000,52.000000,0.000000</Position>
+<Visual>XuiLabelDarkCentredSmall</Visual>
+<Text>Game Options</Text>
+</Properties>
+</XuiLabel>
+<XuiLabel>
+<Properties>
+<Id>LabelWorldOptions</Id>
+<Width>160.000000</Width>
+<Height>24.000000</Height>
+<Position>68.000000,48.000000,0.000000</Position>
+<Visual>XuiLabelDarkCentredSmall</Visual>
+<Text>World Options
+</Text>
</Properties>
</XuiLabel>
+<Timelines>
+<NamedFrames>
+<NamedFrame>
+<Name>WorldOptions</Name>
+<Time>0</Time>
+<Command>stop</Command>
+</NamedFrame>
+<NamedFrame>
+<Name>GameOptions</Name>
+<Time>1</Time>
+<Command>stop</Command>
+</NamedFrame>
+</NamedFrames>
+<Timeline>
+<Id>GameOptionsGroup</Id>
+<TimelineProp>Show</TimelineProp>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+<Prop>60.000000,76.000015,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>60.000000,76.000023,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>WorldOptionsGroup</Id>
+<TimelineProp>Show</TimelineProp>
+<TimelineProp>Height</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+<Prop>305.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+<Prop>282.000000</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>LabelWorldOptions</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>68.000000,48.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>68.000000,52.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>LabelGameOptions</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>242.000000,52.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>242.000000,48.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>GameOptionsTab</Id>
+<TimelineProp>Show</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>OptionsTab_off</Id>
+<TimelineProp>Position</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>235.000000,44.000000,0.000000</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>60.000000,44.000000,0.000000</Prop>
+</KeyFrame>
+</Timeline>
+<Timeline>
+<Id>WorldOptionsTab</Id>
+<TimelineProp>Show</TimelineProp>
+<KeyFrame>
+<Time>0</Time>
+<Interpolation>0</Interpolation>
+<Prop>true</Prop>
+</KeyFrame>
+<KeyFrame>
+<Time>1</Time>
+<Interpolation>0</Interpolation>
+<Prop>false</Prop>
+</KeyFrame>
+</Timeline>
+</Timelines>
</XuiScene>
</XuiCanvas>
diff --git a/Minecraft.Client/Common/Media/xuiscene_trading_480.h b/Minecraft.Client/Common/Media/xuiscene_trading_480.h
new file mode 100644
index 00000000..5898253b
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_trading_480.h
@@ -0,0 +1,463 @@
+#define IDC_TradingWindow L"TradingWindow"
+#define IDC_TradingWindow1 L"TradingWindow1"
+#define IDC_RequiredLabel L"RequiredLabel"
+#define IDC_VillagerText L"VillagerText"
+#define IDC_Offer2Label L"Offer2Label"
+#define IDC_Offer1Label L"Offer1Label"
+#define IDC_ScrollLeftArrow L"ScrollLeftArrow"
+#define IDC_ScrollRightArrow L"ScrollRightArrow"
+#define IDC_Request1 L"Request1"
+#define IDC_Request2 L"Request2"
+#define IDC_TradingBar0 L"TradingBar0"
+#define IDC_TradingBar1 L"TradingBar1"
+#define IDC_TradingBar2 L"TradingBar2"
+#define IDC_TradingBar3 L"TradingBar3"
+#define IDC_TradingBar4 L"TradingBar4"
+#define IDC_TradingBar5 L"TradingBar5"
+#define IDC_TradingBar6 L"TradingBar6"
+#define IDC_TradingSelector L"TradingSelector"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_InventoryGrid L"InventoryGrid"
+#define IDC_InventoryLabel L"InventoryLabel"
+#define IDC_HtmlTextPanel L"HtmlTextPanel"
+#define IDC_Group L"Group"
+#define IDC_XuiSceneTrading L"XuiSceneTrading"
diff --git a/Minecraft.Client/Common/Media/xuiscene_trading_small.h b/Minecraft.Client/Common/Media/xuiscene_trading_small.h
new file mode 100644
index 00000000..f2bb799f
--- /dev/null
+++ b/Minecraft.Client/Common/Media/xuiscene_trading_small.h
@@ -0,0 +1,445 @@
+#define IDC_TradingWindow L"TradingWindow"
+#define IDC_TradingWindow1 L"TradingWindow1"
+#define IDC_RequiredLabel L"RequiredLabel"
+#define IDC_VillagerText L"VillagerText"
+#define IDC_Offer2Label L"Offer2Label"
+#define IDC_Offer1Label L"Offer1Label"
+#define IDC_ScrollLeftArrow L"ScrollLeftArrow"
+#define IDC_ScrollRightArrow L"ScrollRightArrow"
+#define IDC_Request1 L"Request1"
+#define IDC_Request2 L"Request2"
+#define IDC_TradingBar0 L"TradingBar0"
+#define IDC_TradingBar1 L"TradingBar1"
+#define IDC_TradingBar2 L"TradingBar2"
+#define IDC_TradingBar3 L"TradingBar3"
+#define IDC_TradingBar4 L"TradingBar4"
+#define IDC_TradingBar5 L"TradingBar5"
+#define IDC_TradingBar6 L"TradingBar6"
+#define IDC_TradingSelector L"TradingSelector"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_Inventory L"Inventory"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_control_ListItem L"control_ListItem"
+#define IDC_UseRow L"UseRow"
+#define IDC_InventoryGrid L"InventoryGrid"
+#define IDC_InventoryLabel L"InventoryLabel"
+#define IDC_HtmlTextPanel L"HtmlTextPanel"
+#define IDC_Group L"Group"
+#define IDC_XuiSceneTrading L"XuiSceneTrading"
diff --git a/Minecraft.Client/Common/Media/zh-CHT/4J_strings.resx b/Minecraft.Client/Common/Media/zh-CHT/4J_strings.resx
index 90cddc7f..341189b0 100644
--- a/Minecraft.Client/Common/Media/zh-CHT/4J_strings.resx
+++ b/Minecraft.Client/Common/Media/zh-CHT/4J_strings.resx
@@ -17,7 +17,7 @@
</data>
<data name="IDS_NOFREESPACE_TITLE"><value>沒有å¯ç”¨ç©ºé–“</value>
</data>
-<data name="IDS_NOFREESPACE_TEXT"><value>å·²é¸å–儲存è£ç½®æ²’有足夠的å¯ç”¨ç©ºé–“ä¾†å»ºç«‹éŠæˆ²å­˜æª”。</value>
+<data name="IDS_NOFREESPACE_TEXT"><value>您所é¸å–的儲存è£ç½®æ²’有足夠的å¯ç”¨ç©ºé–“ä¾†å»ºç«‹éŠæˆ²å­˜æª”。</value>
</data>
<data name="IDS_SELECTAGAIN"><value>å†é¸å–一次</value>
</data>
@@ -27,7 +27,7 @@
</data>
<data name="IDS_OVERWRITESAVE_TITLE"><value>è¦è¦†å¯«å­˜æª”嗎?</value>
</data>
-<data name="IDS_OVERWRITESAVE_TEXT"><value>å·²é¸å–儲存è£ç½®å·²ç¶“有這個存檔,確定è¦è¦†å¯«è©²å­˜æª”嗎?</value>
+<data name="IDS_OVERWRITESAVE_TEXT"><value>您所é¸å–的儲存è£ç½®å·²ç¶“有這個存檔,確定è¦è¦†å¯«è©²å­˜æª”嗎?</value>
</data>
<data name="IDS_OVERWRITESAVE_NO"><value>å¦ï¼šä¸è¦è¦†å¯«</value>
</data>
diff --git a/Minecraft.Client/Common/Media/zh-CHT/strings.resx b/Minecraft.Client/Common/Media/zh-CHT/strings.resx
index 7c9861f8..4efef5a7 100644
--- a/Minecraft.Client/Common/Media/zh-CHT/strings.resx
+++ b/Minecraft.Client/Common/Media/zh-CHT/strings.resx
@@ -287,20 +287,41 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
當載入或建立世界時,您å¯ä»¥æŒ‰ä¸‹ [更多é¸é …] æŒ‰éˆ•ï¼Œä¾†é¸æ“‡æ›´å¤šéŠæˆ²çš„相關設定。{*B*}{*B*}
{*T2*}玩家 vs 玩家{*ETW*}{*B*}
- 啟用此é¸é …時,玩家å°å…¶ä»–玩家å¯ä»¥é€ æˆå‚·å®³ã€‚æ­¤é¸é …åªåœ¨ç”Ÿå­˜æ¨¡å¼ä¸‹å¯ä½¿ç”¨ã€‚{*B*}{*B*}
+ 啟用此é¸é …時,玩家å¯ä»¥å°å…¶ä»–玩家造æˆå‚·å®³ã€‚æ­¤é¸é …åªåœ¨ç”Ÿå­˜æ¨¡å¼ä¸‹å¯ä½¿ç”¨ã€‚{*B*}{*B*}
{*T2*}信任玩家{*ETW*}{*B*}
- åœç”¨æ­¤é¸é …時,會é™åˆ¶åŠ å…¥éŠæˆ²çš„玩家åªèƒ½å¾žäº‹é™å®šçš„æ´»å‹•ã€‚ä»–å€‘ç„¡æ³•é€²è¡Œé–‹æŽ¡æˆ–ä½¿ç”¨é …ç›®ã€æ”¾ç½®æ–¹å¡Šã€ä½¿ç”¨é–€èˆ‡é–‹é—œã€ä½¿ç”¨å®¹å™¨ã€æ”»æ“ŠçŽ©å®¶ï¼Œæˆ–æ”»æ“Šå‹•ç‰©ã€‚æ‚¨å¯ä»¥ä½¿ç”¨éŠæˆ²é¸å–®ç‚ºç‰¹å®šçŽ©å®¶è®Šæ›´ä¸Šè¿°çš„é¸é …。{*B*}{*B*}
+ åœç”¨æ­¤é¸é …會é™åˆ¶åŠ å…¥éŠæˆ²çš„玩家å¯ä»¥é€²è¡Œçš„æ´»å‹•ã€‚ä»–å€‘ç„¡æ³•é€²è¡Œé–‹æŽ¡æˆ–ä½¿ç”¨é …ç›®ã€æ”¾ç½®æ–¹å¡Šã€ä½¿ç”¨é–€èˆ‡é–‹é—œã€ä½¿ç”¨å®¹å™¨ã€æ”»æ“ŠçŽ©å®¶æˆ–å‹•ç‰©ã€‚æ‚¨å¯ä»¥ä½¿ç”¨éŠæˆ²é¸å–®ç‚ºç‰¹å®šçŽ©å®¶è®Šæ›´ä¸Šè¿°çš„é¸é …。{*B*}{*B*}
{*T2*}ç«æœƒè”“å»¶{*ETW*}{*B*}
- 啟用此é¸é …æ™‚ï¼Œç«æœƒè”“延到附近易燃的方塊。å¯ä»¥å¾žéŠæˆ²ä¸­è®Šæ›´æ­¤é¸é …。{*B*}{*B*}
+ 啟用此é¸é …æ™‚ï¼Œç«æœƒè”“延到附近易燃的方塊。您也å¯ä»¥å¾žéŠæˆ²ä¸­è®Šæ›´æ­¤é¸é …。{*B*}{*B*}
{*T2*}炸藥會爆炸{*ETW*}{*B*}
- 啟用此é¸é …時,引爆炸藥時會爆炸。å¯ä»¥å¾žéŠæˆ²ä¸­è®Šæ›´æ­¤é¸é …。{*B*}{*B*}
+ 啟用此é¸é …時,引爆炸藥後就會發生爆炸。您也å¯ä»¥å¾žéŠæˆ²ä¸­è®Šæ›´æ­¤é¸é …。{*B*}{*B*}
{*T2*}主æŒäººç‰¹æ¬Š{*ETW*}{*B*}
啟用此é¸é …時,主æŒäººå¯ä»¥åœ¨éŠæˆ²ä¸­åˆ‡æ›è‡ªå·±çš„飛翔能力ã€åœç”¨ç–²å‹žåŠŸèƒ½ï¼Œæˆ–æ˜¯è®“è‡ªå·±éš±å½¢ã€‚{*DISABLES_ACHIEVEMENTS*}{*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*}
+ åœç”¨æ­¤é¸é …時,怪ç¸èˆ‡å‹•物無法撒下劫掠物 (例如:Creeper 無法撒下ç«è—¥) 。{*B*}{*B*}
+
+ {*T2*}磚瓦拋è½{*ETW*}{*B*}
+ åœç”¨æ­¤é¸é …時,方塊無法被摧毀時拋è½é …ç›® (例如:石頭方塊無法拋è½éµåµçŸ³) 。{*B*}{*B*}
+
+ {*T2*}自然å†ç”Ÿ{*ETW*}{*B*}
+ åœç”¨æ­¤é¸é …時,玩家無法自然回復å¥åº·ã€‚{*B*}{*B*}
+
{*T1*}產生新世界é¸é …{*ETW*}{*B*}
建立新世界時,有些é¡å¤–çš„é¸é …å¯ä½¿ç”¨ã€‚{*B*}{*B*}
@@ -311,56 +332,59 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
啟用此é¸é …時,會在地上世界與地ç„世界中產生完全平å¦çš„世界。{*B*}{*B*}
{*T2*}è´ˆå“ç®±{*ETW*}{*B*}
- 啟用此é¸é …時,會在玩家å†ç”Ÿé»žé™„近創造內å«ä¸€äº›æœ‰ç”¨é …目的贈å“箱。{*B*}{*B*}
+ 啟用此é¸é …時,玩家å†ç”Ÿé»žé™„近會出ç¾ä¸€å€‹æ”¾äº†æœ‰ç”¨ç‰©å“的箱å­ã€‚{*B*}{*B*}
{*T2*}é‡è¨­åœ°ç„{*ETW*}{*B*}
啟用此é¸é …時,會å†åº¦ç”¢ç”Ÿåœ°ç„。如果您的舊存檔中沒有地ç„è¦å¡žï¼Œé€™å°‡æœƒå¾ˆæœ‰ç”¨ã€‚{*B*}{*B*}
- {*T1*}éŠæˆ²ä¸­é¸é …{*ETW*}{*B*}
- çŽ©éŠæˆ²æ™‚,按下 BACK éµå¯ä»¥å«å‡ºéŠæˆ²ä¸­åŠŸèƒ½è¡¨ï¼Œå­˜å–æŸäº›é¸é …。{*B*}{*B*}
+ {*T1*}éŠæˆ²ä¸­é¸é …{*ETW*}{*B*}
+ çŽ©éŠæˆ²æ™‚,按下 {*BACK_BUTTON*} éµå¯ä»¥å«å‡ºéŠæˆ²ä¸­åŠŸèƒ½è¡¨ï¼Œå­˜å–æŸäº›é¸é …。{*B*}{*B*}
{*T2*}主æŒäººé¸é …{*ETW*}{*B*}
- 玩家主æŒäººæˆ–設定為管ç†å“¡çš„玩家,å¯ä»¥å­˜å– [主æŒäººé¸é …] 功能表。這些人å¯ä»¥å•Ÿç”¨æˆ–å–æ¶ˆã€Œç«æœƒè”“å»¶ã€åŠã€Œç‚¸è—¥æœƒçˆ†ç‚¸ã€çš„é¸é …。{*B*}{*B*}
+ 玩家主æŒäººåŠè¨­å®šç‚ºç®¡ç†å“¡çš„玩家,å¯ä»¥å­˜å– [主æŒäººé¸é …] 功能表。這些人å¯ä»¥å•Ÿç”¨æˆ–å–æ¶ˆã€Œç«æœƒè”“å»¶ã€åŠã€Œç‚¸è—¥æœƒçˆ†ç‚¸ã€çš„é¸é …。{*B*}{*B*}
{*T1*}玩家é¸é …{*ETW*}{*B*}
è‹¥è¦ä¿®æ”¹çŽ©å®¶çš„ç‰¹æ¬Šï¼Œå¯ä»¥é¸å–玩家的å字並按下 {*CONTROLLER_VK_A*},這會å«å‡ºçŽ©å®¶ç‰¹æ¬ŠåŠŸèƒ½è¡¨ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨åˆ—出的é¸é …。{*B*}{*B*}
{*T2*}å¯ä»¥å»ºé€ å’Œé–‹æŽ¡{*ETW*}{*B*}
- åªæœ‰åœ¨é—œé–‰ä¿¡ä»»çŽ©å®¶æ™‚æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。啟用此é¸é …時,玩家å¯ä»¥åƒæ˜¯åœ¨æ­£å¸¸ç‹€æ³ä¸‹ä¸€æ¨£èˆ‡ä¸–ç•Œäº’å‹•ã€‚å–æ¶ˆä½¿ç”¨æ­¤é¸é …æ™‚ï¼ŒçŽ©å®¶å°‡ç„¡æ³•æ”¾ç½®æˆ–æ‘§æ¯€æ–¹å¡Šï¼Œä¸¦ç„¡æ³•èˆ‡è¨±å¤šé …ç›®åŠæ–¹å¡Šäº’動。{*B*}{*B*}
+ åªæœ‰åœ¨ã€Œä¿¡ä»»çީ家ã€é¸é …已關閉時æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。啟用此é¸é …時,玩家å¯ä»¥åœ¨æ­£å¸¸ç‹€æ³ä¸‹èˆ‡ä¸–ç•Œäº’å‹•ã€‚åœæ­¢ä½¿ç”¨æ­¤é¸é …å¾Œï¼ŒçŽ©å®¶å°‡ç„¡æ³•æ”¾ç½®æˆ–æ‘§æ¯€æ–¹å¡Šï¼Œä¸¦ç„¡æ³•èˆ‡é …ç›®åŠæ–¹å¡Šäº’動。{*B*}{*B*}
{*T2*}å¯ä»¥ä½¿ç”¨é–€èˆ‡é–‹é—œ{*ETW*}{*B*}
- åªæœ‰åœ¨é—œé–‰ä¿¡ä»»çŽ©å®¶æ™‚æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。åœç”¨æ­¤é¸é …時,玩家將無法使用門與開關。{*B*}{*B*}
+ åªæœ‰åœ¨ã€Œä¿¡ä»»çީ家ã€é¸é …已關閉時æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。åœç”¨æ­¤é¸é …時,玩家將無法使用門與開關。{*B*}{*B*}
{*T2*}å¯ä»¥æ‰“開容器{*ETW*}{*B*}
- åªæœ‰åœ¨é—œé–‰ä¿¡ä»»çŽ©å®¶æ™‚æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。åœç”¨æ­¤é¸é …時,玩家將無法打開箱å­ç­‰å®¹å™¨ã€‚{*B*}{*B*}
+ åªæœ‰åœ¨ã€Œä¿¡ä»»çީ家ã€é¸é …已關閉時æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。åœç”¨æ­¤é¸é …時,玩家將無法打開箱å­ç­‰å®¹å™¨ã€‚{*B*}{*B*}
- {*T2*}å¯ä»¥æ”»æ“Šçީ家{*ETW*}{*B*}
- åªæœ‰åœ¨é—œé–‰ä¿¡ä»»çŽ©å®¶æ™‚æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …ã€‚å–æ¶ˆä½¿ç”¨æ­¤é¸é …時,玩家將無法å°å…¶ä»–玩家造æˆå‚·å®³ã€‚{*B*}{*B*}
+ {*T2*}å¯ä»¥æ”»æ“Šçީ家{*ETW*}{*B*}
+ åªæœ‰åœ¨ã€Œä¿¡ä»»çީ家ã€é¸é …已關閉時æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。åœç”¨æ­¤é¸é …時,玩家將無法傷害其他玩家。{*B*}{*B*}
{*T2*}å¯ä»¥æ”»æ“Šå‹•物{*ETW*}{*B*}
- åªæœ‰åœ¨é—œé–‰ä¿¡ä»»çŽ©å®¶æ™‚æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。åœç”¨æ­¤é¸é …時,玩家將無法å°å‹•物造æˆå‚·å®³ã€‚{*B*}{*B*}
+ åªæœ‰åœ¨ã€Œä¿¡ä»»çީ家ã€é¸é …已關閉時æ‰å¯ä»¥ä½¿ç”¨æ­¤é¸é …。åœç”¨æ­¤é¸é …時,玩家將無法傷害動物。{*B*}{*B*}
{*T2*}管ç†å“¡{*ETW*}{*B*}
- 啟用此é¸é …時,玩家å¯ä»¥ä¿®æ”¹ä¸»æŒäººä»¥å¤–其他玩家的特權 (在「信任玩家ã€é—œé–‰çš„狀態下)ã€è¸¢å‡ºçŽ©å®¶ï¼Œä¸¦å•Ÿç”¨æˆ–åœç”¨ã€Œç«æœƒè”“å»¶ã€åŠã€Œç‚¸è—¥æœƒçˆ†ç‚¸ã€åŠŸèƒ½ã€‚{*B*}{*B*}
+ 啟用此é¸é …時,玩家å¯ä»¥ä¿®æ”¹ä¸»æŒäººä»¥å¤–其他玩家的特權 (在「信任玩家ã€é¸é …關閉的狀態下)ã€è¸¢å‡ºçŽ©å®¶ï¼Œä¸¦å•Ÿç”¨æˆ–åœç”¨ã€Œç«æœƒè”“å»¶ã€åŠã€Œç‚¸è—¥æœƒçˆ†ç‚¸ã€åŠŸèƒ½ã€‚{*B*}{*B*}
{*T2*}踢出玩家{*ETW*}{*B*}
- å°ä½¿ç”¨èˆ‡ä¸»æŒäººçީ家ä¸åŒ {*PLATFORM_NAME*} 主機的玩家é¸å–æ­¤é¸é …,會將該玩家或使用其他 {*PLATFORM_NAME*} ä¸»æ©Ÿçš„çŽ©å®¶è¸¢å‡ºéŠæˆ²ã€‚除éžé‡æ–°å•Ÿå‹•,å¦å‰‡è¢«è¸¢å‡ºçš„玩家無法å†åŠ å…¥éŠæˆ²ã€‚{*B*}{*B*}
+ {*KICK_PLAYER_DESCRIPTION*}主機的玩家é¸å–æ­¤é¸é …,會將該玩家或使用其他 {*PLATFORM_NAME*} ä¸»æ©Ÿçš„çŽ©å®¶è¸¢å‡ºéŠæˆ²ã€‚除éžé‡æ–°å•Ÿå‹•,å¦å‰‡è¢«è¸¢å‡ºçš„玩家無法å†åŠ å…¥éŠæˆ²ã€‚{*B*}{*B*}
{*T1*}主æŒäººçީ家é¸é …{*ETW*}{*B*}
-如果已經啟用主æŒäººç‰¹æ¬Šï¼Œå‰‡ä¸»æŒäººçީ家å¯ä»¥ä¿®æ”¹è‡ªå·±çš„æŸäº›ç‰¹æ¬Šã€‚è‹¥è¦ä¿®æ”¹çŽ©å®¶çš„ç‰¹æ¬Šï¼Œå¯ä»¥é¸å–玩家的å字並按下 {*CONTROLLER_VK_A*},這會å«å‡ºçŽ©å®¶ç‰¹æ¬ŠåŠŸèƒ½è¡¨ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨åˆ—出的é¸é …。{*B*}{*B*}
+如果主æŒäººç‰¹æ¬Šå·²ç¶“啟用,主æŒäººçީ家å¯ä»¥ä¿®æ”¹è‡ªå·±çš„æŸäº›ç‰¹æ¬Šã€‚è‹¥è¦ä¿®æ”¹çŽ©å®¶çš„ç‰¹æ¬Šï¼Œå¯ä»¥é¸å–玩家的å字並按下 {*CONTROLLER_VK_A*},這會å«å‡ºçŽ©å®¶ç‰¹æ¬ŠåŠŸèƒ½è¡¨ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨ä¸‹åˆ—é¸é …。{*B*}{*B*}
{*T2*}å¯ä»¥é£›ç¿”{*ETW*}{*B*}
- 啟用此é¸é …時,玩家å¯ä»¥æ“有飛翔的能力。åªèƒ½åœ¨ç”Ÿå­˜æ¨¡å¼ä¸­é¸æ“‡æ˜¯å¦ä½¿ç”¨æ­¤é¸é …。在創造模å¼ä¸­ï¼Œæ‰€æœ‰çš„玩家都有飛翔的能力。{*B*}{*B*}
+ 啟用此é¸é …時,玩家å¯ä»¥æ“有飛翔的能力。您åªèƒ½åœ¨ç”Ÿå­˜æ¨¡å¼ä¸­é¸æ“‡æ˜¯å¦ä½¿ç”¨æ­¤é¸é …,因為在創造模å¼ä¸­ï¼Œæ‰€æœ‰çš„玩家都有飛翔的能力。{*B*}{*B*}
{*T2*}åœç”¨ç–²å‹ž{*ETW*}{*B*}
- åªèƒ½åœ¨ç”Ÿå­˜æ¨¡å¼ä¸­é¸æ“‡æ˜¯å¦ä½¿ç”¨æ­¤é¸é …。啟用時,消耗體力的活動 (行走/奔跑/è·³èºç­‰ç­‰) 䏿œƒè®“食物列減少。然而,如果玩家å—傷,在玩家回復生命值期間,食物列會緩慢減少。{*B*}{*B*}
+ åªèƒ½åœ¨ç”Ÿå­˜æ¨¡å¼ä¸­é¸æ“‡æ˜¯å¦ä½¿ç”¨æ­¤é¸é …。啟用時,消耗體力的活動 (行走/奔跑/è·³èºç­‰ç­‰) 䏿œƒè®“食物列減少。然而,如果玩家å—傷,在玩家回復生命值期間,食物列會慢慢減少。{*B*}{*B*}
{*T2*}隱形{*ETW*}{*B*}
- 啟用此é¸é …時,其他玩家將無法看見玩家,且玩家會變æˆåˆ€æ§ä¸å…¥ã€‚{*B*}{*B*}
- {*T2*}å¯ä»¥å‚³é€{*ETW*}{*B*}
- 這å¯ä»¥è®“玩家傳é€å…¶ä»–玩家或者他自己到其他玩家身邊。
+ 啟用此é¸é …時,其他玩家將無法看見玩家,而且玩家會變æˆåˆ€æ§ä¸å…¥ã€‚{*B*}{*B*}
+
+ {*T2*}å¯ä»¥å‚³é€{*ETW*}{*B*}
+ 這å¯ä»¥è®“玩家在世界中傳é€å…¶ä»–玩家或者他自己到其他玩家身邊。
</value>
</data>
+<data name="IDS_KICK_PLAYER_DESCRIPTION"><value>䏿˜¯åŒä¸€å€‹çީ家{*PLATFORM_NAME*}主控å°ç‚ºä¸»æ©Ÿæ’­æ”¾ç¨‹å¼ä¸­ï¼Œé¸å–æ­¤é¸é …å°‡è¸¢å‡ºçŽ©å®¶çš„éŠæˆ²å’Œå…¶ä»–玩家在其{*PLATFORM_NAME*}主控å°ã€‚這ä½çީ家ä¸èƒ½å†åŠ å…¥éŠæˆ²ï¼Œç›´åˆ°é‡æ–°å•Ÿå‹•。</value>
+ </data>
<data name="IDS_HOW_TO_PLAY_NEXT"><value>下一é </value>
</data>
<data name="IDS_HOW_TO_PLAY_PREV"><value>上一é </value>
@@ -379,7 +403,7 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_HOW_TO_PLAY_MENU_DISPENSER"><value>發射器</value>
</data>
-<data name="IDS_HOW_TO_PLAY_MENU_FARMANIMALS"><value>豢養動物</value>
+<data name="IDS_HOW_TO_PLAY_MENU_FARMANIMALS"><value>飼養動物</value>
</data>
<data name="IDS_HOW_TO_PLAY_MENU_BREEDANIMALS"><value>ç¹æ®–動物</value>
</data>
@@ -425,61 +449,93 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
<data name="IDS_HOW_TO_PLAY_MENU_WHATSNEW"><value>最新資訊</value>
</data>
<data name="IDS_HOW_TO_PLAY_WHATSNEW"><value>{*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*}
-</value>
+- 新增物å“:硬化é»åœŸã€æŸ“色é»åœŸã€ç…¤ç‚­æ–¹å¡Šã€ä¹¾è‰æ†ã€å•Ÿå‹•éµè»Œã€ç´…石方塊ã€é™½å…‰æ„Ÿæ¸¬å™¨ã€æŠ•æ“²å™¨ã€æ¼æ–—ã€æ¼æ–—礦車ã€ç«è—¥ç¤¦è»Šã€ç´…çŸ³æ¯”è¼ƒå™¨ã€æ¸¬é‡å£“力æ¿ã€ç‡ˆå¡”ã€é™·é˜±å„²ç‰©ç®±ã€ç…™ç«ç«ç®­ã€ç…™ç«æ˜Ÿã€å¹½å†¥æ˜Ÿã€ç¹©ç´¢ã€é¦¬éާã€å牌ã€é¦¬é‡ç”Ÿè›‹ã€‚{*B*}
+- 新增生物:凋零怪ã€å‡‹é›¶éª·é«ã€å¥³å·«ã€è™è ã€é¦¬ã€é©¢å’Œé¨¾ã€‚{*B*}
+- 新增地形生æˆåŠŸèƒ½ï¼šå¥³å·«å±‹ã€‚{*B*}
+- 新增燈塔介é¢ã€‚{*B*}
+- 新增馬介é¢ã€‚{*B*}
+- æ–°å¢žæ¼æ–—介é¢ã€‚{*B*}
+- 新增煙ç«ï¼šæ‚¨æ“æœ‰è£½ä½œç…™ç«æ˜Ÿæˆ–ç…™ç«ç«ç®­çš„ææ–™æ™‚,å¯ä»¥å¾žå·¥ä½œå°é€²å…¥ç…™ç«ä»‹é¢ã€‚{*B*}
+- 新增「冒險模å¼ã€ï¼šæ‚¨åªèƒ½ç”¨æ­£ç¢ºçš„工具打破方塊。{*B*}
+- 新增許多è²éŸ³ã€‚{*B*}
+- 生物ã€ç‰©å“和投射物ç¾åœ¨èƒ½é€šéŽå…¥å£ã€‚{*B*}
+- ç¾åœ¨åªè¦ç”¨å¦ä¸€å€‹ä¸­ç¹¼å™¨ç‚ºä¸­ç¹¼å™¨ä¾›é›»ï¼Œå°±å¯ä»¥æŠŠå®ƒéŽ–èµ·ä¾†ã€‚{*B*}
+- æ®­å±å’Œéª·é«ç¾åœ¨å¯ä»¥ç”¨ä¸åŒçš„æ­¦å™¨å’Œè­·ç”²é‡ç”Ÿã€‚{*B*}
+- 新死亡訊æ¯ã€‚{*B*}
+- 用命å牌為生物命å,以åŠåœ¨åŠŸèƒ½è¡¨é–‹å•Ÿæ™‚ç‚ºå®¹å™¨é‡æ–°å‘½å來變更標題。{*B*}
+- 骨粉ä¸å†è®“æ¯æ¨£æ±è¥¿ç«‹å³å®Œå…¨é•·å¤§ï¼Œè€Œæ˜¯æœƒéš¨æ©Ÿè®“æ¯æ¨£æ±è¥¿æ–¼ä¸åŒçš„階段生長。{*B*}
+- 直接æœå„²ç‰©ç®±ã€é‡€é€ å°ã€ç™¼å°„器和唱片機放置紅石比較器,å³å¯åµæ¸¬åˆ°èªªæ˜Žé€™äº›æ±è¥¿è£¡é¢å…§å®¹ç‰©çš„紅石訊號。{*B*}
+- 發射器å¯ä»¥æœä»»ä½•æ–¹å‘。{*B*}
+- 玩家於åƒä¸‹é‡‘蘋果之後,就能短暫ç²å¾—é¡å¤–çš„ç”Ÿå‘½å€¼åŽ»ã€Œå¸æ”¶ã€å‚·å®³ã€‚{*B*}
+- 您在æŸå€‹å€åŸŸåœç•™æ™‚間越久,在該å€åŸŸé‡ç”Ÿçš„æ€ªç‰©è¶Šé›£è¢«æ‰“敗。{*B*}</value>
</data>
<data name="IDS_TITLEUPDATE"><value>{*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*}
+æˆ‘å€‘ç‚ºæ‚¨å’Œæ‚¨çš„å¥½å‹æ–°å¢žäº†è¨±å¤šåŠŸèƒ½ï¼Œæˆ‘å€‘åœ¨æ­¤ç‚ºæ‚¨é‡é»žåˆ—èˆ‰å¹¾é …ï¼Œè¶•å¿«çž­è§£ä¸¦é–‹å§‹éŠæˆ²å§ï¼{*B*}{*B*}
+{*T1*}新物å“{*ETB*}:硬化é»åœŸã€æŸ“色é»åœŸã€ç…¤ç‚­æ–¹å¡Šã€ä¹¾è‰æ†ã€å•Ÿå‹•éµè»Œã€ç´…石方塊ã€é™½å…‰æ„Ÿæ¸¬å™¨ã€æŠ•æ“²å™¨ã€æ¼æ–—ã€æ¼æ–—礦車ã€ç«è—¥ç¤¦è»Šã€ç´…çŸ³æ¯”è¼ƒå™¨ã€æ¸¬é‡å£“力æ¿ã€ç‡ˆå¡”ã€é™·é˜±å„²ç‰©ç®±ã€ç…™ç«ç«ç®­ã€ç…™ç«æ˜Ÿã€å¹½å†¥æ˜Ÿã€ç¹©ç´¢ã€é¦¬éާã€å牌ã€é¦¬é‡ç”Ÿè›‹ã€‚{*B*}{*B*}
+{*T1*}新生物{*ETB*}:凋零怪ã€å‡‹é›¶éª·é«ã€å¥³å·«ã€è™è ã€é¦¬ã€é©¢å’Œé¨¾ã€‚{*B*}{*B*}
+{*T1*}新功能{*ETB*}:馴æœé¦¬å¾Œé¨Žä¸Šé¦¬èƒŒã€è£½ä½œç…™ç«åŠæƒ¡æžä¸€ç•ªã€ç”¨å牌為動物和怪物命åã€å»ºç«‹æ›´é€²éšŽçš„紅石電路,還有主æŒäººé¸é …å”助控制世界訪客的能è€ï¼{*B*}{*B*}
+{*T1*}新的教學世界{*ETB*}:在教學世界中學習新舊功能的使用方å¼ã€‚çœ‹æ‚¨æ˜¯å¦æœ‰èƒ½è€æŠŠè—在世界中的所有神祕唱片都找出來ï¼{*B*}{*B*}
</value>
</data>
+<data name="IDS_HOW_TO_PLAY_MENU_HORSES"><value>馬</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HORSES"><value>{*T3*}éŠæˆ²æ–¹å¼ï¼šé¦¬{*ETW*}{*B*}{*B*}
+馬和驢主è¦å±…ä½åœ¨é–‹é—Šçš„平原。騾是驢和馬的後代,但本身ä¸å…·ç”Ÿæ®–能力。{*B*}
+所有æˆå¹´çš„馬ã€é©¢å’Œé¨¾éƒ½å¯ä¾›äººé¨Žä¹˜ï¼Œä½†æ˜¯åªæœ‰é¦¬èƒ½å¤ ç©¿ä¸Šè­·ç”²ï¼Œåªæœ‰é¨¾å’Œé©¢å¯ä»¥è£ä¸Šéžå›ŠåŽ»é‹è¼¸ç‰©å“。{*B*}{*B*}
+馬ã€é©¢å’Œé¨¾å¿…é ˆå…ˆé¦´æœæ‰å¯ä»¥ä½¿ç”¨ã€‚馴æœé¦¬çš„æ–¹å¼æ˜¯é¨Žä¸ŠåŽ»ï¼Œç„¶å¾Œé¨Žå£«å¿…é ˆæƒ³è¾¦æ³•ä¸è¢«é¦¬æ‘”下馬背。{*B*}
+當愛心出ç¾åœ¨é¦¬çš„å‘¨åœæ™‚,牠已經被馴æœï¼Œå†ä¹Ÿä¸æœƒæŠŠçŽ©å®¶æ‘”ä¸‹é¦¬èƒŒã€‚çŽ©å®¶å¿…é ˆå¹«é¦¬è£ä¸Šé¦¬éžï¼Œæ‰èƒ½æ“縱一匹馬。{*B*}{*B*}
+您å¯ä»¥å‘æ‘æ°‘購買,或是從è—在世界中的儲物箱尋找馬éžã€‚{*B*}
+è‹¥è¦ç‚ºå·²é¦´æœçš„驢和騾加éžå›Šï¼ŒçŽ©å®¶è¦æŠŠå„²ç‰©ç®±è£åœ¨ç‰ å€‘èº«ä¸Šã€‚ä¹‹å¾Œé¨Žä¹˜æˆ–è¹²ä¼æ™‚玩家就能使用這些éžå›Š.{*B*}{*B*}
+使用金蘋果或金蘿蔔餵食馬和驢å³å¯ç¹æ®–牠們,就åƒç¹æ®–其他動物一樣,但是騾就ä¸è¡Œã€‚{*B*}
+å°é¦¬ç¶“éŽä¸€æ®µæ™‚é–“å°±æœƒé•·æˆæˆå¹´é¦¬ï¼Œä¸éŽçµ¦ç‰ å€‘餵食å°éº¥æˆ–ä¹¾è‰å°±æœƒåŠ é€Ÿç”Ÿé•·ã€‚{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_BEACONS"><value>燈塔</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_BEACONS"><value>{*T3*}éŠæˆ²æ–¹å¼ï¼šç‡ˆå¡”{*ETW*}{*B*}{*B*}
+啟動的燈塔會å‘天空投射明亮的光æŸï¼Œè³¦äºˆé™„近的玩家力é‡ã€‚{*B*}
+è£½ä½œç‡ˆå¡”çš„ææ–™åŒ…括玻璃ã€é»‘曜石和幽冥星,擊敗凋零怪å³å¯ç²å¾—。{*B*}{*B*}
+燈塔必須放置,白天æ‰èƒ½æ²æµ´åœ¨é™½å…‰ä¹‹ä¸‹ã€‚燈塔必須放置於éµã€é»ƒé‡‘ã€ç¿¡ç¿ æˆ–鑽石金字塔上。{*B*}
+ç”¨ä¾†æ”¾ç½®ç‡ˆå¡”çš„ææ–™ä¸æœƒå½±éŸ¿ç‡ˆå¡”的力é‡ã€‚{*B*}{*B*}
+您å¯ä»¥åœ¨ç‡ˆå¡”é¸å–®ä¸­ï¼Œç‚ºç‡ˆå¡”é¸å–一種主è¦çš„力é‡ã€‚金字塔越多層,å¯ä¾›é¸æ“‡çš„力é‡è¶Šå¤šã€‚{*B*}
+è‡³å°‘æœ‰å››å±¤çš„é‡‘å­—å¡”ä¸Šçš„ç‡ˆå¡”ï¼Œé‚„èƒ½å¤ è®“æ‚¨é¸æ“‡å†ç”Ÿæ¬¡è¦åЛ釿ˆ–是更強大的主è¦åŠ›é‡ã€‚{*B*}{*B*}
+您必須在付費空格奉上翡翠ã€é‘½çŸ³ã€é»ƒé‡‘或éµå¡Šï¼Œæ‰èƒ½è¨­å®šç‡ˆå¡”的力é‡ã€‚{*B*}
+è¨­å®šå¾Œï¼Œç‡ˆå¡”å°±æœƒç„¡é™æœŸç™¼å‡ºåŠ›é‡ã€‚{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_FIREWORKS"><value>ç…™ç«</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_FIREWORKS"><value>{*T3*}éŠæˆ²æ–¹å¼ï¸°ç…™ç«{*ETW*}{*B*}{*B*}
+ç…™ç«å±¬æ–¼è£é£¾å“,å¯ä»¥æ‰‹å‹•æˆ–åˆ©ç”¨ç™¼å°„å™¨ç™¼å°„ï¼Œè£½ä½œçš„ææ–™åŒ…括紙ã€ç«è—¥ï¼Œä¹Ÿæœ‰äººæœƒé¸æ“‡åŠ å…¥å¹¾é¡†ç…™ç«æ˜Ÿã€‚{*B*}
+ç…™ç«æ˜Ÿçš„é¡è‰²ã€æ·¡åŒ–ã€å½¢ç‹€ã€å¤§å°èˆ‡æ•ˆæžœ (例如尾巴和閃çˆ) å¯è‡ªè¨‚,方法是在製作時加入é¡å¤–ææ–™ã€‚{*B*}{*B*}
+è‹¥è¦è£½ä½œç…™ç«ï¼Œè«‹å°‡ç«è—¥å’Œç´™æ”¾åœ¨åº«å­˜ä¸Šæ–¹çš„ 3x3 工作å°ã€‚{*B*}
+您å¯ä»¥é¸æ“‡åœ¨å·¥ä½œå°æ”¾ç½®å¤šé¡†ç…™ç«æ˜Ÿï¼ŒåŠ å…¥ç…™ç«ã€‚{*B*}
+用ç«è—¥åœ¨å·¥ä½œå°å¡«æ»¿çš„ç©ºæ ¼è¶Šå¤šï¼Œæ‰€æœ‰ç…™ç«æ˜Ÿæœƒçˆ†ç‚¸çš„高度越高。{*B*}{*B*}
+然後您便å¯å¾žè¼¸å‡ºç©ºæ ¼å–出製作的煙ç«ã€‚{*B*}{*B*}
+å°‡ç«è—¥å’ŒæŸ“料放進工作å°ï¼Œå³å¯è£½ä½œç…™ç«æ˜Ÿã€‚{*B*}
+ - æŸ“æ–™æœƒæ±ºå®šç…™ç«æ˜Ÿçˆ†ç‚¸çš„é¡è‰²ã€‚{*B*}
+ - ç…™ç«æ˜Ÿçš„å½¢ç‹€å‰‡æ˜¯å–æ±ºæ–¼åŠ å…¥ç«ç„°å½ˆã€é‡‘塊ã€ç¾½æ¯›æˆ–生物的頭。{*B*}
+ - 使用鑽石或螢光粉å³å¯æ–°å¢žå°¾å·´æˆ–é–ƒçˆã€‚{*B*}{*B*}
+ç…™ç«æ˜Ÿè£½ä½œå®Œæˆå¾Œï¼Œä»¥æŸ“料製作å³å¯æ±ºå®šç…™ç«æ˜Ÿçš„æ·¡å‡ºé¡è‰²ã€‚
+ </value>
+ </data>
+<data name="IDS_HOW_TO_PLAY_MENU_HOPPERS"><value>æ¼æ–—</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_HOPPERS"><value>{*T3*}éŠæˆ²æ–¹å¼ï¼šæ¼æ–—{*ETW*}{*B*}{*B*}
+您å¯ä»¥ä½¿ç”¨æ¼æ–—å°‡ç‰©å“æ’入容器或是從容器移除物å“,以åŠè‡ªå‹•拾å–丟入容器的物å“。{*B*}
+æ¼æ–—能夠影響釀造å°ã€å„²ç‰©ç®±ã€ç™¼å°„å™¨ã€æŠ•æ“²å™¨ã€é‹è¼¸ç¤¦è»Šã€æ¼æ–—礦車åŠå…¶ä»–æ¼æ–—。{*B*}{*B*}
+æ¼æ–—會一直嘗試從放在上方的åˆé©å®¹å™¨å¸å–物å“ï¼Œé‚„æœƒå˜—è©¦å°‡å„²å­˜çš„ç‰©å“æ’入輸出容器。{*B*}
+å¦‚æžœæ¼æ–—是用紅石發電就會åœç”¨ï¼Œä¸¦ä¸”åœæ­¢å¸å–å’Œæ’入物å“。{*B*}{*B*}
+æ¼æ–—會指å‘嘗試輸出物å“的方å‘。若è¦è®“æ¼æ–—指å‘ç‰¹å®šæ–¹å¡Šï¼Œæ·ºè¡Œæ™‚å°‡æ¼æ–—放在背å°è©²æ–¹å¡Šçš„ä½ç½®å³å¯ã€‚{*B*}
+ </value>
+</data>
+<data name="IDS_HOW_TO_PLAY_MENU_DROPPERS"><value>投擲器</value>
+</data>
+<data name="IDS_HOW_TO_PLAY_DROPPERS"><value>{*T3*}éŠæˆ²æ–¹å¼ï¸°æŠ•擲器{*ETW*}{*B*}{*B*}
+投擲器由紅石供電時,會隨機掉è½ä¸€ä»¶ç‰©å“至地é¢ã€‚使用 {*CONTROLLER_ACTION_USE*} å³å¯é–‹å•ŸæŠ•擲器,然後å³å¯å°‡åº«å­˜ä¸­çš„物å“è£é€²æŠ•擲器。{*B*}
+如果投擲器æœå‘儲物箱或å¦ä¸€ç¨®å®¹å™¨ï¼Œç‰©å“則會放進那裡é¢ã€‚您å¯ä»¥æ‰“造投擲器的長éˆå­é‹è¼¸ç‰©å“ï¼Œä½†æ˜¯å¿…é ˆäº¤æ›¿é–‹å•Ÿé—œé–‰é›»æºæ‰èƒ½ç™¼æ®åŠŸèƒ½ã€‚
+ </value>
+</data>
<data name="IDS_DESC_SWORD"><value>èƒ½é€ æˆæ¯”ç”¨æ‰‹åŠˆç æ›´å¤§çš„傷害。</value>
</data>
<data name="IDS_DESC_SHOVEL"><value>用來挖泥土ã€é’è‰ã€æ²™å­ã€ç¤«çŸ³åŠç™½é›ªæ™‚的速度,會比用手挖還è¦å¿«ã€‚您需è¦ç”¨éŸå­æ‰èƒ½æŒ–雪çƒã€‚</value>
@@ -605,10 +661,36 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_DESC_MAP"><value>用手æ¡ä½æ™‚,會顯示æŸå€‹åœ°å€ä¸­å·²æŽ¢ç´¢å€åŸŸçš„å½±åƒã€‚å¯è®“您用來尋找能å‰å¾€æŸå€‹åœ°é»žçš„路。</value>
</data>
+<data name="IDS_DESC_MAP_EMPTY"><value>使用後會æˆç‚ºæ‚¨èº«è™•世界的地圖,而且會隨著您的探索腳步填滿。</value>
+ </data>
<data name="IDS_DESC_BOW"><value>å¯å°„出箭來é è·æ”»æ“Šã€‚</value>
</data>
<data name="IDS_DESC_ARROW"><value>å¯èˆ‡å¼“çµ„æˆæ­¦å™¨ã€‚</value>
</data>
+<data name="IDS_DESC_NETHER_STAR"><value>凋零怪所扔下,用於製作燈塔。</value>
+</data>
+<data name="IDS_DESC_FIREWORKS"><value>啟動時,建立彩色爆炸。é¡è‰²ã€æ•ˆæžœã€å½¢ç‹€å’Œæ·¡å‡ºå–æ±ºæ–¼å»ºç«‹ç…™ç«æ™‚ä½¿ç”¨çš„ç…™ç«æ˜Ÿã€‚</value>
+</data>
+<data name="IDS_DESC_FIREWORKS_CHARGE"><value>用來決定煙ç«çš„é¡è‰²ã€æ•ˆæžœå’Œå½¢ç‹€ã€‚</value>
+</data>
+<data name="IDS_DESC_COMPARATOR"><value>用於紅石電路,以維æŒã€æ¯”較或除去信號強度,或是測é‡è‹¥å¹²æ–¹å¡Šçš„狀態。</value>
+</data>
+<data name="IDS_DESC_MINECART_TNT"><value>屬於一種貨物礦車類型,功能是移動的 TNT 方塊。</value>
+</data>
+<data name="IDS_DESC_DAYLIGHT_DETECTOR"><value>是根據陽光 (或缺ä¹é™½å…‰) 發出紅石信號的方塊。</value>
+</data>
+<data name="IDS_DESC_MINECART_HOPPER"><value>å±¬æ–¼ç‰¹æ®Šçš„è²¨ç‰©ç¤¦è»Šé¡žåž‹ï¼ŒåŠŸèƒ½é¡žä¼¼æ¼æ–—,會收集軌é“上的物å“以åŠä¸Šæ–¹å®¹å™¨å…§çš„物å“。</value>
+</data>
+<data name="IDS_DESC_IRON_HORSE_ARMOR"><value>特殊護甲類型,å¯ä»¥è£åœ¨é¦¬ä¸Šã€‚æä¾› 5 護甲。</value>
+</data>
+<data name="IDS_DESC_GOLD_HORSE_ARMOR"><value>特殊護甲類型,å¯ä»¥è£åœ¨é¦¬ä¸Šã€‚æä¾› 7 護甲。</value>
+</data>
+<data name="IDS_DESC_DIAMOND_HORSE_ARMOR"><value>特殊護甲類型,å¯ä»¥è£åœ¨é¦¬ä¸Šã€‚æä¾› 11 護甲。</value>
+</data>
+<data name="IDS_DESC_LEAD"><value>用來將生物拴在玩家或柵欄柱</value>
+</data>
+<data name="IDS_DESC_NAME_TAG"><value>用來為世界上的生物命å。</value>
+</data>
<data name="IDS_DESC_BREAD"><value>å¯å›žå¾© 2.5 個 {*ICON_SHANK_01*}。</value>
</data>
<data name="IDS_DESC_CAKE"><value>使用 1 次å¯å›žå¾© 1 個 {*ICON_SHANK_01*},總共能使用 6 次。</value>
@@ -933,205 +1015,263 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_DESC_SKULL"><value>生物頭顱å¯ç•¶è£é£¾å“或當åšé¢å…·æˆ´åœ¨é ­ç›”空格中。</value>
</data>
+<data name="IDS_DESC_COMMAND_BLOCK"><value>用來執行指令。</value>
+ </data>
+<data name="IDS_DESC_BEACON"><value>æœå¤©ç©ºç™¼å°„å…‰æŸï¼Œè€Œä¸”能夠為附近玩家æä¾›ç‹€æ…‹æ•ˆæžœã€‚</value>
+ </data>
+<data name="IDS_DESC_CHEST_TRAP"><value>將方塊和物å“儲存在裡é¢ã€‚將兩個儲物箱並排在一起,å³å¯å»ºç«‹å…©å€å®¹é‡çš„大型儲物箱。陷阱儲物箱還會在開啟時建立紅石彈。</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_LIGHT"><value>æä¾›ç´…石彈,當æ¿ä¸Šçš„物å“越多,彈的力é‡è¶Šå¼·å¤§ã€‚</value>
+ </data>
+<data name="IDS_DESC_WEIGHTED_PLATE_HEAVY"><value>æä¾›ç´…石彈,æ¿ä¸Šç‰©å“越多越強大。相較於輕型æ¿å­ï¼Œéœ€è¦æ›´å¤šé‡é‡ã€‚</value>
+ </data>
+<data name="IDS_DESC_REDSTONE_BLOCK"><value>用來當æˆç´…石能æºã€‚å¯è£½ä½œé‚„原回紅石。</value>
+ </data>
+<data name="IDS_DESC_HOPPER"><value>用來接ä½ç‰©å“,或是將物å“é€é€²å®¹å™¨æˆ–從容器å–出。</value>
+ </data>
+<data name="IDS_DESC_ACTIVATOR_RAIL"><value>這種類型的軌é“能夠啟用或åœç”¨æ¼æ–—礦車,以åŠè§¸ç™¼ TNT 礦車。</value>
+ </data>
+<data name="IDS_DESC_DROPPER"><value>用來è£ç‰©å“åŠæ‰”下物å“,或是在ç²å¾—ç´…çŸ³å½ˆæ™‚ï¼Œå°‡ç‰©å“æŽ¨å…¥å¦ä¸€å€‹å®¹å™¨ã€‚</value>
+ </data>
+<data name="IDS_DESC_STAINED_CLAY"><value>為硬化é»åœŸæŸ“色,å³å¯è£½ä½œå½©è‰²æ–¹å¡Šã€‚</value>
+ </data>
+<data name="IDS_DESC_HAY"><value>能夠餵食馬ã€é©¢æˆ–騾,最多治癒 10 顆心。加快å°é¦¬å’Œå°é©¢ç”Ÿé•·çš„速度。</value>
+ </data>
+<data name="IDS_DESC_HARDENED_CLAY"><value>在熔çˆç†”é»åœŸå³å¯è£½é€ å‡ºä¾†ã€‚</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS"><value>用玻璃和染料製作。</value>
+ </data>
+<data name="IDS_DESC_STAINED_GLASS_PANE"><value>用彩繪玻璃製作</value>
+ </data>
+<data name="IDS_DESC_COAL_BLOCK"><value>儲存煤的壓縮方法。å¯ä»¥ç•¶åšçˆçš„燃料。</value>
+ </data>
<data name="IDS_SQUID"><value>çƒè³Š</value>
- </data>
+ </data>
<data name="IDS_DESC_SQUID"><value>被殺死時會掉è½å¢¨å›Šã€‚</value>
- </data>
+ </data>
<data name="IDS_COW"><value>乳牛</value>
- </data>
+ </data>
<data name="IDS_DESC_COW"><value>被殺死時會掉è½çš®é©ã€‚您也å¯ä»¥ç”¨æ¡¶å­ä¾†æ“ ç‰›å¥¶ã€‚</value>
- </data>
+ </data>
<data name="IDS_SHEEP"><value>綿羊</value>
- </data>
+ </data>
<data name="IDS_DESC_SHEEP"><value>被剪羊毛時會掉è½ç¾Šæ¯› (å‰ææ˜¯ç‰ çš„ç¾Šæ¯›é‚„æ²’è¢«å‰ªæŽ‰)ã€‚å¯æŸ“è‰²ä¾†è®“ç¶¿ç¾Šæ“æœ‰ä¸åŒè‰²å½©çš„羊毛。</value>
- </data>
+ </data>
<data name="IDS_CHICKEN"><value>雞</value>
- </data>
+ </data>
<data name="IDS_DESC_CHICKEN"><value>被殺死時會掉è½ç¾½æ¯›ï¼Œé‚„會隨機生蛋。</value>
- </data>
+ </data>
<data name="IDS_PIG"><value>豬</value>
- </data>
+ </data>
<data name="IDS_DESC_PIG"><value>被殺死時會掉è½è±¬è‚‰ã€‚您還å¯ä»¥ä½¿ç”¨éžåº§ä¾†é¨Žåœ¨è±¬ä¸Šã€‚</value>
- </data>
+ </data>
<data name="IDS_WOLF"><value>狼</value>
- </data>
+ </data>
<data name="IDS_DESC_WOLF"><value>狼是溫馴的動物,但當您攻擊牠時,牠就會攻擊您。您å¯ä»¥ä½¿ç”¨éª¨é ­ä¾†é¦´æœç‹¼ï¼Œé€™æœƒè®“牠跟著您走,並攻擊任何在攻擊您的æ±è¥¿ã€‚</value>
- </data>
+ </data>
<data name="IDS_CREEPER"><value>Creeper</value>
- </data>
+ </data>
<data name="IDS_DESC_CREEPER"><value>如果您é å¤ªè¿‘就會爆炸ï¼</value>
- </data>
+ </data>
<data name="IDS_SKELETON"><value>骷é«</value>
- </data>
+ </data>
<data name="IDS_DESC_SKELETON"><value>æœƒå°æ‚¨å°„箭,被殺死時會掉è½ç®­ã€‚</value>
- </data>
+ </data>
<data name="IDS_SPIDER"><value>蜘蛛</value>
- </data>
+ </data>
<data name="IDS_DESC_SPIDER"><value>如果您é è¿‘蜘蛛,牠就會攻擊您。蜘蛛會爬牆,被殺死時會掉è½çµ²ç·šã€‚</value>
- </data>
+ </data>
<data name="IDS_ZOMBIE"><value>æ®­å±</value>
- </data>
+ </data>
<data name="IDS_DESC_ZOMBIE"><value>如果您é è¿‘æ®­å±ï¼Œæ®­å±å°±æœƒæ”»æ“Šæ‚¨ã€‚</value>
- </data>
+ </data>
<data name="IDS_PIGZOMBIE"><value>æ®­å± Pigman</value>
- </data>
+ </data>
<data name="IDS_DESC_PIGZOMBIE"><value>æ®­å± Pigman æ˜¯æº«é¦´çš„æ€ªç‰©ï¼Œä½†å¦‚æžœæ‚¨æ”»æ“Šæ•´ç¾¤æ®­å± Pigman ä¸­çš„ä¸€å€‹ï¼Œæ•´ç¾¤æ®­å± Pigman 就會開始攻擊您。</value>
- </data>
+ </data>
<data name="IDS_GHAST"><value>Ghast</value>
- </data>
+ </data>
<data name="IDS_DESC_GHAST"><value>æœƒå°æ‚¨ç™¼å°„ç«çƒï¼Œè€Œä¸”ç«çƒç¢°åˆ°æ±è¥¿æ™‚會爆炸。</value>
- </data>
+ </data>
<data name="IDS_SLIME"><value>å²èŠå§†</value>
- </data>
+ </data>
<data name="IDS_DESC_SLIME"><value>å—å‚·å®³æ™‚æœƒåˆ†è£‚æˆæ•¸å€‹å°å²èŠå§†ã€‚</value>
- </data>
+ </data>
<data name="IDS_ENDERMAN"><value>Enderman</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERMAN"><value>如果您直視 Enderman,Enderman 就會攻擊您,而且還會到處移動方塊。</value>
- </data>
+ </data>
<data name="IDS_SILVERFISH"><value>Silverfish</value>
- </data>
+ </data>
<data name="IDS_DESC_SILVERFISH"><value>ç•¶ Silverfish å—到攻擊時,會引來躲在附近的 Silverfish。牠們會躲在石頭方塊中。</value>
- </data>
+ </data>
<data name="IDS_CAVE_SPIDER"><value>穴蜘蛛</value>
- </data>
+ </data>
<data name="IDS_DESC_CAVE_SPIDER"><value>æ“æœ‰æ¯’牙。</value>
- </data>
+ </data>
<data name="IDS_MUSHROOM_COW"><value>Mooshroom</value>
- </data>
+ </data>
<data name="IDS_DESC_MUSHROOM_COW"><value>與碗一起使用å¯ç”¨ä¾†ç‡‰è˜‘è‡ï¼Œå‰ªæ¯›å¾ŒæœƒæŽ‰è½è˜‘è‡ï¼Œä¸”æœƒè®Šæˆæ™®é€šçš„乳牛。</value>
- </data>
+ </data>
<data name="IDS_SNOWMAN"><value>雪人</value>
- </data>
+ </data>
<data name="IDS_DESC_SNOWMAN"><value>玩家å¯ç”¨ç™½é›ªæ–¹å¡Šå’Œå—瓜製作雪人。雪人會å°è£½ä½œè€…的敵人投擲雪çƒã€‚</value>
- </data>
+ </data>
<data name="IDS_ENDERDRAGON"><value>終界é¾</value>
- </data>
+ </data>
<data name="IDS_DESC_ENDERDRAGON"><value>這是出ç¾åœ¨çµ‚界的巨大黑é¾ã€‚</value>
- </data>
+ </data>
<data name="IDS_BLAZE"><value>Blaze</value>
- </data>
+ </data>
<data name="IDS_DESC_BLAZE"><value>Blaze 是地ç„裡的敵人,絕大部分皆分布在地ç„è¦å¡žä¸­ã€‚ç•¶ Blaze è¢«æ®ºæ­»æ™‚æœƒæŽ‰è½ Blaze 棒。</value>
- </data>
+ </data>
<data name="IDS_LAVA_SLIME"><value>熔岩怪</value>
- </data>
+ </data>
<data name="IDS_DESC_LAVA_SLIME"><value>ç†”å²©æ€ªå‡ºç¾æ–¼åœ°ç„,被殺死時會分裂æˆå¾ˆå¤šå°ç†”岩怪,這點跟å²è˜­å§†å¾ˆåƒã€‚</value>
- </data>
+ </data>
<data name="IDS_VILLAGER"><value>æ‘æ°‘</value>
- </data>
+ </data>
<data name="IDS_OZELOT"><value>豹貓</value>
- </data>
+ </data>
<data name="IDS_DESC_OZELOT"><value>åˆ†å¸ƒåœ¨ç†±å¸¶å¢æž—中,餵生魚就能馴æœç‰ å€‘ã€‚ä½†å‰ææ˜¯å¿…é ˆè®“è±¹è²“é è¿‘您,畢竟任何一個çªç„¶çš„動作都會嚇跑牠們。</value>
- </data>
+ </data>
<data name="IDS_IRONGOLEM"><value>éµå‚€å„¡</value>
- </data>
+ </data>
<data name="IDS_DESC_IRONGOLEM"><value>出ç¾ä¾†ä¿è­·æ‘è½ï¼Œå¯ä»¥ç”¨éµå¡Šè·Ÿå—瓜製作。</value>
- </data>
-<data name="IDS_CREDITS_EXPLODANIM"><value>Explosives Animator</value>
+ </data>
+<data name="IDS_BAT"><value>è™è </value>
+ </data>
+<data name="IDS_DESC_BAT"><value>這些飛行生物居ä½åœ¨æ´žçªŸæˆ–其他大型å°é–‰ç©ºé–“。</value>
+ </data>
+<data name="IDS_WITCH"><value>女巫</value>
+ </data>
+<data name="IDS_DESC_WITCH"><value>這些敵人居ä½åœ¨æ²¼æ¾¤ï¼Œå¥¹å€‘會投擲藥水攻擊您。當您殺死她們,藥水就會掉下來。</value>
+ </data>
+<data name="IDS_HORSE"><value>馬</value>
+ </data>
+<data name="IDS_DESC_HORSE"><value>這些動物能夠馴æœï¼ŒæŽ¥è‘—便å¯ä¾›é¨Žä¹˜ã€‚</value>
+ </data>
+<data name="IDS_DONKEY"><value>é©¢</value>
+ </data>
+<data name="IDS_DESC_DONKEY"><value>這些動物能夠馴æœï¼ŒæŽ¥è‘—便å¯ä¾›é¨Žä¹˜ï¼Œè€Œä¸”å¯ä»¥è£ä¸Šå„²ç‰©ç®±ã€‚</value>
+ </data>
+<data name="IDS_MULE"><value>騾</value>
+ </data>
+<data name="IDS_DESC_MULE"><value>馬和驢的後代。這些動物能夠被馴æœï¼ŒæŽ¥è‘—便å¯ä¾›äººé¨Žä¹˜ã€ç©¿æˆ´è­·ç”²ä¸¦æ”œå¸¶å„²ç‰©ç®±ã€‚</value>
+ </data>
+<data name="IDS_ZOMBIE_HORSE"><value>æ®­å±é¦¬</value>
+ </data>
+<data name="IDS_SKELETON_HORSE"><value>骷é«é¦¬</value>
+ </data>
+<data name="IDS_WITHER"><value>凋零怪</value>
+ </data>
+<data name="IDS_DESC_WITHER"><value>製作原料包括凋零骷é«é ­å’Œéˆé­‚æ²™ï¼Œä»–å€‘æœƒæœæ‚¨ç™¼å°„爆炸骷é«é ­ã€‚</value>
+ </data>
+<data name="IDS_CREDITS_EXPLODANIM"><value>爆炸動畫繪製者</value>
</data>
-<data name="IDS_CREDITS_CONCEPTART"><value>Concept Artist</value>
+<data name="IDS_CREDITS_CONCEPTART"><value>概念è—è¡“å®¶</value>
</data>
-<data name="IDS_CREDITS_CRUNCHER"><value>Number Crunching and Statistics</value>
+<data name="IDS_CREDITS_CRUNCHER"><value>數字é‹ç®—與統計數據</value>
</data>
-<data name="IDS_CREDITS_BULLYCOORD"><value>Bully Coordinator</value>
+<data name="IDS_CREDITS_BULLYCOORD"><value>欺負å”調者</value>
</data>
-<data name="IDS_CREDITS_ORIGINALDESIGN"><value>Original Design and Code by</value>
+<data name="IDS_CREDITS_ORIGINALDESIGN"><value>原始設計與編碼者</value>
</data>
-<data name="IDS_CREDITS_PMPROD"><value>Project Manager/Producer</value>
+<data name="IDS_CREDITS_PMPROD"><value>專案經ç†/製作者</value>
</data>
-<data name="IDS_CREDITS_RESTOFMOJANG"><value>Rest of Mojang Office</value>
+<data name="IDS_CREDITS_RESTOFMOJANG"><value>其餘 Mojang 辦公室</value>
</data>
-<data name="IDS_CREDITS_LEADPC"><value>Lead Game Programmer Minecraft PC</value>
+<data name="IDS_CREDITS_LEADPC"><value>é ˜å°ŽéŠæˆ²ç¨‹å¼è¨­è¨ˆå¸« Minecraft PC</value>
</data>
-<data name="IDS_CREDITS_CODENINJA"><value>Ninja Coder</value>
+<data name="IDS_CREDITS_CODENINJA"><value>Ninja 程å¼ç·¨ç¢¼è€…</value>
</data>
-<data name="IDS_CREDITS_CEO"><value>CEO</value>
+<data name="IDS_CREDITS_CEO"><value>首席執行長</value>
</data>
-<data name="IDS_CREDITS_WCW"><value>White Collar Worker</value>
+<data name="IDS_CREDITS_WCW"><value>白領勞工</value>
</data>
-<data name="IDS_CREDITS_CUSTOMERSUPPORT"><value>Customer Support</value>
+<data name="IDS_CREDITS_CUSTOMERSUPPORT"><value>客戶支æ´</value>
</data>
-<data name="IDS_CREDITS_OFFICEDJ"><value>Office DJ</value>
+<data name="IDS_CREDITS_OFFICEDJ"><value>辦公室 DJ</value>
</data>
-<data name="IDS_CREDITS_DESPROG"><value>Designer/Programmer Minecraft - Pocket Edition</value>
+<data name="IDS_CREDITS_DESPROG"><value>設計者/程å¼è¨­è¨ˆå¸« Minecraft - 袖ç版</value>
</data>
-<data name="IDS_CREDITS_DEVELOPER"><value>Developer</value>
+<data name="IDS_CREDITS_DEVELOPER"><value>開發者</value>
</data>
-<data name="IDS_CREDITS_CHIEFARCHITECT"><value>Chief Architect</value>
+<data name="IDS_CREDITS_CHIEFARCHITECT"><value>首席建築師</value>
</data>
-<data name="IDS_CREDITS_ARTDEVELOPER"><value>Art Developer</value>
+<data name="IDS_CREDITS_ARTDEVELOPER"><value>è—術開發者</value>
</data>
-<data name="IDS_CREDITS_GAMECRAFTER"><value>Game Crafter</value>
+<data name="IDS_CREDITS_GAMECRAFTER"><value>éŠæˆ²åŠ å·¥è€…</value>
</data>
-<data name="IDS_CREDITS_DOF"><value>Director of Fun</value>
+<data name="IDS_CREDITS_DOF"><value>有趣董事</value>
</data>
-<data name="IDS_CREDITS_MUSICANDSOUNDS"><value>Music and Sounds</value>
+<data name="IDS_CREDITS_MUSICANDSOUNDS"><value>音樂與è²éŸ³</value>
</data>
-<data name="IDS_CREDITS_PROGRAMMING"><value>Programming</value>
+<data name="IDS_CREDITS_PROGRAMMING"><value>程å¼è¨­è¨ˆ</value>
</data>
-<data name="IDS_CREDITS_ART"><value>Art</value>
+<data name="IDS_CREDITS_ART"><value>è—è¡“</value>
</data>
<data name="IDS_CREDITS_QA"><value>QA</value>
</data>
-<data name="IDS_CREDITS_EXECPRODUCER"><value>Executive Producer</value>
+<data name="IDS_CREDITS_EXECPRODUCER"><value>執行製作者</value>
</data>
-<data name="IDS_CREDITS_LEADPRODUCER"><value>Lead Producer</value>
+<data name="IDS_CREDITS_LEADPRODUCER"><value>主管製作者</value>
</data>
-<data name="IDS_CREDITS_PRODUCER"><value>Producer</value>
+<data name="IDS_CREDITS_PRODUCER"><value>製作者</value>
</data>
-<data name="IDS_CREDITS_TESTLEAD"><value>Test Lead</value>
+<data name="IDS_CREDITS_TESTLEAD"><value>測試主管</value>
</data>
-<data name="IDS_CREDITS_LEADTESTER"><value>Lead Tester</value>
+<data name="IDS_CREDITS_LEADTESTER"><value>主管測試員</value>
</data>
-<data name="IDS_CREDITS_DESIGNTEAM"><value>Design Team</value>
+<data name="IDS_CREDITS_DESIGNTEAM"><value>設計團隊</value>
</data>
-<data name="IDS_CREDITS_DEVELOPMENTTEAM"><value>Development Team</value>
+<data name="IDS_CREDITS_DEVELOPMENTTEAM"><value>開發團隊</value>
</data>
-<data name="IDS_CREDITS_RELEASEMANAGEMENT"><value>Release Management</value>
+<data name="IDS_CREDITS_RELEASEMANAGEMENT"><value>發布管ç†</value>
</data>
-<data name="IDS_CREDITS_XBLADIRECTOR"><value>Director, XBLA Publishing</value>
+<data name="IDS_CREDITS_XBLADIRECTOR"><value>董事, XBLA 公佈</value>
</data>
-<data name="IDS_CREDITS_BIZDEV"><value>Business Development</value>
+<data name="IDS_CREDITS_BIZDEV"><value>業務開發</value>
</data>
-<data name="IDS_CREDITS_PORTFOLIODIRECTOR"><value>Portfolio Director</value>
+<data name="IDS_CREDITS_PORTFOLIODIRECTOR"><value>投資董事</value>
</data>
-<data name="IDS_CREDITS_PRODUCTMANAGER"><value>Product Manager</value>
+<data name="IDS_CREDITS_PRODUCTMANAGER"><value>製作經ç†</value>
</data>
-<data name="IDS_CREDITS_MARKETING"><value>Marketing</value>
+<data name="IDS_CREDITS_MARKETING"><value>行銷</value>
</data>
-<data name="IDS_CREDITS_COMMUNITYMANAGER"><value> Community Manager</value>
+<data name="IDS_CREDITS_COMMUNITYMANAGER"><value>社群經ç†</value>
</data>
-<data name="IDS_CREDITS_EUROPELOC"><value>Europe Localization Team</value>
+<data name="IDS_CREDITS_EUROPELOC"><value>æ­æ´²åœ¨åœ°åŒ–團隊</value>
</data>
-<data name="IDS_CREDITS_REDMONDLOC"><value>Redmond Localization Team</value>
+<data name="IDS_CREDITS_REDMONDLOC"><value>Redmond 在地化團隊</value>
</data>
-<data name="IDS_CREDITS_ASIALOC"><value>Asia Localization Team</value>
+<data name="IDS_CREDITS_ASIALOC"><value>亞洲在地化團隊</value>
</data>
-<data name="IDS_CREDITS_USERRESEARCH"><value>User Research Team</value>
+<data name="IDS_CREDITS_USERRESEARCH"><value>使用者研究團隊</value>
</data>
-<data name="IDS_CREDITS_MGSCENTRAL"><value>MGS Central Teams</value>
+<data name="IDS_CREDITS_MGSCENTRAL"><value>MGS 中心團隊</value>
</data>
-<data name="IDS_CREDITS_MILESTONEACCEPT"><value>Milestone Acceptance Tester</value>
+<data name="IDS_CREDITS_MILESTONEACCEPT"><value>里程碑驗收測試員</value>
</data>
-<data name="IDS_CREDITS_SPECIALTHANKS"><value>Special Thanks</value>
+<data name="IDS_CREDITS_SPECIALTHANKS"><value>特別感è¬</value>
</data>
-<data name="IDS_CREDITS_TESTMANAGER"><value>Test Manager</value>
+<data name="IDS_CREDITS_TESTMANAGER"><value>測試經ç†</value>
</data>
-<data name="IDS_CREDITS_SRTESTLEAD"><value>Senior Test Lead</value>
+<data name="IDS_CREDITS_SRTESTLEAD"><value>資深測試主管</value>
</data>
<data name="IDS_CREDITS_SDET"><value>SDET</value>
</data>
-<data name="IDS_CREDITS_PROJECT"><value>Project STE</value>
+<data name="IDS_CREDITS_PROJECT"><value>專案 STE</value>
</data>
-<data name="IDS_CREDITS_ADDITIONALSTE"><value>Additional STE</value>
+<data name="IDS_CREDITS_ADDITIONALSTE"><value>å…¶ä»– STE</value>
</data>
-<data name="IDS_CREDITS_TESTASSOCIATES"><value>Test Associates</value>
+<data name="IDS_CREDITS_TESTASSOCIATES"><value>測試相關</value>
</data>
<data name="IDS_CREDITS_JON_KAGSTROM"><value>Jon Kagstrom</value>
</data>
-<data name="IDS_CREDITS_TOBIAS_MOLLSTAM"><value>Tobias Mollstam</value>
+<data name="IDS_CREDITS_TOBIAS_MOLLSTAM"><value>Tobias Möllstam</value>
</data>
-<data name="IDS_CREDITS_RISE_LUGO"><value>Rise Lugo</value>
+<data name="IDS_CREDITS_RISE_LUGO"><value>Risë Lugo</value>
</data>
<data name="IDS_ITEM_SWORD_WOOD"><value>木åŠ</value>
</data>
@@ -1373,6 +1513,8 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_ITEM_MAP"><value>地圖</value>
</data>
+<data name="IDS_ITEM_MAP_EMPTY"><value>空白地圖</value>
+ </data>
<data name="IDS_ITEM_RECORD_01"><value>唱片:13</value>
</data>
<data name="IDS_ITEM_RECORD_02"><value>唱片:Cat</value>
@@ -1475,6 +1617,28 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_ITEM_SKULL_CREEPER"><value>Creeper 頭顱</value>
</data>
+<data name="IDS_NETHER_STAR"><value>幽冥星</value>
+ </data>
+<data name="IDS_FIREWORKS"><value>ç…™ç«ç«ç®­</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE"><value>ç…™ç«æ˜Ÿ</value>
+ </data>
+<data name="IDS_ITEM_COMPARATOR"><value>紅石比較器</value>
+ </data>
+<data name="IDS_ITEM_MINECART_TNT"><value>TNT 礦車</value>
+ </data>
+<data name="IDS_ITEM_MINECART_HOPPER"><value>æ¼æ–—礦車</value>
+ </data>
+<data name="IDS_ITEM_IRON_HORSE_ARMOR"><value>éµé¦¬éާ</value>
+ </data>
+<data name="IDS_ITEM_GOLD_HORSE_ARMOR"><value>黃金馬鎧</value>
+ </data>
+<data name="IDS_ITEM_DIAMOND_HORSE_ARMOR"><value>鑽石馬鎧</value>
+ </data>
+<data name="IDS_ITEM_LEAD"><value>繩索</value>
+ </data>
+<data name="IDS_ITEM_NAME_TAG"><value>å牌</value>
+ </data>
<data name="IDS_TILE_STONE"><value>石頭</value>
</data>
<data name="IDS_TILE_GRASS"><value>é’è‰æ–¹å¡Š</value>
@@ -1491,6 +1655,8 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_TILE_JUNGLE_PLANKS"><value>ç†±å¸¶å¢æž—厚木æ¿</value>
</data>
+<data name="IDS_TILE_PLANKS"><value>木æåŽšæœ¨æ¿ (任何類型)</value>
+ </data>
<data name="IDS_TILE_SAPLING"><value>樹苗</value>
</data>
<data name="IDS_TILE_SAPLING_OAK"><value>橡樹樹苗</value>
@@ -1827,6 +1993,193 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_TILE_SKULL"><value>骷é«</value>
</data>
+<data name="IDS_TILE_COMMAND_BLOCK"><value>指令方塊</value>
+ </data>
+<data name="IDS_TILE_BEACON"><value>燈塔</value>
+ </data>
+<data name="IDS_TILE_CHEST_TRAP"><value>陷阱儲物箱</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_LIGHT"><value>測é‡å£“力æ¿ï¼ˆè¼•型)</value>
+ </data>
+<data name="IDS_TILE_WEIGHTED_PLATE_HEAVY"><value>測é‡å£“力æ¿ï¼ˆé‡åž‹ï¼‰</value>
+ </data>
+<data name="IDS_TILE_COMPARATOR"><value>紅石比較器</value>
+ </data>
+<data name="IDS_TILE_DAYLIGHT_DETECTOR"><value>陽光感測器</value>
+ </data>
+<data name="IDS_TILE_REDSTONE_BLOCK"><value>紅石方塊</value>
+ </data>
+<data name="IDS_TILE_HOPPER"><value>æ¼æ–—</value>
+ </data>
+<data name="IDS_TILE_ACTIVATOR_RAIL"><value>啟動éµè»Œ</value>
+ </data>
+<data name="IDS_TILE_DROPPER"><value>投擲器</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY"><value>染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_HAY"><value>ä¹¾è‰æ†</value>
+ </data>
+<data name="IDS_TILE_HARDENED_CLAY"><value>硬化é»åœŸ</value>
+ </data>
+<data name="IDS_TILE_COAL"><value>煤炭塊</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLACK"><value>黑色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_RED"><value>紅色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GREEN"><value>綠色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BROWN"><value>棕色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_BLUE"><value>è—色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PURPLE"><value>紫色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_CYAN"><value>é’綠色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_SILVER"><value>æ·ºç°è‰²æŸ“色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_GRAY"><value>ç°è‰²æŸ“色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_PINK"><value>粉紅色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIME"><value>淡黃綠色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_YELLOW"><value>黃色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_LIGHT_BLUE"><value>æ·ºè—色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_MAGENTA"><value>洋紅色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_ORANGE"><value>橘色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_CLAY_WHITE"><value>白色染色é»åœŸå¡Š</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS"><value>彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLACK"><value>黑色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_RED"><value>紅色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GREEN"><value>綠色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BROWN"><value>棕色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_BLUE"><value>è—色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PURPLE"><value>紫色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_CYAN"><value>é’綠色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_SILVER"><value>æ·ºç°è‰²å½©ç¹ªçŽ»ç’ƒ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_GRAY"><value>ç°è‰²å½©ç¹ªçŽ»ç’ƒ</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PINK"><value>粉紅色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIME"><value>淡黃綠色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_YELLOW"><value>黃色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_LIGHT_BLUE"><value>æ·ºè—色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_MAGENTA"><value>洋紅色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_ORANGE"><value>橘色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_WHITE"><value>白色彩繪玻璃</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE"><value>彩繪玻璃窗格
+</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLACK"><value>黑色彩繪玻璃窗格
+</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_RED"><value>紅色彩繪玻璃窗格
+</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GREEN"><value>綠色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BROWN"><value>棕色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_BLUE"><value>è—色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PURPLE"><value>紫色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_CYAN"><value>é’綠色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_SILVER"><value>æ·ºç°è‰²å½©ç¹ªçŽ»ç’ƒçª—æ ¼</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_GRAY"><value>ç°è‰²å½©ç¹ªçŽ»ç’ƒçª—æ ¼</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_PINK"><value>粉紅色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIME"><value>淡黃綠色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_YELLOW"><value>黃色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE"><value>æ·ºè—色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_MAGENTA"><value>洋紅色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_ORANGE"><value>橘色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_TILE_STAINED_GLASS_PANE_WHITE"><value>白色彩繪玻璃窗格</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_0"><value>å°çƒ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_1"><value>大çƒ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_2"><value>星型</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_3"><value>Creeper åž‹</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE_4"><value>爆裂</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TYPE"><value>䏿˜Žå½¢ç‹€</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLACK"><value>黑色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_RED"><value>紅色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GREEN"><value>綠色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BROWN"><value>棕色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_BLUE"><value>è—色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PURPLE"><value>紫色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CYAN"><value>é’綠色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_SILVER"><value>æ·ºç°è‰²</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_GRAY"><value>ç°è‰²</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_PINK"><value>粉紅色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIME"><value>淡黃綠色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_YELLOW"><value>黃色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_LIGHT_BLUE"><value>æ·ºè—色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_MAGENTA"><value>洋紅色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_ORANGE"><value>橘色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_WHITE"><value>白色</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_CUSTOM"><value>自訂</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FADE_TO"><value>淡化</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_FLICKER"><value>é–ƒçˆ</value>
+ </data>
+<data name="IDS_FIREWORKS_CHARGE_TRAIL"><value>éµè»Œ</value>
+ </data>
+<data name="IDS_ITEM_FIREWORKS_FLIGHT"><value>戰鬥æŒçºŒæ™‚間:</value>
+ </data>
<data name="IDS_CURRENT_LAYOUT"><value>ç›®å‰çš„æŽ§åˆ¶æ–¹å¼</value>
</data>
<data name="IDS_CONTROLS_LAYOUT"><value>é…ç½®</value>
@@ -2004,8 +2357,7 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_TUTORIAL_TASK_INV_OVERVIEW"><value>
é€™æ˜¯æ‚¨çš„ç‰©å“æ¬„。這裡會顯示å¯åœ¨æ‚¨æ‰‹ä¸­ä½¿ç”¨çš„物å“ï¼Œä»¥åŠæ‚¨èº«ä¸Šçš„æ‰€æœ‰å…¶ä»–物å“。您穿戴的護甲也會顯示在這裡。
- </value>
- </data>
+ </value></data>
<data name="IDS_TUTORIAL_PROMPT_INV_OVERVIEW"><value>{*B*}
請按下 {*CONTROLLER_VK_A*} 來繼續。{*B*}
å¦‚æžœæ‚¨å·²ç¶“äº†è§£ç‰©å“æ¬„的使用方å¼ï¼Œè«‹æŒ‰ä¸‹ {*CONTROLLER_VK_B*}。
@@ -2026,7 +2378,7 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_INFO"><value>
- å¦‚æžœæ‚¨æƒ³çŸ¥é“æŸå€‹ç‰©å“的詳細資訊,åªè¦æŠŠæ¸¸æ¨™ç§»å‹•到該物å“上é¢ï¼Œç„¶å¾ŒæŒ‰ä¸‹ {*CONTROLLER_VK_RT*} å³å¯ã€‚
+ å¦‚æžœæ‚¨æƒ³çŸ¥é“æŸå€‹ç‰©å“的詳細資訊,åªè¦æŠŠæ¸¸æ¨™ç§»å‹•到該物å“上é¢ï¼Œç„¶å¾ŒæŒ‰ä¸‹{*CONTROLLER_ACTION_MENU_PAGEDOWN*}å³å¯ã€‚
</value>
</data>
<data name="IDS_TUTORIAL_TASK_INV_EXIT"><value>
@@ -2060,7 +2412,7 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_INFO"><value>
- å¦‚æžœæ‚¨æƒ³çŸ¥é“æŸå€‹ç‰©å“的詳細資訊,åªè¦æŠŠæ¸¸æ¨™ç§»å‹•到該物å“上é¢ï¼Œç„¶å¾ŒæŒ‰ä¸‹ {*CONTROLLER_VK_RT*} å³å¯ã€‚
+ å¦‚æžœæ‚¨æƒ³çŸ¥é“æŸå€‹ç‰©å“的詳細資訊,åªè¦æŠŠæ¸¸æ¨™ç§»å‹•到該物å“上é¢ï¼Œç„¶å¾ŒæŒ‰ä¸‹{*CONTROLLER_ACTION_MENU_PAGEDOWN*}å³å¯ã€‚
</value>
</data>
<data name="IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT"><value>
@@ -2606,6 +2958,211 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
如果您已經了解食物列的使用方å¼ï¼Œä»¥åŠåƒæ±è¥¿çš„æ–¹æ³•,請按下 {*CONTROLLER_VK_B*} 。
</value>
</data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW"><value>
+ é€™æ˜¯é¦¬çš„ç‰©å“æ¬„介é¢ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW"><value>
+ {*B*}按下{*CONTROLLER_VK_A*} 繼續。
+ {*B*}如果您已經知é“å¦‚ä½•ä½¿ç”¨é¦¬ç‰©å“æ¬„,請按下{*CONTROLLER_VK_B*}。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT"><value>
+ é¦¬ç‰©å“æ¬„èƒ½è®“æ‚¨å‚³é€æˆ–安è£ç‰©å“至馬ã€é©¢æˆ–騾身上。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT"><value>
+ 在馬éžç©ºæ ¼æ”¾ç½®é¦¬éžï¼Œå³å¯ç‚ºé¦¬è£ä¸Šé¦¬éžã€‚在護甲空格放置馬護甲,å³å¯ç‚ºé¦¬è£ä¸Šè­·ç”²ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS"><value>
+ 您還å¯ä»¥åœ¨é€™å€‹é¸å–®ä¸­ï¼Œæ–¼è‡ªå·±çš„ç‰©å“æ¬„與ç¶åœ¨é©¢å’Œé¨¾çš„éžå›Šä¹‹é–“傳é€ç‰©å“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_OVERVIEW"><value>您發ç¾äº†ä¸€åŒ¹é¦¬ã€‚</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_DONKEY_OVERVIEW"><value>您發ç¾äº†ä¸€åŒ¹é©¢ã€‚</value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_MULE_OVERVIEW"><value>您發ç¾äº†ä¸€åŒ¹é¨¾ã€‚</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW"><value>
+ {*B*}按下{*CONTROLLER_VK_A*} 進一步瞭解馬ã€é©¢å’Œé¨¾ã€‚
+ {*B*}如果您已經瞭解馬ã€é©¢å’Œé¨¾ï¼Œè«‹æŒ‰ä¸‹{*CONTROLLER_VK_B*}。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_INTRO"><value>
+ 馬和驢居ä½åœ¨é–‹é—Šçš„平原。驢和馬交é…å³å¯ç”¢ä¸‹é¨¾ï¼Œä½†æ˜¯æœ¬èº«ä¸å…·ç”Ÿè‚²èƒ½åŠ›ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_PURPOSE"><value>
+ 所有æˆå¹´çš„馬ã€é©¢å’Œé¨¾éƒ½å¯ä¾›é¨Žä¹˜ï¼Œä½†æ˜¯åªæœ‰é¦¬èƒ½å¤ ç©¿ä¸Šè­·ç”²ï¼Œåªæœ‰é¨¾å’Œé©¢å¯ä»¥è£ä¸Šéžå›Šé‹è¼¸ç‰©å“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING"><value>
+ 馬ã€é©¢å’Œé¨¾å¿…é ˆå…ˆé¦´æœæ‰å ªç”¨ã€‚馴æœé¦¬çš„æ–¹å¼æ˜¯é¨Žä¸ŠåŽ»ï¼ŒéŽç¨‹ä¸­é¦¬æœƒæƒ³è¾¦æ³•將騎士摔下馬背,騎士必須想辦法留在馬背上。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_TAMING2"><value>
+ 當愛心出ç¾åœ¨é¦¬çš„å‘¨åœæ™‚,牠已經被馴æœï¼Œå†ä¹Ÿä¸æœƒæŠŠçŽ©å®¶æ‘”ä¸‹é¦¬èƒŒã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_RIDE"><value>
+ 馬上嘗試騎這匹馬。手上ä¸è¦æ‹¿ç‰©å“或工具,使用 {*CONTROLLER_ACTION_USE*} 騎上馬背。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLES"><value>
+ 您必須幫馬è£ä¸Šé¦¬éžï¼Œæ‰èƒ½æ“縱馬的方å‘。馬éžå¯ä»¥å‘æ‘æ°‘購買,或是從è—在世界中的儲物箱尋找。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS"><value>
+ è£ä¸Šå„²ç‰©ç®±ï¼Œå°±èƒ½ç‚ºé¦´æœçš„驢和騾加éžå›Šã€‚騎乘或潛行時就能使用這些éžå›Šã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_BREEDING"><value>
+ 餵食金蘋果或金蘿蔔å³å¯ç¹æ®–馬和驢,就åƒç¹æ®–其他動物一樣(但是騾ä¸è¡Œï¼‰ã€‚å°é¦¬ç¶“éŽä¸€æ®µæ™‚é–“å°±æœƒé•·æˆæˆå¹´é¦¬ï¼Œä¸éŽå¦‚果餵食å°éº¥æˆ–ä¹¾è‰å°±æœƒåŠ é€Ÿé•·å¤§ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HORSE_AREA"><value>
+ 您å¯ä»¥å˜—試在這裡馴æœé¦¬å’Œé©¢ï¼Œé€™è£¡é™„近的儲物箱裡é¢ï¼Œé‚„有馬éžã€é¦¬éާåŠå…¶ä»–實用的馬相關物å“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW"><value>
+ 這是燈塔介é¢ï¼Œå¯ç”¨ä¾†é¸æ“‡ç‡ˆå¡”è¦æŽˆèˆ‡å“ªç¨®åŠ›é‡ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW"><value>
+ {*B*}按下{*CONTROLLER_VK_A*} 繼續。
+ {*B*}如果您已經知é“如何使用燈塔介é¢ï¼Œè«‹æŒ‰ä¸‹{*CONTROLLER_VK_B*}。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS"><value>
+ 您å¯ä»¥åœ¨ç‡ˆå¡”é¸å–®ä¸­ï¼Œç‚ºç‡ˆå¡”é¸å–一種主è¦çš„力é‡ã€‚金字塔越多層,å¯ä¾›é¸æ“‡çš„力é‡è¶Šå¤šã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER"><value>
+ è‡³å°‘æœ‰å››å±¤çš„é‡‘å­—å¡”ä¸Šçš„ç‡ˆå¡”ï¼Œé‚„èƒ½å¤ è®“æ‚¨é¸æ“‡å†ç”Ÿæ¬¡è¦åЛ釿ˆ–是更強大的主è¦åŠ›é‡ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION"><value>
+ 您必須在付費空格奉上翡翠ã€é‘½çŸ³ã€é»ƒé‡‘或éµå¡Šï¼Œæ‰èƒ½è¨­å®šç‡ˆå¡”的力é‡ã€‚è¨­å®šå¾Œï¼Œç‡ˆå¡”å°±æœƒç„¡é™æœŸç™¼å‡ºåŠ›é‡ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_OVERVIEW"><value>這座金字塔上方有åœç”¨çš„燈塔。</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW"><value>
+ {*B*}按下{*CONTROLLER_VK_A*} 進一步瞭解燈塔。
+ {*B*}如果您已經瞭解燈塔,請按下{*CONTROLLER_VK_B*}。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_PURPOSE"><value>
+ 啟動的燈塔會å‘天空投射明亮的光æŸï¼Œè³¦äºˆé™„近的玩家力é‡ã€‚è£½ä½œç‡ˆå¡”çš„ææ–™åŒ…括玻璃ã€é»‘曜石和幽冥星,擊敗凋零怪å³å¯ç²å¾—。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_DESIGN"><value>
+ 燈塔必須放置,白天æ‰èƒ½åœ¨æ²æµ´åœ¨é™½å…‰ä¹‹ä¸‹ã€‚燈塔必須放置於éµã€é»ƒé‡‘ã€ç¿¡ç¿ æˆ–鑽石金字塔上,ä¸éŽé¸æ“‡çš„ææ–™ä¸æœƒå½±éŸ¿ç‡ˆå¡”的力é‡ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS"><value>
+ 嘗試用燈塔設定它所賦予的力é‡ï¼Œæ‚¨å¯ä»¥æ‹¿éš¨é™„éµå¡Šæ”¯ä»˜å¿…è¦è²»ç”¨ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OVERVIEW"><value>é€™å€‹æˆ¿é–“å…§æœ‰æ¼æ–—</value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW"><value>
+ {*B*}按下{*CONTROLLER_VK_A*} é€²ä¸€æ­¥çž­è§£æ¼æ–—。
+ {*B*}å¦‚æžœæ‚¨å·²ç¶“çž­è§£æ¼æ–—,請按下{*CONTROLLER_VK_B*}。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_PURPOSE"><value>
+ 您å¯ä»¥ä½¿ç”¨æ¼æ–—å°‡ç‰©å“æ’入容器或是從容器移除物å“,以åŠè‡ªå‹•拾å–丟入容器的物å“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_CONTAINERS"><value>
+ æ¼æ–—能夠影響釀造å°ã€å„²ç‰©ç®±ã€ç™¼å°„å™¨ã€æŠ•æ“²å™¨ã€é‹è¼¸ç¤¦è»Šã€æ¼æ–—礦車åŠå…¶ä»–æ¼æ–—。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_MECHANICS"><value>
+ æ¼æ–—會一直嘗試從放在上方的åˆé©å®¹å™¨å¸å–物å“ï¼Œé‚„æœƒå˜—è©¦å°‡å„²å­˜çš„ç‰©å“æ’入輸出容器。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_REDSTONE"><value>
+ ç„¶è€Œï¼Œå¦‚æžœæ¼æ–—是用紅石發電就會åœç”¨ï¼Œä¸¦ä¸”åœæ­¢å¸å–å’Œæ’入物å“。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_OUTPUT"><value>
+ æ¼æ–—會指å‘嘗試輸出物å“的方å‘。若è¦è®“æ¼æ–—指å‘ç‰¹å®šæ–¹å¡Šï¼Œæ½›è¡Œæ™‚å°‡æ¼æ–—放在背å°è©²æ–¹å¡Šçš„ä½ç½®å³å¯ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_HOPPER_AREA"><value>
+ 在這個房間裡é¢ï¼Œæœ‰å¥½å¹¾ç¨®å¯¦ç”¨çš„æ¼æ–—é…置供您åƒè€ƒèˆ‡å¯¦é©—。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW"><value>
+ 這是煙ç«ä»‹é¢ï¼Œå¯ä»¥ç”¨ä¾†è£½ä½œç…™ç«å’Œç…™ç«æ˜Ÿã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW"><value>
+ {*B*}按下{*CONTROLLER_VK_A*} 繼續。
+ {*B*}如果您已經知é“如何使用燈塔介é¢ï¼Œè«‹æŒ‰ä¸‹{*CONTROLLER_VK_B*}。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START"><value>
+ \è‹¥è¦è£½ä½œç…™ç«ï¼Œè«‹å°‡ç«è—¥å’Œç´™æ”¾åœ¨åº«å­˜ä¸Šæ–¹çš„ 3x3 工作å°ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS"><value>
+ \您å¯ä»¥é¸æ“‡åœ¨å·¥ä½œå°æ”¾ç½®å¤šé¡†ç…™ç«æ˜Ÿï¼ŒåŠ å…¥ç…™ç«ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT"><value>
+ 用ç«è—¥åœ¨å·¥ä½œå°å¡«æ»¿çš„ç©ºæ ¼è¶Šå¤šï¼Œæ‰€æœ‰ç…™ç«æ˜Ÿæœƒçˆ†ç‚¸çš„高度越高。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT"><value>
+ 然後等您想製作時,便å¯å¾žè¼¸å‡ºç©ºæ ¼å–出製作的煙ç«ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START"><value>
+ å°‡ç«è—¥å’ŒæŸ“料放進工作å°ï¼Œå³å¯è£½ä½œç…™ç«æ˜Ÿã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR"><value>
+ æŸ“æ–™æœƒæ±ºå®šç…™ç«æ˜Ÿçˆ†ç‚¸çš„é¡è‰²ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE"><value>
+ ç…™ç«æ˜Ÿçš„å½¢ç‹€å–æ±ºæ–¼åŠ å…¥ç«ç„°å½ˆã€é‡‘塊ã€ç¾½æ¯›æˆ–生物的頭。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT"><value>
+ 使用鑽石或螢光粉å³å¯æ–°å¢žå°¾å·´æˆ–é–ƒçˆã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE"><value>
+ ç…™ç«æ˜Ÿè£½ä½œå®Œæˆå¾Œï¼Œä»¥æŸ“料製作å³å¯æ±ºå®šç…™ç«æ˜Ÿçš„æ·¡å‡ºé¡è‰²ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW"><value>
+ 此處儲物箱內有製作煙ç«ç”¨çš„å„種物å“ï¼
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW"><value>
+ {*B*}按下{*CONTROLLER_VK_A*} å³å¯é€²ä¸€æ­¥çž­è§£ç…™ç«ã€‚
+ {*B*}如果您已經瞭解煙ç«ï¼Œè«‹æŒ‰ä¸‹{*CONTROLLER_VK_B*}。
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_PURPOSE"><value>
+ ç…™ç«å±¬æ–¼è£é£¾å“,å¯ä»¥æ‰‹å‹•æˆ–åˆ©ç”¨ç™¼å°„å™¨ç™¼å°„ï¼Œè£½ä½œçš„ææ–™åŒ…括紙ã€ç«è—¥ï¼Œä¹Ÿæœ‰äººæœƒé¸æ“‡åŠ å…¥å¹¾é¡†ç…™ç«æ˜Ÿã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE"><value>
+ ç…™ç«æ˜Ÿçš„é¡è‰²ã€æ·¡åŒ–ã€å½¢ç‹€ã€å¤§å°èˆ‡æ•ˆæžœ (例如尾巴和閃çˆ) å¯è‡ªè¨‚,方法是在製作時加入é¡å¤–ææ–™ã€‚
+ </value>
+ </data>
+<data name="IDS_TUTORIAL_TASK_FIREWORK_CRAFTING"><value>
+ 嘗試用儲物箱內的å„å¼å„æ¨£ææ–™è£½ä½œç…™ç«ã€‚
+ </value>
+ </data>
<data name="IDS_TOOLTIPS_SELECT"><value>é¸å–</value>
</data>
<data name="IDS_TOOLTIPS_USE"><value>使用</value>
@@ -2724,7 +3281,7 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_TOOLTIPS_PLAY"><value>播放</value>
</data>
-<data name="IDS_TOOLTIPS_RIDE"><value>騎/æ­ä¹˜</value>
+<data name="IDS_TOOLTIPS_RIDE"><value>æ­ä¹˜</value>
</data>
<data name="IDS_TOOLTIPS_SAIL"><value>乘船</value>
</data>
@@ -2828,6 +3385,22 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_TOOLTIPS_SAVETRANSFER_UPLOAD"><value>上傳供 Xbox One 使用的存檔</value>
</data>
+<data name="IDS_TOOLTIPS_MOUNT"><value>騎上</value>
+</data>
+<data name="IDS_TOOLTIPS_DISMOUNT"><value>下馬</value>
+</data>
+<data name="IDS_TOOLTIPS_SADDLEBAGS"><value>騎下</value>
+</data>
+<data name="IDS_TOOLTIPS_FIREWORK_LAUNCH"><value>發射</value>
+</data>
+<data name="IDS_TOOLTIPS_LEASH"><value>æ “ä½</value>
+</data>
+<data name="IDS_TOOLTIPS_UNLEASH"><value>å°„ç®­</value>
+</data>
+<data name="IDS_TOOLTIPS_ATTACH"><value>è£ä¸Š</value>
+</data>
+<data name="IDS_TOOLTIPS_NAME"><value>命å</value>
+</data>
<data name="IDS_CONFIRM_OK"><value>確定</value>
</data>
<data name="IDS_CONFIRM_CANCEL"><value>å–æ¶ˆ</value>
@@ -3142,6 +3715,20 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_DISPENSER"><value>發射器</value>
</data>
+<data name="IDS_CONTAINER_ANIMAL"><value>馬</value>
+ </data>
+<data name="IDS_CONTAINER_DROPPER"><value>投擲器</value>
+ </data>
+<data name="IDS_CONTAINER_HOPPER"><value>æ¼æ–—</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON"><value>燈塔</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_PRIMARY_POWER"><value>主è¦åŠ›é‡</value>
+ </data>
+<data name="IDS_CONTAINER_BEACON_SECONDARY_POWER"><value>次è¦åŠ›é‡</value>
+ </data>
+<data name="IDS_CONTAINER_MINECART"><value>礦車</value>
+ </data>
<data name="IDS_NO_DLCOFFERS"><value>é€™æ¬¾éŠæˆ²ç›®å‰æ²’有此類型的下載內容。</value>
</data>
<data name="IDS_PLAYER_JOINED"><value>%s å·²ç¶“åŠ å…¥éŠæˆ²ã€‚</value>
@@ -3301,10 +3888,14 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_GAMEMODE_CREATIVE"><value>éŠæˆ²æ¨¡å¼ï¼šå‰µé€ </value>
</data>
+<data name="IDS_GAMEMODE_ADVENTURE"><value>éŠæˆ²æ¨¡å¼ï¼šå†’險</value>
+ </data>
<data name="IDS_SURVIVAL"><value>生存</value>
</data>
<data name="IDS_CREATIVE"><value>創造</value>
</data>
+<data name="IDS_ADVENTURE"><value>冒險</value>
+ </data>
<data name="IDS_CREATED_IN_SURVIVAL"><value>在生存模å¼ä¸­å»ºç«‹</value>
</data>
<data name="IDS_CREATED_IN_CREATIVE"><value>在創造模å¼ä¸­å»ºç«‹</value>
@@ -3325,6 +3916,8 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_LEVELTYPE_SUPERFLAT"><value>éžå¸¸å¹³å¦</value>
</data>
+<data name="IDS_GAMEOPTION_SEED"><value>輸入種å­ï¼Œå†åº¦ç”¢ç”Ÿç›¸åŒçš„地形。留白會隨機挑é¸ä¸–界。</value>
+</data>
<data name="IDS_GAMEOPTION_ONLINE"><value>å•Ÿç”¨æ™‚ï¼Œæœ¬éŠæˆ²å°‡æˆç‚ºç·šä¸ŠéŠæˆ²ã€‚</value>
</data>
<data name="IDS_GAMEOPTION_INVITEONLY"><value>啟用時,åªé™è¢«é‚€è«‹çš„玩家加入。</value>
@@ -3349,6 +3942,20 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_GAMEOPTION_BONUS_CHEST"><value>啟用時,玩家的å†ç”Ÿé»žé™„近會有個è£è‘—有用物å“的箱å­ã€‚</value>
</data>
+<data name="IDS_GAMEOPTION_MOB_GRIEFING"><value>åœç”¨æ™‚,怪物和動物無法變更方塊(例如:Creeper çˆ†ç‚¸ä¸æœƒæ‘§æ¯€æ–¹å¡Šï¼Œç¶¿ç¾Šç„¡æ³•移除è‰ï¼‰æˆ–拾起物å“</value>
+</data>
+<data name="IDS_GAMEOPTION_KEEP_INVENTORY"><value>啟用時,玩家死掉時å¯ä»¥ä¿ç•™ç‰©å“欄。</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_SPAWNING"><value>åœç”¨æ™‚ï¼Œç”Ÿç‰©ä¸æœƒè‡ªç„¶é‡ç”Ÿã€‚</value>
+</data>
+<data name="IDS_GAMEOPTION_MOB_LOOT"><value>åœç”¨æ™‚ï¼Œæ€ªç‰©å’Œå‹•ç‰©ä¸æœƒè½ä¸‹æˆ°åˆ©å“(例如:Creeper 䏿œƒè½ä¸‹ç«è—¥ï¼‰ã€‚</value>
+</data>
+<data name="IDS_GAMEOPTION_TILE_DROPS"><value>åœç”¨æ™‚ï¼Œæ–¹å¡Šæ‘§æ¯€æ™‚ä¸æœƒè½ä¸‹ç‰©å“ï¼ˆä¾‹å¦‚ï¼ŒçŸ³é ­æ–¹å¡Šä¸æœƒè½ä¸‹éµåµçŸ³ï¼‰ã€‚</value>
+</data>
+<data name="IDS_GAMEOPTION_NATURAL_REGEN"><value>åœç”¨æ™‚ï¼ŒçŽ©å®¶ä¸æœƒè‡ªç„¶æ¢å¾©ç”Ÿå‘½å€¼ã€‚</value>
+</data>
+<data name="IDS_GAMEOPTION_DAYLIGHT_CYCLE"><value>åœç”¨æ™‚ï¼Œæ™‚é–“ä¸æœƒæ›´æ”¹ã€‚</value>
+</data>
<data name="IDS_DLC_MENU_SKINPACKS"><value>角色外觀套件</value>
</data>
<data name="IDS_DLC_MENU_THEMES"><value>主題</value>
@@ -3397,7 +4004,49 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_DEATH_THROWN"><value>{*PLAYER*} 被 {*SOURCE*} 的拳頭打死了</value>
</data>
-<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} 已被 {*SOURCE*} 殺死。</value>
+<data name="IDS_DEATH_INDIRECT_MAGIC"><value>{*PLAYER*} 已被 {*SOURCE*} 用魔法殺死</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_LADDER"><value>{*PLAYER*} 從梯å­è·Œè½</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_VINES"><value>{*PLAYER*} 從藤蔓跌è½</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_WATER"><value>{*PLAYER*} 從水中掉出來</value>
+</data>
+<data name="IDS_DEATH_FELL_ACCIDENT_GENERIC"><value>{*PLAYER*} 從高處跌è½</value>
+</data>
+<data name="IDS_DEATH_FELL_KILLER"><value>{*PLAYER*} å—到 {*SOURCE*} 的跌è½è©›å’’</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST"><value>{*PLAYER*} å—到 {*SOURCE*} 的跌è½è©›å’’</value>
+</data>
+<data name="IDS_DEATH_FELL_ASSIST_ITEM"><value>{*PLAYER*} å—到 {*SOURCE*} 利用 {*ITEM*} 的跌è½è©›å’’</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH"><value>{*PLAYER*} è·Œè½è·é›¢å¤ªé ï¼Œé­åˆ° {*SOURCE*} 消滅</value>
+</data>
+<data name="IDS_DEATH_FELL_FINISH_ITEM"><value>{*PLAYER*} è·Œè½è·é›¢å¤ªé ï¼Œé­åˆ° {*SOURCE*} 用 {*ITEM*} 消滅</value>
+</data>
+<data name="IDS_DEATH_INFIRE_PLAYER"><value>{*PLAYER*} 在與 {*SOURCE*} 作戰時走入ç«ä¸­</value>
+</data>
+<data name="IDS_DEATH_ONFIRE_PLAYER"><value>{*PLAYER*} 在與 {*SOURCE*} 作戰時燒æˆç°ç‡¼</value>
+</data>
+<data name="IDS_DEATH_LAVA_PLAYER"><value>{*PLAYER*} 嘗試在岩漿中游泳,以逃離 {*SOURCE*}</value>
+</data>
+<data name="IDS_DEATH_DROWN_PLAYER"><value>{*PLAYER*} 在嘗試逃離 {*SOURCE*} 時溺水</value>
+</data>
+<data name="IDS_DEATH_CACTUS_PLAYER"><value>{*PLAYER*} 在嘗試逃離 {*SOURCE*} 時走入仙人掌</value>
+</data>
+<data name="IDS_DEATH_EXPLOSION_PLAYER"><value>{*PLAYER*} é­ {*SOURCE*} 轟炸</value>
+</data>
+<data name="IDS_DEATH_WITHER"><value>{*PLAYER*} 已凋零</value>
+</data>
+<data name="IDS_DEATH_PLAYER_ITEM"><value>{*PLAYER*} 已被 {*SOURCE*} 用 {*ITEM*} 屠殺</value>
+</data>
+<data name="IDS_DEATH_ARROW_ITEM"><value>{*PLAYER*} 已被 {*SOURCE*} 用 {*ITEM*} 射死</value>
+</data>
+<data name="IDS_DEATH_FIREBALL_ITEM"><value>{*PLAYER*} 已被 {*SOURCE*} 用 {*ITEM*} é­ç«çƒæ“Šä¸­</value>
+</data>
+<data name="IDS_DEATH_THROWN_ITEM"><value>{*PLAYER*} 已被 {*SOURCE*} 用 {*ITEM*} æ¥æ‰“</value>
+</data>
+<data name="IDS_DEATH_INDIRECT_MAGIC_ITEM"><value>{*PLAYER*} 已被 {*SOURCE*} 用 {*ITEM*} 殺死</value>
</data>
<data name="IDS_CHECKBOX_RENDER_BEDROCKFOG"><value>基岩迷霧</value>
</data>
@@ -3574,6 +4223,8 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_MAX_SQUID_SPAWNED"><value>ç›®å‰å·²é”åˆ°éŠæˆ²ä¸–界的çƒè³Šæ•¸é‡ä¸Šé™ï¼Œç„¡æ³•使用角色蛋。</value>
</data>
+<data name="IDS_MAX_BATS_SPAWNED"><value>ç›®å‰å·²é”åˆ°éŠæˆ²ä¸–ç•Œçš„æ‘æ°‘數é‡ä¸Šé™ï¼Œç„¡æ³•使用角色蛋。</value>
+</data>
<data name="IDS_MAX_ENEMIES_SPAWNED"><value>ç›®å‰å·²é”åˆ°éŠæˆ²ä¸–界的敵人數é‡ä¸Šé™ï¼Œç„¡æ³•使用角色蛋。</value>
</data>
<data name="IDS_MAX_VILLAGERS_SPAWNED"><value>ç›®å‰å·²é”åˆ°éŠæˆ²ä¸–ç•Œçš„æ‘æ°‘數é‡ä¸Šé™ï¼Œç„¡æ³•使用角色蛋。</value>
@@ -3588,6 +4239,8 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_MAX_CHICKENS_BRED"><value>雞已é”åˆ°ç¹æ®–數é‡ä¸Šé™ï¼Œè©²å‹•物無法進入戀愛模å¼ã€‚</value>
</data>
+<data name="IDS_MAX_HORSES_BRED"><value>這種動物ä¸èƒ½é€²å…¥æ„›æƒ…模å¼ï¼Œå·²ç¶“é”åˆ°ç¹æ®–馬的數é‡ä¸Šé™ã€‚</value>
+ </data>
<data name="IDS_MAX_MUSHROOMCOWS_BRED"><value>Mooshrooms å·²é”åˆ°ç¹æ®–數é‡ä¸Šé™ï¼Œè©²å‹•物無法進入戀愛模å¼ã€‚</value>
</data>
<data name="IDS_MAX_BOATS"><value>ç›®å‰é€™å€‹ä¸–界的å°èˆ¹å·²é”到數é‡ä¸Šé™ã€‚</value>
@@ -3615,27 +4268,43 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
<data name="IDS_CREDITS"><value>製作群</value>
</data>
<data name="IDS_REINSTALL_CONTENT"><value>釿–°å®‰è£å…§å®¹</value>
- </data>
+ </data>
<data name="IDS_DEBUG_SETTINGS"><value>åµéŒ¯è¨­å®š</value>
- </data>
+ </data>
<data name="IDS_FIRE_SPREADS"><value>ç«æœƒè”“å»¶</value>
- </data>
+ </data>
<data name="IDS_TNT_EXPLODES"><value>炸藥會爆炸</value>
- </data>
+ </data>
<data name="IDS_PLAYER_VS_PLAYER"><value>玩家å°çީ家</value>
- </data>
+ </data>
<data name="IDS_TRUST_PLAYERS"><value>信任玩家</value>
- </data>
+ </data>
<data name="IDS_HOST_PRIVILEGES"><value>主æŒäººç‰¹æ¬Š</value>
- </data>
+ </data>
<data name="IDS_GENERATE_STRUCTURES"><value>產生建築</value>
- </data>
+ </data>
<data name="IDS_SUPERFLAT_WORLD"><value>éžå¸¸å¹³å¦çš„世界</value>
- </data>
+ </data>
<data name="IDS_BONUS_CHEST"><value>è´ˆå“ç®±</value>
- </data>
+ </data>
<data name="IDS_WORLD_OPTIONS"><value>世界é¸é …</value>
- </data>
+ </data>
+<data name="IDS_GAME_OPTIONS"><value>éŠæˆ²é¸é …</value>
+ </data>
+<data name="IDS_MOB_GRIEFING"><value>生物惡æ„破壞</value>
+ </data>
+<data name="IDS_KEEP_INVENTORY"><value>ä¿ç•™ç‰©å“欄</value>
+ </data>
+<data name="IDS_MOB_SPAWNING"><value>生物é‡ç”Ÿ</value>
+ </data>
+<data name="IDS_MOB_LOOT"><value>生物戰利å“</value>
+ </data>
+<data name="IDS_TILE_DROPS"><value>磚塊掉è½</value>
+ </data>
+<data name="IDS_NATURAL_REGEN"><value>自然å†ç”Ÿ</value>
+ </data>
+<data name="IDS_DAYLIGHT_CYCLE"><value>陽光循環</value>
+ </data>
<data name="IDS_CAN_BUILD_AND_MINE"><value>å¯ä»¥å»ºé€ å’Œé–‹æŽ¡</value>
</data>
<data name="IDS_CAN_USE_DOORS_AND_SWITCHES"><value>å¯ä»¥ä½¿ç”¨é–€èˆ‡é–‹é—œ</value>
@@ -3822,6 +4491,14 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_POTION_POISON"><value>巨毒</value>
</data>
+<data name="IDS_POTION_WITHER"><value>凋零怪</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST"><value>生命值加乘</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION"><value>叿”¶</value>
+ </data>
+<data name="IDS_POTION_SATURATION"><value>飽和</value>
+ </data>
<data name="IDS_POTION_MOVESPEED_POSTFIX"><value>æ•æ·</value>
</data>
<data name="IDS_POTION_MOVESLOWDOWN_POSTFIX"><value>ç·©æ…¢</value>
@@ -3860,6 +4537,14 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_POTION_POISON_POSTFIX"><value>巨毒</value>
</data>
+<data name="IDS_POTION_WITHER_POSTFIX"><value>è…æœ½</value>
+ </data>
+<data name="IDS_POTION_HEALTHBOOST_POSTFIX"><value>生命值加乘</value>
+ </data>
+<data name="IDS_POTION_ABSORPTION_POSTFIX"><value>叿”¶</value>
+ </data>
+<data name="IDS_POTION_SATURATION_POSTFIX"><value>飽和</value>
+ </data>
<data name="IDS_POTION_POTENCY_0"><value></value>
</data>
<data name="IDS_POTION_POTENCY_1"><value>2</value>
@@ -3956,6 +4641,22 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_POTION_DESC_POISON"><value>隨著時間自動減少å—影響玩家ã€å‹•物和怪物的生命值。</value>
</data>
+<data name="IDS_POTION_EFFECTS_WHENDRANK"><value>套用時:</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH"><value>馬跳èºåŠ›é‡</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS"><value>æ®­å±æ´è»</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH"><value>生命值上é™</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE"><value>生物跟蹤範åœ</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE"><value>擊退防禦力</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED"><value>速度</value>
+ </data>
+<data name="IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE"><value>攻擊殺傷力</value>
+ </data>
<data name="IDS_ENCHANTMENT_DAMAGE_ALL"><value>鋒利</value>
</data>
<data name="IDS_ENCHANTMENT_DAMAGE_UNDEAD"><value>釿“Š</value>
@@ -4046,7 +4747,7 @@ Xbox One 主機上的 Minecraft é è¨­ç‚ºå¤šäººéŠæˆ²ã€‚å¦‚æžœæ‚¨é¸æ“‡é«˜ç•«è³ª
</data>
<data name="IDS_DESC_POTATO_BAKED"><value>å¯å›žå¾© 3 點 {*ICON_SHANK_01*}。在熔çˆä¸­çƒ¹ç…®é¦¬éˆ´è–¯å³å¯ç²å¾—。</value>
</data>
-<data name="IDS_DESC_POTATO_POISONOUS"><value>å¯å›žå¾© 1 個 {*ICON_SHANK_01*},或å¯åœ¨ç†”çˆä¸­çƒ¹ç…®ã€‚å¯ä»¥æ ½ç¨®åœ¨è¾²åœ°ä¸Šã€‚食用å¯èƒ½æœƒè®“您中毒。</value>
+<data name="IDS_DESC_POTATO_POISONOUS"><value>å¯å›žå¾© 1 個 {*ICON_SHANK_01*}。 åƒé€™å€‹å¯èƒ½æœƒè®“您中毒。</value>
</data>
<data name="IDS_DESC_CARROT_GOLDEN"><value>å¯å›žå¾© 3 個 {*ICON_SHANK_01*}。用胡蘿蔔和碎金塊精製而æˆã€‚</value>
</data>
diff --git a/Minecraft.Client/Common/Network/GameNetworkManager.cpp b/Minecraft.Client/Common/Network/GameNetworkManager.cpp
index 2a80f80a..a65a61aa 100644
--- a/Minecraft.Client/Common/Network/GameNetworkManager.cpp
+++ b/Minecraft.Client/Common/Network/GameNetworkManager.cpp
@@ -6,6 +6,7 @@
#include "..\..\..\Minecraft.World\ThreadName.h"
#include "..\..\..\Minecraft.World\Entity.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.h"
+#include "..\..\..\Minecraft.World\FireworksRecipe.h"
#include "..\..\ClientConnection.h"
#include "..\..\Minecraft.h"
#include "..\..\User.h"
@@ -30,7 +31,7 @@
#ifdef _XBOX
#include "Common\XUI\XUI_PauseMenu.h"
-#elif !(defined __PSVITA__)
+#else
#include "Common\UI\UI.h"
#include "Common\UI\UIScene_PauseMenu.h"
#include "..\..\Xbox\Network\NetworkPlayerXbox.h"
@@ -166,6 +167,11 @@ bool CGameNetworkManager::_RunNetworkGame(LPVOID lpParameter)
return true;
}
}
+ else
+ {
+ // Client needs QNET_STATE_GAME_PLAY so that IsInGameplay() returns true
+ s_pPlatformNetworkManager->SetGamePlayState();
+ }
if( g_NetworkManager.IsLeavingGame() ) return false;
@@ -204,7 +210,79 @@ bool CGameNetworkManager::StartNetworkGame(Minecraft *minecraft, LPVOID lpParame
}
else
{
- param->seed = seed = app.getLevelGenerationOptions()->getLevelSeed();
+ param->seed = seed = app.getLevelGenerationOptions()->getLevelSeed();
+
+ if(param->levelGen->isTutorial())
+ {
+ // Load the tutorial save data here
+ if(param->levelGen->requiresBaseSave() && !param->levelGen->getBaseSavePath().empty() )
+ {
+#ifdef _XBOX
+#ifdef _TU_BUILD
+ wstring fileRoot = L"UPDATE:\\res\\GameRules\\" + param->levelGen->getBaseSavePath();
+#else
+ wstring fileRoot = L"GAME:\\res\\TitleUpdate\\GameRules\\" + param->levelGen->getBaseSavePath();
+#endif
+#else
+#ifdef _WINDOWS64
+ wstring fileRoot = L"Windows64Media\\Tutorial\\" + param->levelGen->getBaseSavePath();
+ File root(fileRoot);
+ if(!root.exists()) fileRoot = L"Windows64\\Tutorial\\" + param->levelGen->getBaseSavePath();
+#elif defined(__ORBIS__)
+ wstring fileRoot = L"/app0/orbis/Tutorial/" + param->levelGen->getBaseSavePath();
+#elif defined(__PSVITA__)
+ wstring fileRoot = L"PSVita/Tutorial/" + param->levelGen->getBaseSavePath();
+#elif defined(__PS3__)
+ wstring fileRoot = L"PS3/Tutorial/" + param->levelGen->getBaseSavePath();
+#else
+ wstring fileRoot = L"Tutorial\\" + param->levelGen->getBaseSavePath();
+#endif
+#endif
+ File grf(fileRoot);
+ if (grf.exists())
+ {
+#ifdef _UNICODE
+ wstring path = grf.getPath();
+ const WCHAR *pchFilename=path.c_str();
+ HANDLE fileHandle = CreateFile(
+ pchFilename, // file name
+ GENERIC_READ, // access mode
+ 0, // share mode // TODO 4J Stu - Will we need to share file? Probably not but...
+ NULL, // Unused
+ OPEN_EXISTING , // how to create // TODO 4J Stu - Assuming that the file already exists if we are opening to read from it
+ FILE_FLAG_SEQUENTIAL_SCAN, // file attributes
+ NULL // Unsupported
+ );
+#else
+ const char *pchFilename=wstringtofilename(grf.getPath());
+ HANDLE fileHandle = CreateFile(
+ pchFilename, // file name
+ GENERIC_READ, // access mode
+ 0, // share mode // TODO 4J Stu - Will we need to share file? Probably not but...
+ NULL, // Unused
+ OPEN_EXISTING , // how to create // TODO 4J Stu - Assuming that the file already exists if we are opening to read from it
+ FILE_FLAG_SEQUENTIAL_SCAN, // file attributes
+ NULL // Unsupported
+ );
+#endif
+
+ if( fileHandle != INVALID_HANDLE_VALUE )
+ {
+ DWORD bytesRead,dwFileSize = GetFileSize(fileHandle,NULL);
+ PBYTE pbData = (PBYTE) new BYTE[dwFileSize];
+ BOOL bSuccess = ReadFile(fileHandle,pbData,dwFileSize,&bytesRead,NULL);
+ if(bSuccess==FALSE)
+ {
+ app.FatalLoadError();
+ }
+ CloseHandle(fileHandle);
+
+ // 4J-PB - is it possible that we can get here after a read fail and it's not an error?
+ param->levelGen->setBaseSaveData(pbData, dwFileSize);
+ }
+ }
+ }
+ }
}
}
}
@@ -694,7 +772,7 @@ int CGameNetworkManager::JoinFromInvite_SignInReturned(void *pParam,bool bContin
{
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
return 0;
}
@@ -738,7 +816,7 @@ int CGameNetworkManager::JoinFromInvite_SignInReturned(void *pParam,bool bContin
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
}
else
{
@@ -856,6 +934,16 @@ int CGameNetworkManager::ServerThreadProc( void* lpParameter )
NetworkGameInitData *param = (NetworkGameInitData *)lpParameter;
seed = param->seed;
app.SetGameHostOption(eGameHostOption_All,param->settings);
+
+ // 4J Stu - If we are loading a DLC save that's separate from the texture pack, load
+ if( param->levelGen != NULL && (param->texturePackId == 0 || param->levelGen->getRequiredTexturePackId() != param->texturePackId) )
+ {
+ while((Minecraft::GetInstance()->skins->needsUIUpdate() || ui.IsReloadingSkin()))
+ {
+ Sleep(1);
+ }
+ param->levelGen->loadBaseSaveData();
+ }
}
SetThreadName(-1, "Minecraft Server thread");
@@ -867,6 +955,7 @@ int CGameNetworkManager::ServerThreadProc( void* lpParameter )
Entity::useSmallIds();
Level::enableLightingCache();
Tile::CreateNewThreadStorage();
+ FireworksRecipe::CreateNewThreadStorage();
MinecraftServer::main(seed, lpParameter); //saveData, app.GetGameHostOption(eGameHostOption_All));
@@ -889,10 +978,7 @@ int CGameNetworkManager::ExitAndJoinFromInviteThreadProc( void* lpParam )
Compression::UseDefaultThreadStorage();
//app.SetGameStarted(false);
-
-#ifndef __PSVITA__
UIScene_PauseMenu::_ExitWorld(NULL);
-#endif
while( g_NetworkManager.IsInSession() )
{
@@ -900,7 +986,7 @@ int CGameNetworkManager::ExitAndJoinFromInviteThreadProc( void* lpParam )
}
// Xbox should always be online when receiving invites - on PS3 we need to check & ask the user to sign in
-#ifndef __PS3__
+#if !defined(__PS3__) && !defined(__PSVITA__)
JoinFromInviteData *inviteData = (JoinFromInviteData *)lpParam;
app.SetAction(inviteData->dwUserIndex, eAppAction_JoinFromInvite, lpParam);
#else
@@ -914,7 +1000,7 @@ int CGameNetworkManager::ExitAndJoinFromInviteThreadProc( void* lpParam )
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CGameNetworkManager::MustSignInReturned_0,lpParam, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CGameNetworkManager::MustSignInReturned_0,lpParam);
}
#endif
@@ -1053,16 +1139,16 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc( void* lpParam )
{
if(g_NetworkManager.m_bSignedOutofPSN)
{
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME, IDS_ERROR_PSN_SIGN_OUT, uiIDA,1,ProfileManager.GetPrimaryPad());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME, IDS_ERROR_PSN_SIGN_OUT, uiIDA,1,ProfileManager.GetPrimaryPad());
}
else
{
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME, uiIDA,1,ProfileManager.GetPrimaryPad());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME, uiIDA,1,ProfileManager.GetPrimaryPad());
}
}
else
{
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad());
}
// Swap these two messages around as one is too long to display at 480
@@ -1073,7 +1159,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc( void* lpParam )
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME, IDS_IN_PARTY_SESSION_FULL, uiIDA,1,ProfileManager.GetPrimaryPad());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME, IDS_IN_PARTY_SESSION_FULL, uiIDA,1,ProfileManager.GetPrimaryPad());
pMinecraft->progressRenderer->progressStartNoAbort( IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME );
pMinecraft->progressRenderer->progressStage( -1 );
}
@@ -1215,6 +1301,13 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc( void* lpParam )
// Update the network player
pMinecraft->m_pendingLocalConnections[index]->getConnection()->getSocket()->setPlayer(g_NetworkManager.GetLocalPlayerByUserIndex(index));
}
+ else if ( pMinecraft->m_connectionFailed[index] && (pMinecraft->m_connectionFailedReason[index] == DisconnectPacket::eDisconnect_ConnectionCreationFailed) )
+ {
+ pMinecraft->removeLocalPlayerIdx(index);
+#ifdef _XBOX_ONE
+ ProfileManager.RemoveGamepadFromGame(index);
+#endif
+ }
}
}
}
@@ -1391,7 +1484,10 @@ void CGameNetworkManager::CreateSocket( INetworkPlayer *pNetworkPlayer, bool loc
Minecraft *pMinecraft = Minecraft::GetInstance();
Socket *socket = NULL;
- shared_ptr<MultiplayerLocalPlayer> mpPlayer = pMinecraft->localplayers[pNetworkPlayer->GetUserIndex()];
+ shared_ptr<MultiplayerLocalPlayer> mpPlayer = nullptr;
+ int userIdx = pNetworkPlayer->GetUserIndex();
+ if (userIdx >= 0 && userIdx < XUSER_MAX_COUNT)
+ mpPlayer = pMinecraft->localplayers[userIdx];
if( localPlayer && mpPlayer != NULL && mpPlayer->connection != NULL)
{
// If we already have a MultiplayerLocalPlayer here then we are doing a session type change
@@ -1572,7 +1668,7 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive if the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive);
}
else if (ProfileManager.isSignedInPSN(iPadNotSignedInLive))
{
@@ -1581,57 +1677,36 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPadNotSignedInLive);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPadNotSignedInLive, &CGameNetworkManager::MustSignInReturned_1, (void *)pInviteInfo, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPadNotSignedInLive, &CGameNetworkManager::MustSignInReturned_1, (void *)pInviteInfo);
}
return;
}
- // 4J-JEV: Check that all players are authorised for PsPlus, present upsell to players that aren't and try again.
- for (unsigned int index = 0; index < XUSER_MAX_COUNT; index++)
+ // if this is the trial game, we'll check and send the user to unlock the game later, in HandleInviteWhenInMenus
+ if(ProfileManager.IsFullVersion())
{
- if ( ProfileManager.IsSignedIn(index)
- && !ProfileManager.HasPlayStationPlus(userIndex) )
+ // 4J-JEV: Check that all players are authorised for PsPlus, present upsell to players that aren't and try again.
+ for (unsigned int index = 0; index < XUSER_MAX_COUNT; index++)
{
- m_pInviteInfo = (INVITE_INFO *) pInviteInfo;
- m_iPlayerInvited = userIndex;
+ if ( ProfileManager.IsSignedIn(index)
+ && !ProfileManager.HasPlayStationPlus(userIndex) )
+ {
+ m_pInviteInfo = (INVITE_INFO *) pInviteInfo;
+ m_iPlayerInvited = userIndex;
- m_pUpsell = new PsPlusUpsellWrapper(index);
- m_pUpsell->displayUpsell();
+ m_pUpsell = new PsPlusUpsellWrapper(index);
+ m_pUpsell->displayUpsell();
- return;
- }
- }
-#endif
-
-#ifdef __PSVITA__
- // Need to check we're signed in to PSN
- bool isSignedInLive = ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad());
- if (!isSignedInLive)
- {
- // Determine why they're not "signed in live"
- // MGH - we need to add a new message at some point for connecting when already signed in
-// if (ProfileManager.IsSignedInPSN(ProfileManager.GetPrimaryPad()))
-// {
-// // Signed in to PSN but not connected (no internet access)
-// UINT uiIDA[1];
-// uiIDA[0] = IDS_OK;
-// ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL, NULL, app.GetStringTable());
-// }
-// else
- {
- // Not signed in to PSN
- UINT uiIDA[1];
- uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), &CGameNetworkManager::MustSignInReturned_1, (void *)pInviteInfo, app.GetStringTable(), NULL, 0, false);
+ return;
+ }
}
- return;
}
#endif
@@ -1675,17 +1750,22 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
uiIDA[0]=IDS_CONFIRM_OK;
// 4J-PB - it's possible there is no primary pad here, when accepting an invite from the dashboard
- ui.RequestMessageBox( IDS_CONNECTION_FAILED, IDS_CONNECTION_FAILED_NO_SD_SPLITSCREEN, uiIDA,1,XUSER_INDEX_ANY,NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_CONNECTION_FAILED, IDS_CONNECTION_FAILED_NO_SD_SPLITSCREEN, uiIDA,1,XUSER_INDEX_ANY);
}
else
#endif
if( noUGC )
{
+#ifdef __PSVITA__
+ // showing the system message for chat restriction here instead now, to fix FQA bug report
+ ProfileManager.DisplaySystemMessage( SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_PSN_CHAT_RESTRICTION, ProfileManager.GetPrimaryPad() );
+#else
int messageText = IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL;
if(joiningUsers > 1) messageText = IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL;
ui.RequestUGCMessageBox(IDS_CONNECTION_FAILED, messageText, XUSER_INDEX_ANY);
+#endif
}
#if defined(__PS3__) || defined __PSVITA__
else if(bContentRestricted)
@@ -1703,7 +1783,7 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
// 4J-PB - it's possible there is no primary pad here, when accepting an invite from the dashboard
//StorageManager.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
- ui.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,XUSER_INDEX_ANY,NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,XUSER_INDEX_ANY);
}
else
{
@@ -1717,10 +1797,11 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
#endif
if( !g_NetworkManager.IsInSession() )
{
-#ifndef __PS3__
- HandleInviteWhenInMenus(userIndex, pInviteInfo);
-#else
+#if defined (__PS3__) || defined (__PSVITA__)
// PS3 is more complicated here - we need to make sure that the player is online. If they are then we can do the same as the xbox, if not we need to try and get them online and then, if they do sign in, go down the same path
+
+ // Determine why they're not "signed in live"
+ // MGH - On Vita we need to add a new message at some point for connecting when already signed in
if(ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()))
{
HandleInviteWhenInMenus(userIndex, pInviteInfo);
@@ -1730,8 +1811,12 @@ void CGameNetworkManager::GameInviteReceived( int userIndex, const INVITE_INFO *
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CGameNetworkManager::MustSignInReturned_1,(void *)pInviteInfo, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&CGameNetworkManager::MustSignInReturned_1,(void *)pInviteInfo);
}
+
+
+#else
+ HandleInviteWhenInMenus(userIndex, pInviteInfo);
#endif
}
else
@@ -1777,7 +1862,9 @@ void CGameNetworkManager::HandleInviteWhenInMenus( int userIndex, const INVITE_I
}
else
{
+#ifndef _XBOX_ONE
ProfileManager.SetPrimaryPad(userIndex);
+#endif
// 4J Stu - If we accept an invite from the main menu before going to play game we need to load the DLC
// These checks are done within the StartInstallDLCProcess - (!app.DLCInstallProcessCompleted() && !app.DLCInstallPending()) app.StartInstallDLCProcess(dwUserIndex);
@@ -1787,7 +1874,11 @@ void CGameNetworkManager::HandleInviteWhenInMenus( int userIndex, const INVITE_I
// The locked profile should not be changed if we are in menus as the main player might sign out in the sign-in ui
//ProfileManager.SetLockedProfile(-1);
+#ifdef _XBOX_ONE
+ if((!app.IsLocalMultiplayerAvailable())&&InputManager.IsPadLocked(userIndex))
+#else
if(!app.IsLocalMultiplayerAvailable())
+#endif
{
bool noPrivileges=!ProfileManager.AllowedToPlayMultiplayer(userIndex);
@@ -1795,7 +1886,7 @@ void CGameNetworkManager::HandleInviteWhenInMenus( int userIndex, const INVITE_I
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
}
else
{
@@ -1887,7 +1978,7 @@ bool CGameNetworkManager::AllowedToPlayMultiplayer(int playerIdx)
return ProfileManager.AllowedToPlayMultiplayer(playerIdx);
}
-char *CGameNetworkManager::GetOnlineName(int playerIdx)
+const char *CGameNetworkManager::GetOnlineName(int playerIdx)
{
return ProfileManager.GetGamertag(playerIdx);
}
diff --git a/Minecraft.Client/Common/Network/GameNetworkManager.h b/Minecraft.Client/Common/Network/GameNetworkManager.h
index 1bb532da..bb7633c2 100644
--- a/Minecraft.Client/Common/Network/GameNetworkManager.h
+++ b/Minecraft.Client/Common/Network/GameNetworkManager.h
@@ -22,6 +22,7 @@ using namespace std;
class ClientConnection;
class Minecraft;
+const int NON_QNET_SENDDATA_ACK_REQUIRED = 1;
// This class implements the game-side interface to the networking system. As such, it is platform independent and may contain bits of game-side code where appropriate.
// It shouldn't ever reference any platform specifics of the network implementation (eg QNET), rather it should interface with an implementation of PlatformNetworkManager to
@@ -195,7 +196,7 @@ private:
int GetLockedProfile();
bool IsSignedInLive(int playerIdx);
bool AllowedToPlayMultiplayer(int playerIdx);
- char *GetOnlineName(int playerIdx);
+ const char *GetOnlineName(int playerIdx);
C4JThread::Event* m_hServerStoppedEvent;
C4JThread::Event* m_hServerReadyEvent;
diff --git a/Minecraft.Client/Common/Network/NetworkPlayerInterface.h b/Minecraft.Client/Common/Network/NetworkPlayerInterface.h
index 501b08ff..d26252da 100644
--- a/Minecraft.Client/Common/Network/NetworkPlayerInterface.h
+++ b/Minecraft.Client/Common/Network/NetworkPlayerInterface.h
@@ -9,8 +9,9 @@ class INetworkPlayer
public:
virtual ~INetworkPlayer() {}
virtual unsigned char GetSmallId() = 0;
- virtual void SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority) = 0;
+ virtual void SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority, bool ack) = 0;
virtual bool IsSameSystem(INetworkPlayer *player) = 0;
+ virtual int GetOutstandingAckCount() = 0;
virtual int GetSendQueueSizeBytes( INetworkPlayer *player, bool lowPriority ) = 0;
virtual int GetSendQueueSizeMessages( INetworkPlayer *player, bool lowPriority ) = 0;
virtual int GetCurrentRtt() = 0;
@@ -28,4 +29,6 @@ public:
virtual const wchar_t *GetOnlineName() = 0;
virtual wstring GetDisplayName() = 0;
virtual PlayerUID GetUID() = 0;
+ virtual void SentChunkPacket() = 0;
+ virtual int GetTimeSinceLastChunkPacket_ms() = 0;
};
diff --git a/Minecraft.Client/Common/Network/PlatformNetworkManagerInterface.h b/Minecraft.Client/Common/Network/PlatformNetworkManagerInterface.h
index 901e59e7..31c415a7 100644
--- a/Minecraft.Client/Common/Network/PlatformNetworkManagerInterface.h
+++ b/Minecraft.Client/Common/Network/PlatformNetworkManagerInterface.h
@@ -84,6 +84,7 @@ public:
virtual void HandleSignInChange() = 0;
virtual bool _RunNetworkGame() = 0;
+ virtual void SetGamePlayState() {}
private:
virtual bool _LeaveGame(bool bMigrateHost, bool bLeaveRoom) = 0;
diff --git a/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.cpp b/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.cpp
index b6b0fe12..c2466fe3 100644
--- a/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.cpp
+++ b/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.cpp
@@ -2,7 +2,12 @@
#include "..\..\..\Minecraft.World\Socket.h"
#include "..\..\..\Minecraft.World\StringHelpers.h"
#include "PlatformNetworkManagerStub.h"
-#include "..\..\Xbox\Network\NetworkPlayerXbox.h" // TODO - stub version of this?
+#include "..\..\Xbox\Network\NetworkPlayerXbox.h"
+#ifdef _WINDOWS64
+#include "..\..\Windows64\Network\WinsockNetLayer.h"
+#include "..\..\Minecraft.h"
+#include "..\..\User.h"
+#endif
CPlatformNetworkManagerStub *g_pPlatformNetworkManager;
@@ -114,10 +119,43 @@ void CPlatformNetworkManagerStub::NotifyPlayerJoined(IQNetPlayer *pQNetPlayer )
}
}
+void CPlatformNetworkManagerStub::NotifyPlayerLeaving(IQNetPlayer* pQNetPlayer)
+{
+ app.DebugPrintf("Player 0x%p \"%ls\" leaving.\n", pQNetPlayer, pQNetPlayer->GetGamertag());
+
+ INetworkPlayer* networkPlayer = getNetworkPlayer(pQNetPlayer);
+ if (networkPlayer == NULL)
+ return;
+
+ Socket* socket = networkPlayer->GetSocket();
+ if (socket != NULL)
+ {
+ if (m_pIQNet->IsHost())
+ g_NetworkManager.CloseConnection(networkPlayer);
+ }
+
+ if (m_pIQNet->IsHost())
+ {
+ 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);
+ }
+
+ removeNetworkPlayer(pQNetPlayer);
+}
+
+
bool CPlatformNetworkManagerStub::Initialise(CGameNetworkManager *pGameNetworkManager, int flagIndexSize)
{
m_pGameNetworkManager = pGameNetworkManager;
m_flagIndexSize = flagIndexSize;
+ m_pIQNet = new IQNet();
g_pPlatformNetworkManager = this;
for( int i = 0; i < XUSER_MAX_COUNT; i++ )
{
@@ -174,6 +212,37 @@ bool CPlatformNetworkManagerStub::isSystemPrimaryPlayer(IQNetPlayer *pQNetPlayer
// We call this twice a frame, either side of the render call so is a good place to "tick" things
void CPlatformNetworkManagerStub::DoWork()
{
+#ifdef _WINDOWS64
+ extern QNET_STATE _iQNetStubState;
+ if (_iQNetStubState == QNET_STATE_SESSION_STARTING && app.GetGameStarted())
+ {
+ _iQNetStubState = QNET_STATE_GAME_PLAY;
+ if (m_pIQNet->IsHost())
+ WinsockNetLayer::UpdateAdvertiseJoinable(true);
+ }
+ if (_iQNetStubState == QNET_STATE_IDLE)
+ TickSearch();
+ if (_iQNetStubState == QNET_STATE_GAME_PLAY && m_pIQNet->IsHost())
+ {
+ BYTE disconnectedSmallId;
+ while (WinsockNetLayer::PopDisconnectedSmallId(&disconnectedSmallId))
+ {
+ IQNetPlayer* qnetPlayer = m_pIQNet->GetPlayerBySmallId(disconnectedSmallId);
+ if (qnetPlayer != NULL && qnetPlayer->m_smallId == disconnectedSmallId)
+ {
+ NotifyPlayerLeaving(qnetPlayer);
+ qnetPlayer->m_smallId = 0;
+ qnetPlayer->m_isRemote = false;
+ qnetPlayer->m_isHostPlayer = false;
+ qnetPlayer->m_gamertag[0] = 0;
+ qnetPlayer->SetCustomDataValue(0);
+ WinsockNetLayer::PushFreeSmallId(disconnectedSmallId);
+ if (IQNet::s_playerCount > 1)
+ IQNet::s_playerCount--;
+ }
+ }
+ }
+#endif
}
int CPlatformNetworkManagerStub::GetPlayerCount()
@@ -232,6 +301,10 @@ bool CPlatformNetworkManagerStub::LeaveGame(bool bMigrateHost)
m_bLeavingGame = true;
+#ifdef _WINDOWS64
+ WinsockNetLayer::StopAdvertising();
+#endif
+
// If we are the host wait for the game server to end
if(m_pIQNet->IsHost() && g_NetworkManager.ServerStoppedValid())
{
@@ -239,6 +312,22 @@ bool CPlatformNetworkManagerStub::LeaveGame(bool bMigrateHost)
g_NetworkManager.ServerStoppedWait();
g_NetworkManager.ServerStoppedDestroy();
}
+ else
+ {
+ m_pIQNet->EndGame();
+ }
+
+ for (AUTO_VAR(it, currentNetworkPlayers.begin()); it != currentNetworkPlayers.end(); it++)
+ delete* it;
+ currentNetworkPlayers.clear();
+ m_machineQNetPrimaryPlayers.clear();
+ SystemFlagReset();
+
+#ifdef _WINDOWS64
+ WinsockNetLayer::Shutdown();
+ WinsockNetLayer::Initialize();
+#endif
+
return true;
}
@@ -262,7 +351,35 @@ void CPlatformNetworkManagerStub::HostGame(int localUsersMask, bool bOnlineGame,
m_pIQNet->HostGame();
+#ifdef _WINDOWS64
+ IQNet::m_player[0].m_smallId = 0;
+ IQNet::m_player[0].m_isRemote = false;
+ IQNet::m_player[0].m_isHostPlayer = true;
+ IQNet::s_playerCount = 1;
+#endif
+
_HostGame( localUsersMask, publicSlots, privateSlots );
+
+#ifdef _WINDOWS64
+ int port = WIN64_NET_DEFAULT_PORT;
+ const char* bindIp = NULL;
+ if (g_Win64DedicatedServer)
+ {
+ if (g_Win64DedicatedServerPort > 0)
+ port = g_Win64DedicatedServerPort;
+ if (g_Win64DedicatedServerBindIP[0] != 0)
+ bindIp = g_Win64DedicatedServerBindIP;
+ }
+ if (!WinsockNetLayer::IsActive())
+ WinsockNetLayer::HostGame(port, bindIp);
+
+ if (WinsockNetLayer::IsActive())
+ {
+ const wchar_t* hostName = IQNet::m_player[0].m_gamertag;
+ unsigned int settings = app.GetGameHostOption(eGameHostOption_All);
+ WinsockNetLayer::StartAdvertising(port, hostName, settings, 0, 0, MINECRAFT_NET_VERSION);
+ }
+#endif
//#endif
}
@@ -275,9 +392,54 @@ bool CPlatformNetworkManagerStub::_StartGame()
return true;
}
-int CPlatformNetworkManagerStub::JoinGame(FriendSessionInfo *searchResult, int localUsersMask, int primaryUserIndex)
+int CPlatformNetworkManagerStub::JoinGame(FriendSessionInfo* searchResult, int localUsersMask, int primaryUserIndex)
{
+#ifdef _WINDOWS64
+ if (searchResult == NULL)
+ return CGameNetworkManager::JOINGAME_FAIL_GENERAL;
+
+ const char* hostIP = searchResult->data.hostIP;
+ int hostPort = searchResult->data.hostPort;
+
+ if (hostPort <= 0 || hostIP[0] == 0)
+ return CGameNetworkManager::JOINGAME_FAIL_GENERAL;
+
+ m_bLeavingGame = false;
+ IQNet::s_isHosting = false;
+ m_pIQNet->ClientJoinGame();
+
+ IQNet::m_player[0].m_smallId = 0;
+ IQNet::m_player[0].m_isRemote = true;
+ IQNet::m_player[0].m_isHostPlayer = true;
+ wcsncpy_s(IQNet::m_player[0].m_gamertag, 32, searchResult->data.hostName, _TRUNCATE);
+
+ WinsockNetLayer::StopDiscovery();
+
+ if (!WinsockNetLayer::JoinGame(hostIP, hostPort))
+ {
+ app.DebugPrintf("Win64 LAN: Failed to connect to %s:%d\n", hostIP, hostPort);
+ return CGameNetworkManager::JOINGAME_FAIL_GENERAL;
+ }
+
+ BYTE localSmallId = WinsockNetLayer::GetLocalSmallId();
+
+ IQNet::m_player[localSmallId].m_smallId = localSmallId;
+ IQNet::m_player[localSmallId].m_isRemote = false;
+ IQNet::m_player[localSmallId].m_isHostPlayer = false;
+
+ Minecraft* pMinecraft = Minecraft::GetInstance();
+ wcscpy_s(IQNet::m_player[localSmallId].m_gamertag, 32, pMinecraft->user->name.c_str());
+ IQNet::s_playerCount = localSmallId + 1;
+
+ NotifyPlayerJoined(&IQNet::m_player[0]);
+ NotifyPlayerJoined(&IQNet::m_player[localSmallId]);
+
+ m_pGameNetworkManager->StateChange_AnyToStarting();
+
+ return CGameNetworkManager::JOINGAME_SUCCESS;
+#else
return CGameNetworkManager::JOINGAME_SUCCESS;
+#endif
}
bool CPlatformNetworkManagerStub::SetLocalGame(bool isLocal)
@@ -315,6 +477,22 @@ void CPlatformNetworkManagerStub::HandleSignInChange()
bool CPlatformNetworkManagerStub::_RunNetworkGame()
{
+#ifdef _WINDOWS64
+ extern QNET_STATE _iQNetStubState;
+ _iQNetStubState = QNET_STATE_GAME_PLAY;
+
+ for (DWORD i = 0; i < IQNet::s_playerCount; i++)
+ {
+ if (IQNet::m_player[i].m_isRemote)
+ {
+ INetworkPlayer* pNetworkPlayer = getNetworkPlayer(&IQNet::m_player[i]);
+ if (pNetworkPlayer != NULL && pNetworkPlayer->GetSocket() != NULL)
+ {
+ Socket::addIncomingSocket(pNetworkPlayer->GetSocket());
+ }
+ }
+ }
+#endif
return true;
}
@@ -503,10 +681,60 @@ wstring CPlatformNetworkManagerStub::GatherRTTStats()
void CPlatformNetworkManagerStub::TickSearch()
{
+#ifdef _WINDOWS64
+ if (m_SessionsUpdatedCallback == NULL)
+ return;
+
+ static DWORD lastSearchTime = 0;
+ DWORD now = GetTickCount();
+ if (now - lastSearchTime < 2000)
+ return;
+ lastSearchTime = now;
+
+ SearchForGames();
+#endif
}
void CPlatformNetworkManagerStub::SearchForGames()
{
+#ifdef _WINDOWS64
+ std::vector<Win64LANSession> lanSessions = WinsockNetLayer::GetDiscoveredSessions();
+
+ for (size_t i = 0; i < friendsSessions[0].size(); i++)
+ delete friendsSessions[0][i];
+ friendsSessions[0].clear();
+
+ for (size_t i = 0; i < lanSessions.size(); i++)
+ {
+ FriendSessionInfo* info = new FriendSessionInfo();
+ size_t nameLen = wcslen(lanSessions[i].hostName);
+ info->displayLabel = new wchar_t[nameLen + 1];
+ wcscpy_s(info->displayLabel, nameLen + 1, lanSessions[i].hostName);
+ info->displayLabelLength = (unsigned char)nameLen;
+ info->displayLabelViewableStartIndex = 0;
+
+ info->data.netVersion = lanSessions[i].netVersion;
+ info->data.m_uiGameHostSettings = lanSessions[i].gameHostSettings;
+ info->data.texturePackParentId = lanSessions[i].texturePackParentId;
+ info->data.subTexturePackId = lanSessions[i].subTexturePackId;
+ info->data.isReadyToJoin = lanSessions[i].isJoinable;
+ info->data.isJoinable = lanSessions[i].isJoinable;
+ strncpy_s(info->data.hostIP, sizeof(info->data.hostIP), lanSessions[i].hostIP, _TRUNCATE);
+ info->data.hostPort = lanSessions[i].hostPort;
+ wcsncpy_s(info->data.hostName, XUSER_NAME_SIZE, lanSessions[i].hostName, _TRUNCATE);
+ info->data.playerCount = lanSessions[i].playerCount;
+ info->data.maxPlayers = lanSessions[i].maxPlayers;
+
+ info->sessionId = (SessionID)((unsigned __int64)inet_addr(lanSessions[i].hostIP) | ((unsigned __int64)lanSessions[i].hostPort << 32));
+
+ friendsSessions[0].push_back(info);
+ }
+
+ m_searchResultsCount[0] = (int)friendsSessions[0].size();
+
+ if (m_SessionsUpdatedCallback != NULL)
+ m_SessionsUpdatedCallback(m_pSearchParam);
+#endif
}
int CPlatformNetworkManagerStub::SearchForGamesThreadProc( void* lpParameter )
@@ -522,7 +750,9 @@ void CPlatformNetworkManagerStub::SetSearchResultsReady(int resultCount)
vector<FriendSessionInfo *> *CPlatformNetworkManagerStub::GetSessionList(int iPad, int localPlayers, bool partyOnly)
{
- vector<FriendSessionInfo *> *filteredList = new vector<FriendSessionInfo *>();;
+ vector<FriendSessionInfo*>* filteredList = new vector<FriendSessionInfo*>();
+ for (size_t i = 0; i < friendsSessions[0].size(); i++)
+ filteredList->push_back(friendsSessions[0][i]);
return filteredList;
}
diff --git a/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.h b/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.h
index f997dece..28953cec 100644
--- a/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.h
+++ b/Minecraft.Client/Common/Network/PlatformNetworkManagerStub.h
@@ -161,8 +161,9 @@ public:
virtual void GetFullFriendSessionInfo( FriendSessionInfo *foundSession, void (* FriendSessionUpdatedFn)(bool success, void *pParam), void *pParam );
virtual void ForceFriendsSessionRefresh();
-private:
+public:
void NotifyPlayerJoined( IQNetPlayer *pQNetPlayer );
+ void NotifyPlayerLeaving(IQNetPlayer* pQNetPlayer);
#ifndef _XBOX
void FakeLocalPlayerJoined() { NotifyPlayerJoined(m_pIQNet->GetLocalPlayerByUserIndex(0)); }
diff --git a/Minecraft.Client/Common/Network/SessionInfo.h b/Minecraft.Client/Common/Network/SessionInfo.h
index 31472a19..ce6365bc 100644
--- a/Minecraft.Client/Common/Network/SessionInfo.h
+++ b/Minecraft.Client/Common/Network/SessionInfo.h
@@ -23,9 +23,9 @@ typedef struct _GameSessionData
_GameSessionData()
{
netVersion = 0;
- memset(hostName,0,XUSER_NAME_SIZE);
- memset(players,0,MINECRAFT_NET_MAX_PLAYERS*sizeof(players[0]));
- memset(szPlayers,0,MINECRAFT_NET_MAX_PLAYERS*XUSER_NAME_SIZE);
+ memset(hostName, 0, XUSER_NAME_SIZE);
+ memset(players, 0, MINECRAFT_NET_MAX_PLAYERS * sizeof(players[0]));
+ memset(szPlayers, 0, MINECRAFT_NET_MAX_PLAYERS * XUSER_NAME_SIZE);
isJoinable = true;
m_uiGameHostSettings = 0;
texturePackParentId = 0;
@@ -50,7 +50,7 @@ typedef struct _GameSessionData
_GameSessionData()
{
netVersion = 0;
- memset(players,0,MINECRAFT_NET_MAX_PLAYERS*sizeof(players[0]));
+ memset(players, 0, MINECRAFT_NET_MAX_PLAYERS * sizeof(players[0]));
isJoinable = true;
m_uiGameHostSettings = 0;
texturePackParentId = 0;
@@ -63,12 +63,19 @@ typedef struct _GameSessionData
#else
typedef struct _GameSessionData
{
- unsigned short netVersion; // 2 bytes
- unsigned int m_uiGameHostSettings; // 4 bytes
- unsigned int texturePackParentId; // 4 bytes
- unsigned char subTexturePackId; // 1 byte
+ unsigned short netVersion;
+ unsigned int m_uiGameHostSettings;
+ unsigned int texturePackParentId;
+ unsigned char subTexturePackId;
- bool isReadyToJoin; // 1 byte
+ bool isReadyToJoin;
+ bool isJoinable;
+
+ char hostIP[64];
+ int hostPort;
+ wchar_t hostName[XUSER_NAME_SIZE];
+ unsigned char playerCount;
+ unsigned char maxPlayers;
_GameSessionData()
{
@@ -76,6 +83,13 @@ typedef struct _GameSessionData
m_uiGameHostSettings = 0;
texturePackParentId = 0;
subTexturePackId = 0;
+ isReadyToJoin = false;
+ isJoinable = true;
+ memset(hostIP, 0, sizeof(hostIP));
+ hostPort = 0;
+ memset(hostName, 0, sizeof(hostName));
+ playerCount = 0;
+ maxPlayers = MINECRAFT_NET_MAX_PLAYERS;
}
} GameSessionData;
#endif
@@ -91,7 +105,7 @@ public:
#elif defined(_DURANGO)
DQRNetworkManager::SessionSearchResult searchResult;
#endif
- wchar_t *displayLabel;
+ wchar_t* displayLabel;
unsigned char displayLabelLength;
unsigned char displayLabelViewableStartIndex;
GameSessionData data;
@@ -107,7 +121,7 @@ public:
~FriendSessionInfo()
{
- if(displayLabel!=NULL)
+ if (displayLabel != NULL)
delete displayLabel;
}
};
diff --git a/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.cpp b/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.cpp
index 9c750e95..a7a4628b 100644
--- a/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.cpp
+++ b/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.cpp
@@ -5,6 +5,7 @@ NetworkPlayerSony::NetworkPlayerSony(SQRNetworkPlayer *qnetPlayer)
{
m_sqrPlayer = qnetPlayer;
m_pSocket = NULL;
+ m_lastChunkPacketTime = 0;
}
unsigned char NetworkPlayerSony::GetSmallId()
@@ -12,10 +13,10 @@ unsigned char NetworkPlayerSony::GetSmallId()
return m_sqrPlayer->GetSmallId();
}
-void NetworkPlayerSony::SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority)
+void NetworkPlayerSony::SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority, bool ack)
{
// TODO - handle priority
- m_sqrPlayer->SendData( ((NetworkPlayerSony *)player)->m_sqrPlayer, pvData, dataSize );
+ m_sqrPlayer->SendData( ((NetworkPlayerSony *)player)->m_sqrPlayer, pvData, dataSize, ack );
}
bool NetworkPlayerSony::IsSameSystem(INetworkPlayer *player)
@@ -23,14 +24,19 @@ bool NetworkPlayerSony::IsSameSystem(INetworkPlayer *player)
return m_sqrPlayer->IsSameSystem(((NetworkPlayerSony *)player)->m_sqrPlayer);
}
+int NetworkPlayerSony::GetOutstandingAckCount()
+{
+ return m_sqrPlayer->GetOutstandingAckCount();
+}
+
int NetworkPlayerSony::GetSendQueueSizeBytes( INetworkPlayer *player, bool lowPriority )
{
- return 0; // TODO
+ return m_sqrPlayer->GetSendQueueSizeBytes();
}
int NetworkPlayerSony::GetSendQueueSizeMessages( INetworkPlayer *player, bool lowPriority )
{
- return 0; // TODO
+ return m_sqrPlayer->GetSendQueueSizeMessages();
}
int NetworkPlayerSony::GetCurrentRtt()
@@ -112,3 +118,20 @@ void NetworkPlayerSony::SetUID(PlayerUID UID)
{
m_sqrPlayer->SetUID(UID);
}
+
+void NetworkPlayerSony::SentChunkPacket()
+{
+ m_lastChunkPacketTime = System::currentTimeMillis();
+}
+
+int NetworkPlayerSony::GetTimeSinceLastChunkPacket_ms()
+{
+ // If we haven't ever sent a packet, return maximum
+ if( m_lastChunkPacketTime == 0 )
+ {
+ return INT_MAX;
+ }
+
+ __int64 currentTime = System::currentTimeMillis();
+ return (int)( currentTime - m_lastChunkPacketTime );
+}
diff --git a/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.h b/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.h
index 5c8605fb..f3415a41 100644
--- a/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.h
+++ b/Minecraft.Client/Common/Network/Sony/NetworkPlayerSony.h
@@ -11,8 +11,9 @@ public:
// Common player interface
NetworkPlayerSony(SQRNetworkPlayer *sqrPlayer);
virtual unsigned char GetSmallId();
- virtual void SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority);
+ virtual void SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority, bool ack);
virtual bool IsSameSystem(INetworkPlayer *player);
+ virtual int GetOutstandingAckCount();
virtual int GetSendQueueSizeBytes( INetworkPlayer *player, bool lowPriority );
virtual int GetSendQueueSizeMessages( INetworkPlayer *player, bool lowPriority );
virtual int GetCurrentRtt();
@@ -33,7 +34,10 @@ public:
void SetUID(PlayerUID UID);
+ virtual void SentChunkPacket();
+ virtual int GetTimeSinceLastChunkPacket_ms();
private:
SQRNetworkPlayer *m_sqrPlayer;
Socket *m_pSocket;
+ __int64 m_lastChunkPacketTime;
};
diff --git a/Minecraft.Client/Common/Network/Sony/PlatformNetworkManagerSony.cpp b/Minecraft.Client/Common/Network/Sony/PlatformNetworkManagerSony.cpp
index 009993cb..67fd058c 100644
--- a/Minecraft.Client/Common/Network/Sony/PlatformNetworkManagerSony.cpp
+++ b/Minecraft.Client/Common/Network/Sony/PlatformNetworkManagerSony.cpp
@@ -54,10 +54,8 @@ void CPlatformNetworkManagerSony::HandleStateChange(SQRNetworkManager::eSQRNetwo
else if( newState == SQRNetworkManager::SNM_STATE_JOINING )
{
// 4J Stu - We may be accepting an invite from the DLC menu, so hide the icon
-#ifdef __ORBIS__
- sceNpCommerceHidePsStoreIcon();
-#elif defined __PSVITA__
- sceNpCommerce2HidePsStoreIcon();
+#if defined __ORBIS__ || defined __PSVITA__
+ app.GetCommerce()->HidePsStoreIcon();
#endif
m_bLeavingGame = false;
m_bLeaveGameOnTick = false;
@@ -459,16 +457,16 @@ int CPlatformNetworkManagerSony::CorrectErrorIDS(int IDS)
// Determine if we'd prefer to present errors as a signing out issue, rather than a network issue, based on whether we have a network connection at all or not
bool preferSignoutError = false;
int state;
-#ifdef __PS3__
+
+#if defined __PSVITA__ // MGH - to fix devtrack #6258
+ if(!ProfileManager.IsSignedInPSN(ProfileManager.GetPrimaryPad()))
+ preferSignoutError = true;
+#elif defined __ORBIS__
+ if(!ProfileManager.isSignedInPSN(ProfileManager.GetPrimaryPad()))
+ preferSignoutError = true;
+#elif defined __PS3__
int ret = cellNetCtlGetState( &state );
int IPObtainedState = CELL_NET_CTL_STATE_IPObtained;
-#elif defined __ORBIS__
- int ret = sceNetCtlGetState( &state );
- int IPObtainedState = SCE_NET_CTL_STATE_IPOBTAINED;
-#elif defined __PSVITA__
- int ret = sceNetCtlInetGetState( &state );
- int IPObtainedState = SCE_NET_CTL_STATE_IPOBTAINED;
-#endif
if( ret == 0 )
{
if( state == IPObtainedState )
@@ -476,6 +474,7 @@ int CPlatformNetworkManagerSony::CorrectErrorIDS(int IDS)
preferSignoutError = true;
}
}
+#endif
#ifdef __PSVITA__
// If we're in ad-hoc mode this problem definitely wasn't PSN related
@@ -1446,7 +1445,8 @@ void CPlatformNetworkManagerSony::startAdhocMatching( )
bool CPlatformNetworkManagerSony::checkValidInviteData(const INVITE_INFO* pInviteInfo)
{
- if(((SQRNetworkManager_Vita*)m_pSQRNet_Vita)->GetHostUID() == pInviteInfo->hostPlayerUID)
+ SQRNetworkManager_Vita* pSQR = (SQRNetworkManager_Vita*)m_pSQRNet_Vita;
+ if(pSQR->IsOnlineGame() && !pSQR->IsHost()&& (pSQR->GetHostUID() == pInviteInfo->hostPlayerUID))
{
// we're trying to join a game we're already in, so we just ignore this
return false;
diff --git a/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp b/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp
index 20f2641c..f23a0a63 100644
--- a/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp
+++ b/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp
@@ -8,3 +8,76 @@ void SQRNetworkManager::SafeToRespondToGameBootInvite()
{
s_safeToRespondToGameBootInvite = true;
}
+
+int SQRNetworkManager::GetSendQueueSizeBytes()
+{
+ int queueSize = 0;
+ int playerCount = GetPlayerCount();
+ for(int i = 0; i < playerCount; ++i)
+ {
+ SQRNetworkPlayer *player = GetPlayerByIndex( i );
+ if( player != NULL )
+ {
+ queueSize += player->GetTotalSendQueueBytes();
+ }
+ }
+ return queueSize;
+}
+
+int SQRNetworkManager::GetSendQueueSizeMessages()
+{
+ int queueSize = 0;
+ int playerCount = GetPlayerCount();
+ for(int i = 0; i < playerCount; ++i)
+ {
+ SQRNetworkPlayer *player = GetPlayerByIndex( i );
+ if( player != NULL )
+ {
+ queueSize += player->GetTotalSendQueueMessages();
+ }
+ }
+ return queueSize;
+}
+
+int SQRNetworkManager::GetOutstandingAckCount(SQRNetworkPlayer *pSQRPlayer)
+{
+ int ackCount = 0;
+ int playerCount = GetPlayerCount();
+ for(int i = 0; i < playerCount; ++i)
+ {
+ SQRNetworkPlayer *pSQRPlayer2 = GetPlayerByIndex( i );
+ if( pSQRPlayer2 )
+ {
+ if( ( pSQRPlayer == pSQRPlayer2 ) || (pSQRPlayer->IsSameSystem(pSQRPlayer2) ) )
+ {
+ ackCount += pSQRPlayer2->m_acksOutstanding;
+ }
+ }
+ }
+ return ackCount;
+}
+
+void SQRNetworkManager::RequestWriteAck(int smallId)
+{
+ EnterCriticalSection(&m_csAckQueue);
+ m_queuedAckRequests.push(smallId);
+ LeaveCriticalSection(&m_csAckQueue);
+}
+
+void SQRNetworkManager::TickWriteAcks()
+{
+ EnterCriticalSection(&m_csAckQueue);
+ while(m_queuedAckRequests.size() > 0)
+ {
+ int smallId = m_queuedAckRequests.front();
+ m_queuedAckRequests.pop();
+ SQRNetworkPlayer *player = GetPlayerBySmallId(smallId);
+ if( player )
+ {
+ LeaveCriticalSection(&m_csAckQueue);
+ player->WriteAck();
+ EnterCriticalSection(&m_csAckQueue);
+ }
+ }
+ LeaveCriticalSection(&m_csAckQueue);
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.h b/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.h
index c93368d8..e3f15aca 100644
--- a/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.h
+++ b/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.h
@@ -11,6 +11,9 @@
#include <queue>
#include <unordered_map>
+#if defined __PSVITA__
+#include "..\..\Minecraft.Client\PSVita\4JLibs\inc\4J_Profile.h"
+#endif
class SQRNetworkPlayer;
class ISQRNetworkManagerListener;
@@ -30,7 +33,9 @@ public:
protected:
friend class SQRNetworkPlayer;
friend class SonyVoiceChat;
-
+#ifdef __PSVITA__
+ friend class HelloSyncInfo;
+#endif
static const int MAX_FRIENDS = 100;
#ifdef __PS3__
@@ -231,6 +236,8 @@ protected:
std::queue<StateChangeInfo> m_stateChangeQueue;
CRITICAL_SECTION m_csStateChangeQueue;
CRITICAL_SECTION m_csMatching;
+ CRITICAL_SECTION m_csAckQueue;
+ std::queue<int> m_queuedAckRequests;
typedef enum
{
@@ -295,6 +302,13 @@ public:
static void SafeToRespondToGameBootInvite();
+ int GetOutstandingAckCount(SQRNetworkPlayer *pSonyPlayer);
+ int GetSendQueueSizeBytes();
+ int GetSendQueueSizeMessages();
+ void RequestWriteAck(int smallId);
+ void TickWriteAcks();
+
+
};
diff --git a/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.cpp b/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.cpp
index e244b34c..a040b28b 100644
--- a/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.cpp
+++ b/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.cpp
@@ -16,6 +16,15 @@
#endif
+//#define PRINT_ACK_STATS
+
+#ifdef __PS3__
+static const int sc_wouldBlockFlag = CELL_RUDP_ERROR_WOULDBLOCK;
+#else // __ORBIS__
+static const int sc_wouldBlockFlag = SCE_RUDP_ERROR_WOULDBLOCK;
+#endif
+
+
static const bool sc_verbose = false;
@@ -84,6 +93,8 @@ SQRNetworkPlayer::SQRNetworkPlayer(SQRNetworkManager *manager, eSQRNetworkPlayer
m_host = onHost;
m_manager = manager;
m_customData = 0;
+ m_acksOutstanding = 0;
+ m_totalBytesInSendQueue = 0;
if( pUID )
{
memcpy(&m_ISD.m_UID,pUID,sizeof(PlayerUID));
@@ -102,6 +113,7 @@ SQRNetworkPlayer::SQRNetworkPlayer(SQRNetworkManager *manager, eSQRNetworkPlayer
}
SetNameFromUID();
InitializeCriticalSection(&m_csQueue);
+ InitializeCriticalSection(&m_csAcks);
#ifdef __ORBIS__
if(IsLocal())
{
@@ -109,6 +121,14 @@ SQRNetworkPlayer::SQRNetworkPlayer(SQRNetworkManager *manager, eSQRNetworkPlayer
}
#endif
+#ifndef _CONTENT_PACKAGE
+ m_minAckTime = INT_MAX;
+ m_maxAckTime = 0;
+ m_totalAcks = 0;
+ m_totalAckTime = 0;
+ m_averageAckTime = 0;
+#endif
+
}
SQRNetworkPlayer::~SQRNetworkPlayer()
@@ -190,13 +210,8 @@ bool SQRNetworkPlayer::HasSmallIdConfirmed()
// To confirm to the host that we are ready, send a single byte with our small id.
void SQRNetworkPlayer::ConfirmReady()
{
-#ifdef __PS3__
- int ret = cellRudpWrite( m_rudpCtx, &m_ISD, sizeof(InitSendData), CELL_RUDP_MSG_LATENCY_CRITICAL );
-#else //__ORBIS__
- int ret = sceRudpWrite( m_rudpCtx, &m_ISD, sizeof(InitSendData), SCE_RUDP_MSG_LATENCY_CRITICAL );
-#endif
- // TODO - error handling here?
- assert ( ret == sizeof(InitSendData) );
+ SendInternal(&m_ISD, sizeof(InitSendData), e_flag_AckNotRequested);
+
// Final flag for a local player on the client, as we are now safe to send data on to the host
m_host ? app.DebugPrintf(sc_verbose, "host : ") : app.DebugPrintf(sc_verbose, "client:");
app.DebugPrintf(sc_verbose, ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Small ID confirmed\n");
@@ -205,8 +220,9 @@ void SQRNetworkPlayer::ConfirmReady()
// Attempt to send data, of any size, from this player to that specified by pPlayerTarget. This may not be possible depending on the two players, due to
// our star shaped network connectivity. Data may be any size, and is copied so on returning from this method it does not need to be preserved.
-void SQRNetworkPlayer::SendData( SQRNetworkPlayer *pPlayerTarget, const void *data, unsigned int dataSize )
+void SQRNetworkPlayer::SendData( SQRNetworkPlayer *pPlayerTarget, const void *data, unsigned int dataSize, bool ack )
{
+ AckFlags ackFlags = ack ? e_flag_AckRequested : e_flag_AckNotRequested;
// Our network is connected as a star. If we are the host, then we can send to any remote player. If we're a client, we can send only to the host.
// The host can also send to other local players, but this doesn't need to go through Rudp.
if( m_host )
@@ -224,7 +240,7 @@ void SQRNetworkPlayer::SendData( SQRNetworkPlayer *pPlayerTarget, const void *da
else if( ( m_type == SNP_TYPE_HOST ) && ( pPlayerTarget->m_type == SNP_TYPE_REMOTE ) )
{
// Rudp communication from host to remote player - handled by remote player instance
- pPlayerTarget->SendInternal(data,dataSize);
+ pPlayerTarget->SendInternal(data,dataSize, ackFlags);
}
else
{
@@ -237,7 +253,7 @@ void SQRNetworkPlayer::SendData( SQRNetworkPlayer *pPlayerTarget, const void *da
if( ( m_type == SNP_TYPE_LOCAL ) && ( pPlayerTarget->m_type == SNP_TYPE_HOST ) )
{
// Rudp communication from client to host - handled by this player instace
- SendInternal(data, dataSize);
+ SendInternal(data, dataSize, ackFlags);
}
else
{
@@ -250,15 +266,30 @@ void SQRNetworkPlayer::SendData( SQRNetworkPlayer *pPlayerTarget, const void *da
// Internal send function - to simplify the number of mechanisms we have for sending data, this method just adds the data to be send to the player's internal queue,
// and then calls SendMoreInternal. This method can take any size of data, which it will split up into payload size chunks before sending. All input data is copied
// into internal buffers.
-void SQRNetworkPlayer::SendInternal(const void *data, unsigned int dataSize)
+void SQRNetworkPlayer::SendInternal(const void *data, unsigned int dataSize, AckFlags ackFlags)
{
EnterCriticalSection(&m_csQueue);
-
+ bool bOutstandingPackets = (m_sendQueue.size() > 0); // check if there are still packets in the queue, we won't be calling SendMoreInternal here if there are
QueuedSendBlock sendBlock;
unsigned char *dataCurrent = (unsigned char *)data;
unsigned int dataRemaining = dataSize;
+ if(ackFlags == e_flag_AckReturning)
+ {
+ // no data, just the flag
+ assert(dataSize == 0);
+ assert(data == NULL);
+ int dataSize = dataRemaining;
+ if( dataSize > SNP_MAX_PAYLOAD ) dataSize = SNP_MAX_PAYLOAD;
+ sendBlock.start = NULL;
+ sendBlock.end = NULL;
+ sendBlock.current = NULL;
+ sendBlock.ack = ackFlags;
+ m_sendQueue.push(sendBlock);
+ }
+ else
+ {
while( dataRemaining )
{
int dataSize = dataRemaining;
@@ -266,19 +297,203 @@ void SQRNetworkPlayer::SendInternal(const void *data, unsigned int dataSize)
sendBlock.start = new unsigned char [dataSize];
sendBlock.end = sendBlock.start + dataSize;
sendBlock.current = sendBlock.start;
+ sendBlock.ack = ackFlags;
memcpy( sendBlock.start, dataCurrent, dataSize);
m_sendQueue.push(sendBlock);
dataRemaining -= dataSize;
dataCurrent += dataSize;
}
- // Now try and send as much as we can
- SendMoreInternal();
+ }
+ m_totalBytesInSendQueue += dataSize;
+
+ // if the queue had something in it already, then the UDP callback will fire and call SendMoreInternal
+ // so we don't call it here, to avoid a deadlock
+ if(!bOutstandingPackets)
+ {
+ // Now try and send as much as we can
+ SendMoreInternal();
+ }
LeaveCriticalSection(&m_csQueue);
}
+int SQRNetworkPlayer::WriteDataPacket(const void* data, int dataSize, AckFlags ackFlags)
+ {
+ DataPacketHeader header(dataSize, ackFlags);
+ int headerSize = sizeof(header);
+ int packetSize = dataSize+headerSize;
+ unsigned char* packetData = new unsigned char[packetSize];
+ *((DataPacketHeader*)packetData) = header;
+ memcpy(&packetData[headerSize], data, dataSize);
+
+#ifndef _CONTENT_PACKAGE
+ if(ackFlags == e_flag_AckRequested)
+ m_ackStats.push_back(System::currentTimeMillis());
+#endif
+
+#ifdef __PS3__
+ int ret = cellRudpWrite( m_rudpCtx, packetData, packetSize, 0);//CELL_RUDP_MSG_LATENCY_CRITICAL );
+#else // __ORBIS__ && __PSVITA__
+ int ret = sceRudpWrite( m_rudpCtx, packetData, packetSize, 0);//SCE_RUDP_MSG_LATENCY_CRITICAL );
+#endif
+ if(ret == sc_wouldBlockFlag)
+ {
+ // nothing was sent!
+ }
+ else
+ {
+ assert(ret==packetSize || ret > headerSize); // we must make sure we've sent the entire packet or the header and some data at least
+ ret -= headerSize;
+ if(ackFlags == e_flag_AckRequested)
+ {
+ EnterCriticalSection(&m_csAcks);
+ m_acksOutstanding++;
+ LeaveCriticalSection(&m_csAcks);
+ }
+ }
+ delete packetData;
+
+ return ret;
+}
+
+int SQRNetworkPlayer::GetPacketDataSize()
+{
+ unsigned int ackFlag;
+ int headerSize = sizeof(ackFlag);
+#ifdef __PS3__
+ unsigned int packetSize = cellRudpGetSizeReadable(m_rudpCtx);
+#else
+ unsigned int packetSize = sceRudpGetSizeReadable(m_rudpCtx);
+#endif
+ if(packetSize == 0)
+ return 0;
+
+ unsigned int dataSize = packetSize - headerSize;
+ assert(dataSize >= 0);
+ if(dataSize == 0)
+ {
+ // header only, must just be an ack returning
+ ReadAck();
+ }
+ return dataSize;
+}
+
+int SQRNetworkPlayer::ReadDataPacket(void* data, int dataSize)
+{
+ int headerSize = sizeof(DataPacketHeader);
+ int packetSize = dataSize+headerSize;
+
+ unsigned char* packetData = new unsigned char[packetSize];
+#ifdef __PS3__
+ int bytesRead = cellRudpRead( m_rudpCtx, packetData, packetSize, 0, NULL );
+#else // __ORBIS__ && __PSVITA__
+ int bytesRead = sceRudpRead( m_rudpCtx, packetData, packetSize, 0, NULL );
+#endif
+ if(bytesRead == sc_wouldBlockFlag)
+ {
+ delete packetData;
+ return 0;
+ }
+ // check the header, and see if we need to send back an ack
+ DataPacketHeader header = *((DataPacketHeader*)packetData);
+ if(header.GetAckFlags() == e_flag_AckRequested)
+ {
+ // Don't send the ack back directly from here, as this is called from a rudp event callback, and we end up in a thread lock situation between the lock librudp uses
+ // internally (which is locked already here since we are being called in the event handler), and our own lock that we do for processing our write queue
+ m_manager->RequestWriteAck(GetSmallId());
+ }
+ else
+ {
+ assert(header.GetAckFlags() == e_flag_AckNotRequested);
+ }
+ if(bytesRead > 0)
+ {
+ bytesRead -= headerSize;
+ memcpy(data, &packetData[headerSize], bytesRead);
+ }
+ assert(header.GetDataSize() == bytesRead);
+
+ delete packetData;
+
+ return bytesRead;
+}
+
+
+
+void SQRNetworkPlayer::ReadAck()
+{
+ DataPacketHeader header;
+#ifdef __PS3__
+ int bytesRead = cellRudpRead( m_rudpCtx, &header, sizeof(header), 0, NULL );
+#else // __ORBIS__ && __PSVITA__
+ int bytesRead = sceRudpRead( m_rudpCtx, &header, sizeof(header), 0, NULL );
+#endif
+ if(bytesRead == sc_wouldBlockFlag)
+ {
+ return;
+ }
+
+ assert(header.GetAckFlags() == e_flag_AckReturning);
+ EnterCriticalSection(&m_csAcks);
+ m_acksOutstanding--;
+ assert(m_acksOutstanding >=0);
+ LeaveCriticalSection(&m_csAcks);
+
+#ifndef _CONTENT_PACKAGE
+#ifdef PRINT_ACK_STATS
+ __int64 timeTaken = System::currentTimeMillis() - m_ackStats[0];
+ if(timeTaken < m_minAckTime)
+ m_minAckTime = timeTaken;
+ if(timeTaken > m_maxAckTime)
+ m_maxAckTime = timeTaken;
+ m_totalAcks++;
+ m_totalAckTime += timeTaken;
+ m_averageAckTime = m_totalAckTime / m_totalAcks;
+ app.DebugPrintf("RUDP ctx : %d : Time taken for ack - %4d ms : min - %4d : max %4d : avg %4d\n", m_rudpCtx, timeTaken, m_minAckTime, m_maxAckTime, m_averageAckTime);
+ m_ackStats.erase(m_ackStats.begin());
+#endif
+#endif
+}
+
+void SQRNetworkPlayer::WriteAck()
+{
+ SendInternal(NULL, 0, e_flag_AckReturning);
+}
+
+int SQRNetworkPlayer::GetOutstandingAckCount()
+{
+ return m_manager->GetOutstandingAckCount(this);
+}
+
+int SQRNetworkPlayer::GetTotalOutstandingAckCount()
+{
+ return m_acksOutstanding;
+}
+
+int SQRNetworkPlayer::GetTotalSendQueueBytes()
+{
+ return m_totalBytesInSendQueue;
+}
+
+int SQRNetworkPlayer::GetTotalSendQueueMessages()
+{
+ CriticalSectionScopeLock lock(&m_csQueue);
+ return m_sendQueue.size();
+
+}
+
+int SQRNetworkPlayer::GetSendQueueSizeBytes()
+{
+ return m_manager->GetSendQueueSizeBytes();
+}
+
+int SQRNetworkPlayer::GetSendQueueSizeMessages()
+{
+ return m_manager->GetSendQueueSizeMessages();
+}
+
// Internal send function. This attempts to send as many elements in the queue as possible until the write function tells us that we can't send any more. This way,
@@ -287,6 +502,8 @@ void SQRNetworkPlayer::SendInternal(const void *data, unsigned int dataSize)
void SQRNetworkPlayer::SendMoreInternal()
{
EnterCriticalSection(&m_csQueue);
+ assert(m_sendQueue.size() > 0); // this should never be called with an empty queue.
+
bool keepSending;
do
{
@@ -296,17 +513,12 @@ void SQRNetworkPlayer::SendMoreInternal()
// Attempt to send the full data in the first element in our queue
unsigned char *data= m_sendQueue.front().current;
int dataSize = m_sendQueue.front().end - m_sendQueue.front().current;
-#ifdef __PS3__
- int ret = cellRudpWrite( m_rudpCtx, data, dataSize, 0);//CELL_RUDP_MSG_LATENCY_CRITICAL );
- int wouldBlockFlag = CELL_RUDP_ERROR_WOULDBLOCK;
+ int ret = WriteDataPacket(data, dataSize, m_sendQueue.front().ack);
-#else // __ORBIS__
- int ret = sceRudpWrite( m_rudpCtx, data, dataSize, 0);//CELL_RUDP_MSG_LATENCY_CRITICAL );
- int wouldBlockFlag = SCE_RUDP_ERROR_WOULDBLOCK;
-#endif
if( ret == dataSize )
{
// Fully sent, remove from queue - will loop in the while loop to see if there's anything else in the queue we could send
+ m_totalBytesInSendQueue -= ret;
delete [] m_sendQueue.front().start;
m_sendQueue.pop();
if( m_sendQueue.size() )
@@ -314,15 +526,15 @@ void SQRNetworkPlayer::SendMoreInternal()
keepSending = true;
}
}
- else if( ( ret >= 0 ) || ( ret == wouldBlockFlag ) )
+ else if( ( ret >= 0 ) || ( ret == sc_wouldBlockFlag ) )
{
-
// Things left to send - adjust this element in the queue
int remainingBytes;
if( ret >= 0 )
{
// Only ret bytes sent so far
+ m_totalBytesInSendQueue -= ret;
remainingBytes = dataSize - ret;
assert(remainingBytes > 0 );
}
diff --git a/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.h b/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.h
index 0cd56e8d..d0efe635 100644
--- a/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.h
+++ b/Minecraft.Client/Common/Network/Sony/SQRNetworkPlayer.h
@@ -48,12 +48,41 @@ class SQRNetworkPlayer
SNP_TYPE_REMOTE, // On host - this player's m_rupdCtx can be used to communicate from between the host and this player. On clients - this is a remote player that cannot be communicated with
} eSQRNetworkPlayerType;
+ enum AckFlags
+ {
+ e_flag_AckUnknown,
+ e_flag_AckNotRequested,
+ e_flag_AckRequested,
+ e_flag_AckReturning
+ };
+
+ class DataPacketHeader
+ {
+ unsigned short m_dataSize;
+ unsigned short m_ackFlags;
+ public:
+ DataPacketHeader() : m_dataSize(0), m_ackFlags(e_flag_AckUnknown) {}
+ DataPacketHeader(int dataSize, AckFlags ackFlags) : m_dataSize(dataSize), m_ackFlags(ackFlags) { }
+ AckFlags GetAckFlags() { return (AckFlags)m_ackFlags;}
+ int GetDataSize() { return m_dataSize; }
+ };
+
+#ifndef _CONTENT_PACKAGE
+ std::vector<__int64> m_ackStats;
+ int m_minAckTime;
+ int m_maxAckTime;
+ int m_totalAcks;
+ __int64 m_totalAckTime;
+ int m_averageAckTime;
+#endif
+
class QueuedSendBlock
{
public:
unsigned char *start;
unsigned char *end;
unsigned char *current;
+ AckFlags ack;
};
class InitSendData
@@ -75,11 +104,26 @@ class SQRNetworkPlayer
void InitialDataReceived(InitSendData *ISD); // Only for remote players as viewed from the host, this is set when the host has received confirmation that the client has received the small id for this player, ie it is now safe to send data to
bool HasSmallIdConfirmed();
- void SendData( SQRNetworkPlayer *pPlayerTarget, const void *data, unsigned int dataSize );
+ void SendData( SQRNetworkPlayer *pPlayerTarget, const void *data, unsigned int dataSize, bool ack );
void ConfirmReady();
- void SendInternal(const void *data, unsigned int dataSize);
+ void SendInternal(const void *data, unsigned int dataSize, AckFlags ackFlags);
void SendMoreInternal();
+ int GetPacketDataSize();
+ int ReadDataPacket(void* data, int dataSize);
+ int WriteDataPacket(const void* data, int dataSize, AckFlags ackFlags);
+ void ReadAck();
+ void WriteAck();
+
+ int GetOutstandingAckCount();
+ int GetSendQueueSizeBytes();
+ int GetSendQueueSizeMessages();
+
+ int GetTotalOutstandingAckCount();
+ int GetTotalSendQueueBytes();
+ int GetTotalSendQueueMessages();
+
+
#ifdef __PSVITA__
void SendInternal_VitaAdhoc(const void *data, unsigned int dataSize, EAdhocDataTag tag = e_dataTag_Normal);
void SendMoreInternal_VitaAdhoc();
@@ -99,5 +143,9 @@ class SQRNetworkPlayer
wchar_t m_name[21];
uintptr_t m_customData;
CRITICAL_SECTION m_csQueue;
+ CRITICAL_SECTION m_csAcks;
std::queue<QueuedSendBlock> m_sendQueue;
+ int m_totalBytesInSendQueue;
+
+ int m_acksOutstanding;
};
diff --git a/Minecraft.Client/Common/Network/Sony/SonyCommerce.h b/Minecraft.Client/Common/Network/Sony/SonyCommerce.h
index 6df04947..ff9423e8 100644
--- a/Minecraft.Client/Common/Network/Sony/SonyCommerce.h
+++ b/Minecraft.Client/Common/Network/Sony/SonyCommerce.h
@@ -170,4 +170,8 @@ public:
virtual void CheckForTrialUpgradeKey() = 0;
virtual bool LicenseChecked() = 0;
+#if defined __ORBIS__ || defined __PSVITA__
+ virtual void ShowPsStoreIcon() = 0;
+ virtual void HidePsStoreIcon() = 0;
+#endif
};
diff --git a/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.cpp b/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.cpp
index ccb1957d..4468d163 100644
--- a/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.cpp
+++ b/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.cpp
@@ -36,6 +36,37 @@ static SceRemoteStorageStatus statParams;
+void SonyRemoteStorage::SetRetrievedDescData()
+{
+ DescriptionData* pDescDataTest = (DescriptionData*)m_remoteFileInfo->fileDescription;
+ ESavePlatform testPlatform = (ESavePlatform)MAKE_FOURCC(pDescDataTest->m_platform[0], pDescDataTest->m_platform[1], pDescDataTest->m_platform[2], pDescDataTest->m_platform[3]);
+ if(testPlatform == SAVE_FILE_PLATFORM_NONE)
+ {
+ // new version of the descData
+ DescriptionData_V2* pDescData2 = (DescriptionData_V2*)m_remoteFileInfo->fileDescription;
+ m_retrievedDescData.m_descDataVersion = GetU32FromHexBytes(pDescData2->m_descDataVersion);
+ m_retrievedDescData.m_savePlatform = (ESavePlatform)MAKE_FOURCC(pDescData2->m_platform[0], pDescData2->m_platform[1], pDescData2->m_platform[2], pDescData2->m_platform[3]);
+ m_retrievedDescData.m_seed = GetU64FromHexBytes(pDescData2->m_seed);
+ m_retrievedDescData.m_hostOptions = GetU32FromHexBytes(pDescData2->m_hostOptions);
+ m_retrievedDescData.m_texturePack = GetU32FromHexBytes(pDescData2->m_texturePack);
+ m_retrievedDescData.m_saveVersion = GetU32FromHexBytes(pDescData2->m_saveVersion);
+ memcpy(m_retrievedDescData.m_saveNameUTF8, pDescData2->m_saveNameUTF8, sizeof(pDescData2->m_saveNameUTF8));
+ assert(m_retrievedDescData.m_descDataVersion > 1 && m_retrievedDescData.m_descDataVersion <= sc_CurrentDescDataVersion);
+ }
+ else
+ {
+ // old version,copy the data across to the new version
+ DescriptionData* pDescData = (DescriptionData*)m_remoteFileInfo->fileDescription;
+ m_retrievedDescData.m_descDataVersion = 1;
+ m_retrievedDescData.m_savePlatform = (ESavePlatform)MAKE_FOURCC(pDescData->m_platform[0], pDescData->m_platform[1], pDescData->m_platform[2], pDescData->m_platform[3]);
+ m_retrievedDescData.m_seed = GetU64FromHexBytes(pDescData->m_seed);
+ m_retrievedDescData.m_hostOptions = GetU32FromHexBytes(pDescData->m_hostOptions);
+ m_retrievedDescData.m_texturePack = GetU32FromHexBytes(pDescData->m_texturePack);
+ m_retrievedDescData.m_saveVersion = SAVE_FILE_VERSION_COMPRESSED_CHUNK_STORAGE; // the last save version before we added it to this data
+ memcpy(m_retrievedDescData.m_saveNameUTF8, pDescData->m_saveNameUTF8, sizeof(pDescData->m_saveNameUTF8));
+ }
+
+}
@@ -51,8 +82,9 @@ void getSaveInfoReturnCallback(LPVOID lpParam, SonyRemoteStorage::Status s, int
if(strcmp(statParams.data[i].fileName, sc_remoteSaveFilename) == 0)
{
// found the file we need in the cloud
- pRemoteStorage->m_getInfoStatus = SonyRemoteStorage::e_infoFound;
pRemoteStorage->m_remoteFileInfo = &statParams.data[i];
+ pRemoteStorage->SetRetrievedDescData();
+ pRemoteStorage->m_getInfoStatus = SonyRemoteStorage::e_infoFound;
}
}
}
@@ -104,7 +136,7 @@ void SonyRemoteStorage::getSaveInfo()
bool SonyRemoteStorage::getSaveData( const char* localDirname, CallbackFunc cb, LPVOID lpParam )
{
m_startTime = System::currentTimeMillis();
- m_dataProgress = 0;
+ m_dataProgress = -1;
return getData(sc_remoteSaveFilename, localDirname, cb, lpParam);
}
@@ -131,7 +163,9 @@ bool SonyRemoteStorage::setSaveData(PSAVE_INFO info, CallbackFunc cb, void* lpPa
m_setDataStatus = e_settingData;
m_initCallbackFunc = cb;
m_initCallbackParam = lpParam;
- m_dataProgress = 0;
+ m_dataProgress = -1;
+ m_uploadSaveSize = 0;
+ m_startTime = System::currentTimeMillis();
bool bOK = init(setSaveDataInitCallback, this);
if(!bOK)
m_setDataStatus = e_settingDataFailed;
@@ -148,16 +182,14 @@ const char* SonyRemoteStorage::getSaveNameUTF8()
{
if(m_getInfoStatus != e_infoFound)
return NULL;
- DescriptionData* pDescData = (DescriptionData*)m_remoteFileInfo->fileDescription;
- return pDescData->m_saveNameUTF8;
+ return m_retrievedDescData.m_saveNameUTF8;
}
ESavePlatform SonyRemoteStorage::getSavePlatform()
{
if(m_getInfoStatus != e_infoFound)
return SAVE_FILE_PLATFORM_NONE;
- DescriptionData* pDescData = (DescriptionData*)m_remoteFileInfo->fileDescription;
- return (ESavePlatform)MAKE_FOURCC(pDescData->m_platform[0], pDescData->m_platform[1], pDescData->m_platform[2], pDescData->m_platform[3]);
+ return m_retrievedDescData.m_savePlatform;
}
@@ -165,51 +197,23 @@ __int64 SonyRemoteStorage::getSaveSeed()
{
if(m_getInfoStatus != e_infoFound)
return 0;
- DescriptionData* pDescData = (DescriptionData*)m_remoteFileInfo->fileDescription;
-
- char seedString[17];
- ZeroMemory(seedString,17);
- memcpy(seedString, pDescData->m_seed,16);
- __uint64 seed = 0;
- std::stringstream ss;
- ss << seedString;
- ss >> std::hex >> seed;
- return seed;
+ return m_retrievedDescData.m_seed;
}
unsigned int SonyRemoteStorage::getSaveHostOptions()
{
if(m_getInfoStatus != e_infoFound)
return 0;
- DescriptionData* pDescData = (DescriptionData*)m_remoteFileInfo->fileDescription;
-
- char optionsString[9];
- ZeroMemory(optionsString,9);
- memcpy(optionsString, pDescData->m_hostOptions,8);
-
- unsigned int uiHostOptions = 0;
- std::stringstream ss;
- ss << optionsString;
- ss >> std::hex >> uiHostOptions;
- return uiHostOptions;
+ return m_retrievedDescData.m_hostOptions;
}
unsigned int SonyRemoteStorage::getSaveTexturePack()
{
if(m_getInfoStatus != e_infoFound)
return 0;
- DescriptionData* pDescData = (DescriptionData*)m_remoteFileInfo->fileDescription;
- char textureString[9];
- ZeroMemory(textureString,9);
- memcpy(textureString, pDescData->m_texturePack,8);
-
- unsigned int uiTexturePack = 0;
- std::stringstream ss;
- ss << textureString;
- ss >> std::hex >> uiTexturePack;
- return uiTexturePack;
+ return m_retrievedDescData.m_texturePack;
}
const char* SonyRemoteStorage::getRemoteSaveFilename()
@@ -292,14 +296,41 @@ bool SonyRemoteStorage::saveIsAvailable()
#endif
}
+bool SonyRemoteStorage::saveVersionSupported()
+{
+ return (m_retrievedDescData.m_saveVersion <= SAVE_FILE_VERSION_NUMBER);
+}
+
+
+
int SonyRemoteStorage::getDataProgress()
{
+ if(m_dataProgress < 0)
+ return 0;
+ int chunkSize = 1024*1024; // 1mb chunks when downloading
+ int totalSize = getSaveFilesize();
+ int transferRatePerSec = 300*1024; // a pessimistic download transfer rate
+ if(getStatus() == e_setDataInProgress)
+ {
+ chunkSize = 5 * 1024 * 1024; // 5mb chunks when uploading
+ totalSize = m_uploadSaveSize;
+ transferRatePerSec = 20*1024; // a pessimistic upload transfer rate
+ }
+ int sizeTransferred = (totalSize * m_dataProgress) / 100;
+ int nextChunk = ((sizeTransferred + chunkSize) * 100) / totalSize;
+
+
__int64 time = System::currentTimeMillis();
int elapsedSecs = (time - m_startTime) / 1000;
- int progVal = m_dataProgress + (elapsedSecs/3);
- if(progVal > 95)
+ float estimatedTransfered = float(elapsedSecs * transferRatePerSec);
+ int progVal = m_dataProgress + (estimatedTransfered / float(totalSize)) * 100;
+ if(progVal > nextChunk)
+ return nextChunk;
+ if(progVal > 99)
{
- return m_dataProgress;
+ if(m_dataProgress > 99)
+ return m_dataProgress;
+ return 99;
}
return progVal;
}
@@ -338,3 +369,139 @@ void SonyRemoteStorage::waitForStorageManagerIdle()
storageState = StorageManager.GetSaveState();
}
}
+void SonyRemoteStorage::GetDescriptionData(char* descData)
+{
+ switch(sc_CurrentDescDataVersion)
+ {
+ case 1:
+ {
+ DescriptionData descData_V1;
+ GetDescriptionData(descData_V1);
+ memcpy(descData, &descData_V1, sizeof(descData_V1));
+ }
+ break;
+ case 2:
+ {
+ DescriptionData_V2 descData_V2;
+ GetDescriptionData(descData_V2);
+ memcpy(descData, &descData_V2, sizeof(descData_V2));
+ }
+ break;
+ default:
+ assert(0);
+ break;
+ }
+}
+
+void SonyRemoteStorage::GetDescriptionData( DescriptionData& descData)
+{
+ ZeroMemory(&descData, sizeof(DescriptionData));
+ descData.m_platform[0] = SAVE_FILE_PLATFORM_LOCAL & 0xff;
+ descData.m_platform[1] = (SAVE_FILE_PLATFORM_LOCAL >> 8) & 0xff;
+ descData.m_platform[2] = (SAVE_FILE_PLATFORM_LOCAL >> 16) & 0xff;
+ descData.m_platform[3] = (SAVE_FILE_PLATFORM_LOCAL >> 24)& 0xff;
+
+ if(m_thumbnailData)
+ {
+ unsigned int uiHostOptions;
+ bool bHostOptionsRead;
+ DWORD uiTexturePack;
+ char seed[22];
+ app.GetImageTextData(m_thumbnailData, m_thumbnailDataSize,(unsigned char *)seed, uiHostOptions, bHostOptionsRead, uiTexturePack);
+
+ __int64 iSeed = strtoll(seed,NULL,10);
+ SetU64HexBytes(descData.m_seed, iSeed);
+ // Save the host options that this world was last played with
+ SetU32HexBytes(descData.m_hostOptions, uiHostOptions);
+ // Save the texture pack id
+ SetU32HexBytes(descData.m_texturePack, uiTexturePack);
+ }
+
+ memcpy(descData.m_saveNameUTF8, m_saveFileDesc, strlen(m_saveFileDesc));
+
+}
+
+void SonyRemoteStorage::GetDescriptionData( DescriptionData_V2& descData)
+{
+ ZeroMemory(&descData, sizeof(DescriptionData_V2));
+ descData.m_platformNone[0] = SAVE_FILE_PLATFORM_NONE & 0xff;
+ descData.m_platformNone[1] = (SAVE_FILE_PLATFORM_NONE >> 8) & 0xff;
+ descData.m_platformNone[2] = (SAVE_FILE_PLATFORM_NONE >> 16) & 0xff;
+ descData.m_platformNone[3] = (SAVE_FILE_PLATFORM_NONE >> 24)& 0xff;
+
+ // Save descData version
+ char descDataVersion[9];
+ sprintf(descDataVersion,"%08x",sc_CurrentDescDataVersion);
+ memcpy(descData.m_descDataVersion,descDataVersion,8); // Don't copy null
+
+
+ descData.m_platform[0] = SAVE_FILE_PLATFORM_LOCAL & 0xff;
+ descData.m_platform[1] = (SAVE_FILE_PLATFORM_LOCAL >> 8) & 0xff;
+ descData.m_platform[2] = (SAVE_FILE_PLATFORM_LOCAL >> 16) & 0xff;
+ descData.m_platform[3] = (SAVE_FILE_PLATFORM_LOCAL >> 24)& 0xff;
+
+ if(m_thumbnailData)
+ {
+ unsigned int uiHostOptions;
+ bool bHostOptionsRead;
+ DWORD uiTexturePack;
+ char seed[22];
+ app.GetImageTextData(m_thumbnailData, m_thumbnailDataSize,(unsigned char *)seed, uiHostOptions, bHostOptionsRead, uiTexturePack);
+
+ __int64 iSeed = strtoll(seed,NULL,10);
+ SetU64HexBytes(descData.m_seed, iSeed);
+ // Save the host options that this world was last played with
+ SetU32HexBytes(descData.m_hostOptions, uiHostOptions);
+ // Save the texture pack id
+ SetU32HexBytes(descData.m_texturePack, uiTexturePack);
+ // Save the savefile version
+ SetU32HexBytes(descData.m_saveVersion, SAVE_FILE_VERSION_NUMBER);
+ // clear out the future data with underscores
+ memset(descData.m_futureData, '_', sizeof(descData.m_futureData));
+ }
+
+ memcpy(descData.m_saveNameUTF8, m_saveFileDesc, strlen(m_saveFileDesc));
+
+}
+
+
+uint32_t SonyRemoteStorage::GetU32FromHexBytes(char* hexBytes)
+{
+ char hexString[9];
+ ZeroMemory(hexString,9);
+ memcpy(hexString, hexBytes,8);
+
+ uint32_t u32Val = 0;
+ std::stringstream ss;
+ ss << hexString;
+ ss >> std::hex >> u32Val;
+ return u32Val;
+}
+
+uint64_t SonyRemoteStorage::GetU64FromHexBytes(char* hexBytes)
+{
+ char hexString[17];
+ ZeroMemory(hexString,17);
+ memcpy(hexString, hexBytes,16);
+
+ uint64_t u64Val = 0;
+ std::stringstream ss;
+ ss << hexString;
+ ss >> std::hex >> u64Val;
+ return u64Val;
+
+}
+
+void SonyRemoteStorage::SetU32HexBytes(char* hexBytes, uint32_t u32)
+{
+ char hexString[9];
+ sprintf(hexString,"%08x",u32);
+ memcpy(hexBytes,hexString,8); // Don't copy null
+}
+
+void SonyRemoteStorage::SetU64HexBytes(char* hexBytes, uint64_t u64)
+{
+ char hexString[17];
+ sprintf(hexString,"%016llx",u64);
+ memcpy(hexBytes,hexString,16); // Don't copy null
+}
diff --git a/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.h b/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.h
index f435848e..d38a06e2 100644
--- a/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.h
+++ b/Minecraft.Client/Common/Network/Sony/SonyRemoteStorage.h
@@ -40,6 +40,7 @@ public:
PSAVE_INFO m_setSaveDataInfo;
SceRemoteStorageData* m_remoteFileInfo;
+ char m_saveFileDesc[128];
class DescriptionData
{
@@ -52,6 +53,47 @@ public:
char m_saveNameUTF8[128];
};
+ class DescriptionData_V2
+ {
+ // this stuff is read from a JSON query, so it all has to be text based, max 256 bytes
+ public:
+ char m_platformNone[4]; // set to no platform, to indicate we're using the newer version of the data
+ char m_descDataVersion[8]; // 4 bytes as hex - version number will be 2 in this case
+ char m_platform[4];
+ char m_seed[16]; // 8 bytes as hex
+ char m_hostOptions[8]; // 4 bytes as hex
+ char m_texturePack[8]; // 4 bytes as hex
+ char m_saveVersion[8]; // 4 bytes as hex
+ char m_futureData[64]; // some space for future data in case we need to expand this at all
+ char m_saveNameUTF8[128];
+ };
+
+ class DescriptionDataParsed
+ {
+ public:
+ int m_descDataVersion;
+ ESavePlatform m_savePlatform;
+ __int64 m_seed;
+ uint32_t m_hostOptions;
+ uint32_t m_texturePack;
+ uint32_t m_saveVersion;
+ char m_saveNameUTF8[128];
+ };
+
+ static const int sc_CurrentDescDataVersion = 2;
+
+ void GetDescriptionData(char* descData);
+ void GetDescriptionData(DescriptionData& descData);
+ void GetDescriptionData(DescriptionData_V2& descData);
+ uint32_t GetU32FromHexBytes(char* hexBytes);
+ uint64_t GetU64FromHexBytes(char* hexBytes);
+
+ void SetU32HexBytes(char* hexBytes, uint32_t u32);
+ void SetU64HexBytes(char* hexBytes, uint64_t u64);
+
+ DescriptionDataParsed m_retrievedDescData;
+ void SetRetrievedDescData();
+
CallbackFunc m_callbackFunc;
void* m_callbackParam;
@@ -62,6 +104,7 @@ public:
void getSaveInfo();
bool waitingForSaveInfo() { return (m_getInfoStatus == e_gettingInfo); }
bool saveIsAvailable();
+ bool saveVersionSupported();
int getSaveFilesize();
bool getSaveData(const char* localDirname, CallbackFunc cb, LPVOID lpParam);
@@ -115,6 +158,6 @@ protected:
bool m_bAborting;
bool m_bTransferStarted;
-
+ int m_uploadSaveSize;
};
diff --git a/Minecraft.Client/Common/Potion_Macros.h b/Minecraft.Client/Common/Potion_Macros.h
index 29f3e03a..d458ac4b 100644
--- a/Minecraft.Client/Common/Potion_Macros.h
+++ b/Minecraft.Client/Common/Potion_Macros.h
@@ -35,6 +35,8 @@
#define MACRO_POTION_IS_SLOWNESS(aux) ((aux & 0x200F) == MASK_SLOWNESS)
#define MACRO_POTION_IS_POISON(aux) ((aux & 0x200F) == MASK_POISON)
#define MACRO_POTION_IS_INSTANTDAMAGE(aux) ((aux & 0x200F) == MASK_INSTANTDAMAGE)
+#define MACRO_POTION_IS_NIGHTVISION(aux) ((aux & 0x200F) == MASK_NIGHTVISION)
+#define MACRO_POTION_IS_INVISIBILITY(aux) ((aux & 0x200F) == MASK_INVISIBILITY)
#define MACRO_POTION_IS_SPLASH(aux) ((aux & MASK_SPLASH) == MASK_SPLASH)
#define MACRO_POTION_IS_BOTTLE(aux) ((aux & MASK_SPLASH) == 0)
diff --git a/Minecraft.Client/Common/Tutorial/ChoiceTask.cpp b/Minecraft.Client/Common/Tutorial/ChoiceTask.cpp
index c03166b5..f42b3ee0 100644
--- a/Minecraft.Client/Common/Tutorial/ChoiceTask.cpp
+++ b/Minecraft.Client/Common/Tutorial/ChoiceTask.cpp
@@ -7,6 +7,7 @@
#include "TutorialConstraints.h"
#include "ChoiceTask.h"
#include "..\..\..\Minecraft.World\Material.h"
+#include "..\..\Windows64\KeyboardMouseInput.h"
ChoiceTask::ChoiceTask(Tutorial *tutorial, int descriptionId, int promptId /*= -1*/, bool requiresUserInput /*= false*/,
int iConfirmMapping /*= 0*/, int iCancelMapping /*= 0*/,
@@ -33,7 +34,11 @@ ChoiceTask::ChoiceTask(Tutorial *tutorial, int descriptionId, int promptId /*= -
bool ChoiceTask::isCompleted()
{
- Minecraft *pMinecraft = Minecraft::GetInstance();
+ Minecraft* pMinecraft = Minecraft::GetInstance();
+ if (!pMinecraft || !pMinecraft->player)
+ return false;
+
+ int xboxPad = pMinecraft->player->GetXboxPad();
if( m_bConfirmMappingComplete || m_bCancelMappingComplete )
{
@@ -49,24 +54,38 @@ bool ChoiceTask::isCompleted()
else
{
// If the player is under water then allow all keypresses so they can jump out
- if( pMinecraft->localplayers[tutorial->getPad()]->isUnderLiquid(Material::water) ) return false;
-
- if(!m_bConfirmMappingComplete && InputManager.GetValue(pMinecraft->player->GetXboxPad(), m_iConfirmMapping) > 0 )
+ if (pMinecraft->localplayers[tutorial->getPad()]->isUnderLiquid(Material::water)) return false;
+#ifdef _WINDOWS64
+ if (!m_bConfirmMappingComplete &&
+ (InputManager.GetValue(xboxPad, m_iConfirmMapping) > 0
+ || KMInput.IsKeyDown(VK_RETURN)))
+#else
+ if (!m_bConfirmMappingComplete &&
+ InputManager.GetValue(xboxPad, m_iConfirmMapping) > 0)
+#endif
{
m_bConfirmMappingComplete = true;
}
- if(!m_bCancelMappingComplete && InputManager.GetValue(pMinecraft->player->GetXboxPad(), m_iCancelMapping) > 0 )
+
+#ifdef _WINDOWS64
+ if (!m_bCancelMappingComplete &&
+ (InputManager.GetValue(xboxPad, m_iCancelMapping) > 0
+ || KMInput.IsKeyDown('B')))
+#else
+ if (!m_bCancelMappingComplete &&
+ InputManager.GetValue(xboxPad, m_iCancelMapping) > 0)
+#endif
{
m_bCancelMappingComplete = true;
}
- }
- if(m_bConfirmMappingComplete || m_bCancelMappingComplete)
- {
- sendTelemetry();
- enableConstraints(false, true);
+ if (m_bConfirmMappingComplete || m_bCancelMappingComplete)
+ {
+ sendTelemetry();
+ enableConstraints(false, true);
+ }
+ return m_bConfirmMappingComplete || m_bCancelMappingComplete;
}
- return m_bConfirmMappingComplete || m_bCancelMappingComplete;
}
eTutorial_CompletionAction ChoiceTask::getCompletionAction()
@@ -99,11 +118,11 @@ void ChoiceTask::handleUIInput(int iAction)
{
if(bHasBeenActivated && m_bShownForMinimumTime)
{
- if( iAction == m_iConfirmMapping )
+ if( iAction == m_iConfirmMapping)
{
m_bConfirmMappingComplete = true;
}
- else if(iAction == m_iCancelMapping )
+ else if(iAction == m_iCancelMapping)
{
m_bCancelMappingComplete = true;
}
diff --git a/Minecraft.Client/Common/Tutorial/ControllerTask.cpp b/Minecraft.Client/Common/Tutorial/ControllerTask.cpp
index c5fe071b..c3a42120 100644
--- a/Minecraft.Client/Common/Tutorial/ControllerTask.cpp
+++ b/Minecraft.Client/Common/Tutorial/ControllerTask.cpp
@@ -66,7 +66,11 @@ bool ControllerTask::isCompleted()
}
else
{
+#ifdef _WINDOWS64
+ bAllComplete = true;
+#else
bAllComplete = false;
+#endif
}
}
iCurrent++;
@@ -87,7 +91,11 @@ bool ControllerTask::isCompleted()
}
else
{
+#ifdef _WINDOWS64
+ bAllComplete = true;
+#else
bAllComplete = false;
+#endif
}
}
iCurrent++;
diff --git a/Minecraft.Client/Common/Tutorial/DiggerItemHint.cpp b/Minecraft.Client/Common/Tutorial/DiggerItemHint.cpp
index 1367f411..86dbe500 100644
--- a/Minecraft.Client/Common/Tutorial/DiggerItemHint.cpp
+++ b/Minecraft.Client/Common/Tutorial/DiggerItemHint.cpp
@@ -62,7 +62,7 @@ int DiggerItemHint::attack(shared_ptr<ItemInstance> item, shared_ptr<Entity> ent
if(itemFound)
{
// It's also possible that we could hit TileEntities (eg falling sand) so don't want to give this hint then
- if( dynamic_pointer_cast<Mob>( entity ) != NULL )
+ if( entity->instanceof(eTYPE_MOB) )
{
return IDS_TUTORIAL_HINT_ATTACK_WITH_TOOL;
}
diff --git a/Minecraft.Client/Common/Tutorial/FullTutorial.cpp b/Minecraft.Client/Common/Tutorial/FullTutorial.cpp
index 123ab9de..d0fda62e 100644
--- a/Minecraft.Client/Common/Tutorial/FullTutorial.cpp
+++ b/Minecraft.Client/Common/Tutorial/FullTutorial.cpp
@@ -140,7 +140,7 @@ FullTutorial::FullTutorial(int iPad, bool isTrial /*= false*/)
int pickaxeAuxVals[] = {-1,-1,-1,-1,-1};
addTask(e_Tutorial_State_Gameplay, new CraftTask( pickaxeItems, pickaxeAuxVals, 5, 1, this, IDS_TUTORIAL_TASK_CREATE_WOODEN_PICKAXE) );
- addTask(e_Tutorial_State_Gameplay, new PickupTask( Tile::stoneBrick_Id, 8, -1, this, IDS_TUTORIAL_TASK_MINE_STONE ) );
+ addTask(e_Tutorial_State_Gameplay, new PickupTask( Tile::cobblestone_Id, 8, -1, this, IDS_TUTORIAL_TASK_MINE_STONE ) );
addTask(e_Tutorial_State_Gameplay, new ProgressFlagTask( &m_progressFlags, FULL_TUTORIAL_PROGRESS_CRAFT_FURNACE, ProgressFlagTask::e_Progress_Set_Flag, this ) );
addTask(e_Tutorial_State_Gameplay, new CraftTask( Tile::furnace_Id, -1, 1, this, IDS_TUTORIAL_TASK_CREATE_FURNACE ) );
@@ -522,8 +522,8 @@ FullTutorial::FullTutorial(int iPad, bool isTrial /*= false*/)
AABB *area = app.getGameRuleDefinitions()->getNamedArea(L"tradingArea");
if(area != NULL)
{
- eTutorial_State enchantingStates[] = {e_Tutorial_State_Gameplay};
- AddGlobalConstraint( new ChangeStateConstraint(this, e_Tutorial_State_Trading, enchantingStates, 1, area->x0,area->y0,area->z0,area->x1,area->y1,area->z1) );
+ eTutorial_State tradingStates[] = {e_Tutorial_State_Gameplay};
+ AddGlobalConstraint( new ChangeStateConstraint(this, e_Tutorial_State_Trading, tradingStates, 1, area->x0,area->y0,area->z0,area->x1,area->y1,area->z1) );
addTask(e_Tutorial_State_Trading, new ChoiceTask(this, IDS_TUTORIAL_TASK_TRADING_OVERVIEW, IDS_TUTORIAL_PROMPT_TRADING_OVERVIEW, true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State_Gameplay_Constraints, eTelemetryTutorial_Trading) );
@@ -538,6 +538,75 @@ FullTutorial::FullTutorial(int iPad, bool isTrial /*= false*/)
/*
*
*
+ * FIREWORKS
+ *
+ */
+ if(app.getGameRuleDefinitions() != NULL)
+ {
+ AABB *area = app.getGameRuleDefinitions()->getNamedArea(L"fireworksArea");
+ if(area != NULL)
+ {
+ eTutorial_State fireworkStates[] = {e_Tutorial_State_Gameplay};
+ AddGlobalConstraint( new ChangeStateConstraint(this, e_Tutorial_State_Fireworks, fireworkStates, 1, area->x0,area->y0,area->z0,area->x1,area->y1,area->z1) );
+
+ addTask(e_Tutorial_State_Fireworks, new ChoiceTask(this, IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW, IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW, true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State_Gameplay_Constraints, eTelemetryTutorial_Trading) );
+
+ addTask(e_Tutorial_State_Fireworks, new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_PURPOSE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Fireworks, new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) ); //
+ addTask(e_Tutorial_State_Fireworks, new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_CRAFTING, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ }
+ }
+
+ /*
+ *
+ *
+ * BEACON
+ *
+ */
+ if(app.getGameRuleDefinitions() != NULL)
+ {
+ AABB *area = app.getGameRuleDefinitions()->getNamedArea(L"beaconArea");
+ if(area != NULL)
+ {
+ eTutorial_State beaconStates[] = {e_Tutorial_State_Gameplay};
+ AddGlobalConstraint( new ChangeStateConstraint(this, e_Tutorial_State_Beacon, beaconStates, 1, area->x0,area->y0,area->z0,area->x1,area->y1,area->z1) );
+
+ addTask(e_Tutorial_State_Beacon, new ChoiceTask(this, IDS_TUTORIAL_TASK_BEACON_OVERVIEW, IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW, true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State_Gameplay_Constraints, eTelemetryTutorial_Beacon) );
+
+ addTask(e_Tutorial_State_Beacon, new InfoTask(this, IDS_TUTORIAL_TASK_BEACON_PURPOSE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Beacon, new InfoTask(this, IDS_TUTORIAL_TASK_BEACON_DESIGN, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Beacon, new InfoTask(this, IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ }
+ }
+
+ /*
+ *
+ *
+ * HOPPER
+ *
+ */
+ if(app.getGameRuleDefinitions() != NULL)
+ {
+ AABB *area = app.getGameRuleDefinitions()->getNamedArea(L"hopperArea");
+ if(area != NULL)
+ {
+ eTutorial_State hopperStates[] = {e_Tutorial_State_Gameplay};
+ AddGlobalConstraint( new ChangeStateConstraint(this, e_Tutorial_State_Hopper, hopperStates, 1, area->x0,area->y0,area->z0,area->x1,area->y1,area->z1) );
+
+ addTask(e_Tutorial_State_Hopper, new ChoiceTask(this, IDS_TUTORIAL_TASK_HOPPER_OVERVIEW, IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW, true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State_Gameplay_Constraints, eTelemetryTutorial_Hopper) );
+
+ addTask(e_Tutorial_State_Hopper, new InfoTask(this, IDS_TUTORIAL_TASK_HOPPER_PURPOSE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Hopper, new InfoTask(this, IDS_TUTORIAL_TASK_HOPPER_CONTAINERS, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Hopper, new InfoTask(this, IDS_TUTORIAL_TASK_HOPPER_MECHANICS, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Hopper, new InfoTask(this, IDS_TUTORIAL_TASK_HOPPER_REDSTONE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Hopper, new InfoTask(this, IDS_TUTORIAL_TASK_HOPPER_OUTPUT, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Hopper, new InfoTask(this, IDS_TUTORIAL_TASK_HOPPER_AREA, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ }
+ }
+
+ /*
+ *
+ *
* ENDERCHEST
*
*/
diff --git a/Minecraft.Client/Common/Tutorial/HorseChoiceTask.cpp b/Minecraft.Client/Common/Tutorial/HorseChoiceTask.cpp
new file mode 100644
index 00000000..e1d50fbf
--- /dev/null
+++ b/Minecraft.Client/Common/Tutorial/HorseChoiceTask.cpp
@@ -0,0 +1,43 @@
+#include "stdafx.h"
+
+#include <string>
+
+#include "Minecraft.h"
+#include "Tutorial.h"
+
+#include "..\Minecraft.World\EntityHorse.h"
+
+#include "HorseChoiceTask.h"
+
+HorseChoiceTask::HorseChoiceTask(Tutorial *tutorial, int iDescHorse, int iDescDonkey, int iDescMule, int iPromptId,
+ bool requiresUserInput, int iConfirmMapping, int iCancelMapping,
+ eTutorial_CompletionAction cancelAction, ETelemetryChallenges telemetryEvent)
+
+ : ChoiceTask(tutorial, -1, iPromptId, requiresUserInput, iConfirmMapping, iCancelMapping, cancelAction, telemetryEvent)
+{
+ m_eHorseType = -1;
+ m_iDescMule = iDescMule;
+ m_iDescDonkey = iDescDonkey;
+ m_iDescHorse = iDescHorse;
+}
+
+int HorseChoiceTask::getDescriptionId()
+{
+ switch (m_eHorseType)
+ {
+ case EntityHorse::TYPE_HORSE: return m_iDescHorse;
+ case EntityHorse::TYPE_DONKEY: return m_iDescDonkey;
+ case EntityHorse::TYPE_MULE: return m_iDescMule;
+ default: return -1;
+ }
+ return -1;
+}
+
+void HorseChoiceTask::onLookAtEntity(shared_ptr<Entity> entity)
+{
+ if ( (m_eHorseType < 0) && entity->instanceof(eTYPE_HORSE) )
+ {
+ shared_ptr<EntityHorse> horse = dynamic_pointer_cast<EntityHorse>(entity);
+ if ( horse->isAdult() ) m_eHorseType = horse->getType();
+ }
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/Tutorial/HorseChoiceTask.h b/Minecraft.Client/Common/Tutorial/HorseChoiceTask.h
new file mode 100644
index 00000000..5130a7c7
--- /dev/null
+++ b/Minecraft.Client/Common/Tutorial/HorseChoiceTask.h
@@ -0,0 +1,23 @@
+#pragma once
+using namespace std;
+
+#include "ChoiceTask.h"
+
+
+// Same as choice task, but switches description based on horse type.
+class HorseChoiceTask : public ChoiceTask
+{
+protected:
+ int m_eHorseType;
+
+ int m_iDescHorse, m_iDescDonkey, m_iDescMule;
+
+public:
+ HorseChoiceTask(Tutorial *tutorial, int iDescHorse, int iDescDonkey, int iDescMule, int iPromptId = -1,
+ bool requiresUserInput = false, int iConfirmMapping = 0, int iCancelMapping = 0,
+ eTutorial_CompletionAction cancelAction = e_Tutorial_Completion_None, ETelemetryChallenges telemetryEvent = eTelemetryChallenges_Unknown);
+
+ virtual int getDescriptionId();
+
+ virtual void onLookAtEntity(shared_ptr<Entity> entity);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/Tutorial/InfoTask.cpp b/Minecraft.Client/Common/Tutorial/InfoTask.cpp
index 5330841f..43a10357 100644
--- a/Minecraft.Client/Common/Tutorial/InfoTask.cpp
+++ b/Minecraft.Client/Common/Tutorial/InfoTask.cpp
@@ -7,6 +7,7 @@
#include "TutorialConstraints.h"
#include "InfoTask.h"
#include "..\..\..\Minecraft.World\Material.h"
+#include "..\..\KeyboardMouseInput.h"
InfoTask::InfoTask(Tutorial *tutorial, int descriptionId, int promptId /*= -1*/, bool requiresUserInput /*= false*/,
int iMapping /*= 0*/, ETelemetryChallenges telemetryEvent /*= eTelemetryTutorial_NoEvent*/)
@@ -65,7 +66,11 @@ bool InfoTask::isCompleted()
bool current = (*it).second;
if(!current)
{
- if( InputManager.GetValue(pMinecraft->player->GetXboxPad(), (*it).first) > 0 )
+#ifdef _WINDOWS64
+ if (InputManager.GetValue(pMinecraft->player->GetXboxPad(), (*it).first) > 0 || KMInput.IsKeyDown(VK_SPACE))
+#else
+ if( InputManager.GetValue(pMinecraft->player->GetXboxPad(), (*it).first) > 0)
+#endif
{
(*it).second = true;
bAllComplete=true;
diff --git a/Minecraft.Client/Common/Tutorial/LookAtTileHint.cpp b/Minecraft.Client/Common/Tutorial/LookAtTileHint.cpp
index 0a953a7b..c8723a84 100644
--- a/Minecraft.Client/Common/Tutorial/LookAtTileHint.cpp
+++ b/Minecraft.Client/Common/Tutorial/LookAtTileHint.cpp
@@ -50,15 +50,11 @@ bool LookAtTileHint::onLookAt(int id,int iData)
else
{
message->m_icon = id;
- if(m_iDataOverride > -1)
- {
- message->m_iAuxVal = m_iDataOverride;
- }
- else
- {
- message->m_iAuxVal = iData;
- }
}
+
+ // 4J-JEV: Moved to keep data override even if we're overriding the icon as well.
+ message->m_iAuxVal = (m_iDataOverride > -1) ? m_iDataOverride : iData;
+
message->m_messageId = Item::items[id]->getUseDescriptionId();
message->m_titleId = Item::items[id]->getDescriptionId(message->m_iAuxVal);
return m_tutorial->setMessage(this, message);
diff --git a/Minecraft.Client/Common/Tutorial/RideEntityTask.cpp b/Minecraft.Client/Common/Tutorial/RideEntityTask.cpp
new file mode 100644
index 00000000..29fe592d
--- /dev/null
+++ b/Minecraft.Client/Common/Tutorial/RideEntityTask.cpp
@@ -0,0 +1,30 @@
+#include "stdafx.h"
+
+#include <string>
+
+#include "Minecraft.h"
+#include "Tutorial.h"
+
+#include "..\Minecraft.World\EntityHorse.h"
+
+#include "RideEntityTask.h"
+
+RideEntityTask::RideEntityTask(const int eType, Tutorial *tutorial, int descriptionId,
+ bool enablePreCompletion, vector<TutorialConstraint *> *inConstraints, bool bShowMinimumTime, bool bAllowFade, bool bTaskReminders)
+ : TutorialTask( tutorial, descriptionId, enablePreCompletion, inConstraints, bShowMinimumTime, bAllowFade, bTaskReminders ),
+ m_eType( eType )
+{
+}
+
+bool RideEntityTask::isCompleted()
+{
+ return bIsCompleted;
+}
+
+void RideEntityTask::onRideEntity(shared_ptr<Entity> entity)
+{
+ if (entity->instanceof((eINSTANCEOF) m_eType))
+ {
+ bIsCompleted = true;
+ }
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/Tutorial/RideEntityTask.h b/Minecraft.Client/Common/Tutorial/RideEntityTask.h
new file mode 100644
index 00000000..d9b6d41e
--- /dev/null
+++ b/Minecraft.Client/Common/Tutorial/RideEntityTask.h
@@ -0,0 +1,22 @@
+#pragma once
+using namespace std;
+
+#include "TutorialTask.h"
+
+class Level;
+
+// 4J-JEV: Tasks that involve riding an entity.
+class RideEntityTask : public TutorialTask
+{
+protected:
+ const int m_eType;
+
+public:
+ RideEntityTask(const int eTYPE, Tutorial *tutorial, int descriptionId,
+ bool enablePreCompletion = false, vector<TutorialConstraint *> *inConstraints = NULL,
+ bool bShowMinimumTime = false, bool bAllowFade = true, bool bTaskReminders = true );
+
+ virtual bool isCompleted();
+
+ virtual void onRideEntity(shared_ptr<Entity> entity);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/Tutorial/Tutorial.cpp b/Minecraft.Client/Common/Tutorial/Tutorial.cpp
index b0a0d665..057e2171 100644
--- a/Minecraft.Client/Common/Tutorial/Tutorial.cpp
+++ b/Minecraft.Client/Common/Tutorial/Tutorial.cpp
@@ -289,9 +289,9 @@ void Tutorial::staticCtor()
s_completableTasks.push_back( e_Tutorial_Hint_Potato );
s_completableTasks.push_back( e_Tutorial_Hint_Carrot );
- s_completableTasks.push_back( e_Tutorial_Hint_Item_Unused_18 );
- s_completableTasks.push_back( e_Tutorial_Hint_Item_Unused_19 );
- s_completableTasks.push_back( e_Tutorial_Hint_Item_Unused_20 );
+ s_completableTasks.push_back( e_Tutorial_Hint_CommandBlock );
+ s_completableTasks.push_back( e_Tutorial_Hint_Beacon );
+ s_completableTasks.push_back( e_Tutorial_Hint_Activator_Rail );
s_completableTasks.push_back( eTutorial_Telemetry_TrialStart );
s_completableTasks.push_back( eTutorial_Telemetry_Halfway );
@@ -317,9 +317,31 @@ void Tutorial::staticCtor()
s_completableTasks.push_back( e_Tutorial_State_Anvil );
s_completableTasks.push_back( e_Tutorial_State_Anvil_Menu );
s_completableTasks.push_back( e_Tutorial_State_Enderchests );
-
- s_completableTasks.push_back( e_Tutorial_State_Unused_9 );
- s_completableTasks.push_back( e_Tutorial_State_Unused_10 );
+ s_completableTasks.push_back( e_Tutorial_State_Horse_Menu );
+ s_completableTasks.push_back( e_Tutorial_State_Hopper_Menu );
+
+ s_completableTasks.push_back( e_Tutorial_Hint_Wither );
+ s_completableTasks.push_back( e_Tutorial_Hint_Witch );
+ s_completableTasks.push_back( e_Tutorial_Hint_Bat );
+ s_completableTasks.push_back( e_Tutorial_Hint_Horse );
+
+ s_completableTasks.push_back( e_Tutorial_Hint_RedstoneBlock );
+ s_completableTasks.push_back( e_Tutorial_Hint_DaylightDetector );
+ s_completableTasks.push_back( e_Tutorial_Hint_Dropper );
+ s_completableTasks.push_back( e_Tutorial_Hint_Hopper );
+ s_completableTasks.push_back( e_Tutorial_Hint_Comparator );
+ s_completableTasks.push_back( e_Tutorial_Hint_ChestTrap );
+ s_completableTasks.push_back( e_Tutorial_Hint_HayBlock );
+ s_completableTasks.push_back( e_Tutorial_Hint_ClayHardened );
+ s_completableTasks.push_back( e_Tutorial_Hint_ClayHardenedColored );
+ s_completableTasks.push_back( e_Tutorial_Hint_CoalBlock );
+
+ s_completableTasks.push_back( e_Tutorial_State_Beacon_Menu );
+ s_completableTasks.push_back( e_Tutorial_State_Fireworks_Menu );
+ s_completableTasks.push_back( e_Tutorial_State_Horse );
+ s_completableTasks.push_back( e_Tutorial_State_Hopper );
+ s_completableTasks.push_back( e_Tutorial_State_Beacon );
+ s_completableTasks.push_back( e_Tutorial_State_Fireworks );
if( s_completableTasks.size() > TUTORIAL_PROFILE_STORAGE_BITS )
{
@@ -376,10 +398,10 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
/*
* TILE HINTS
*/
- int rockItems[] = {Tile::rock_Id};
+ int rockItems[] = {Tile::stone_Id};
if(!isHintCompleted(e_Tutorial_Hint_Rock)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Rock, this, rockItems, 1 ) );
- int stoneItems[] = {Tile::stoneBrick_Id};
+ int stoneItems[] = {Tile::cobblestone_Id};
if(!isHintCompleted(e_Tutorial_Hint_Stone)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Stone, this, stoneItems, 1 ) );
int plankItems[] = {Tile::wood_Id};
@@ -438,7 +460,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Sandstone, this, sandstoneItems, 1, -1, SandStoneTile::TYPE_SMOOTHSIDE ) );
}
- int noteBlockItems[] = {Tile::musicBlock_Id};
+ int noteBlockItems[] = {Tile::noteblock_Id};
if(!isHintCompleted(e_Tutorial_Hint_Note_Block)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Note_Block, this, noteBlockItems, 1 ) );
int poweredRailItems[] = {Tile::goldenRail_Id};
@@ -455,13 +477,13 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Tall_Grass, this, tallGrassItems, 1, -1, TallGrass::FERN ) );
}
- int woolItems[] = {Tile::cloth_Id};
+ int woolItems[] = {Tile::wool_Id};
if(!isHintCompleted(e_Tutorial_Hint_Wool)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Wool, this, woolItems, 1 ) );
int flowerItems[] = {Tile::flower_Id, Tile::rose_Id};
if(!isHintCompleted(e_Tutorial_Hint_Flower)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Flower, this, flowerItems, 2 ) );
- int mushroomItems[] = {Tile::mushroom1_Id, Tile::mushroom2_Id};
+ int mushroomItems[] = {Tile::mushroom_brown_Id, Tile::mushroom_red_Id};
if(!isHintCompleted(e_Tutorial_Hint_Mushroom)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Mushroom, this, mushroomItems, 2 ) );
int goldBlockItems[] = {Tile::goldBlock_Id};
@@ -499,7 +521,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int bookshelfItems[] = {Tile::bookshelf_Id};
if(!isHintCompleted(e_Tutorial_Hint_Bookshelf)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Bookshelf, this, bookshelfItems, 1 ) );
- int mossStoneItems[] = {Tile::mossStone_Id};
+ int mossStoneItems[] = {Tile::mossyCobblestone_Id};
if(!isHintCompleted(e_Tutorial_Hint_Moss_Stone)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Moss_Stone, this, mossStoneItems, 1 ) );
int obsidianItems[] = {Tile::obsidian_Id};
@@ -526,7 +548,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int craftingTableItems[] = {Tile::workBench_Id};
if(!isHintCompleted(e_Tutorial_Hint_Crafting_Table)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Crafting_Table, this, craftingTableItems, 1 ) );
- int cropsItems[] = {Tile::crops_Id};
+ int cropsItems[] = {Tile::wheat_Id};
if(!isHintCompleted(e_Tutorial_Hint_Crops)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Crops, this, cropsItems, 1, -1, -1, 7 ) );
int farmlandItems[] = {Tile::farmland_Id};
@@ -544,7 +566,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int ladderItems[] = {Tile::ladder_Id};
if(!isHintCompleted(e_Tutorial_Hint_Ladder)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Ladder, this, ladderItems, 1 ) );
- int stairsStoneItems[] = {Tile::stairs_stone_Id,Tile::stairs_bricks_Id,Tile::stairs_stoneBrickSmooth_Id,Tile::stairs_wood_Id,Tile::stairs_sprucewood_Id,Tile::stairs_birchwood_Id,Tile::stairs_netherBricks_Id,Tile::stairs_sandstone_Id,Tile::stairs_quartz_Id};
+ int stairsStoneItems[] = {Tile::stairs_stone_Id,Tile::stairs_bricks_Id,Tile::stairs_stoneBrick_Id,Tile::stairs_wood_Id,Tile::stairs_sprucewood_Id,Tile::stairs_birchwood_Id,Tile::stairs_netherBricks_Id,Tile::stairs_sandstone_Id,Tile::stairs_quartz_Id};
if(!isHintCompleted(e_Tutorial_Hint_Stairs_Stone)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Stairs_Stone, this, stairsStoneItems, 9 ) );
int railItems[] = {Tile::rail_Id};
@@ -562,7 +584,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int redstoneOreItems[] = {Tile::redStoneOre_Id, Tile::redStoneOre_lit_Id};
if(!isHintCompleted(e_Tutorial_Hint_Redstone_Ore)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Redstone_Ore, this, redstoneOreItems, 2 ) );
- int redstoneTorchItems[] = {Tile::notGate_off_Id, Tile::notGate_on_Id};
+ int redstoneTorchItems[] = {Tile::redstoneTorch_off_Id, Tile::redstoneTorch_on_Id};
if(!isHintCompleted(e_Tutorial_Hint_Redstone_Torch)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Redstone_Torch, this, redstoneTorchItems, 2 ) );
int buttonItems[] = {Tile::button_stone_Id, Tile::button_wood_Id};
@@ -583,19 +605,19 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int sugarCaneItems[] = {Tile::reeds_Id};
if(!isHintCompleted(e_Tutorial_Hint_Sugarcane)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Sugarcane, this, sugarCaneItems, 1 ) );
- int recordPlayerItems[] = {Tile::recordPlayer_Id};
+ int recordPlayerItems[] = {Tile::jukebox_Id};
if(!isHintCompleted(e_Tutorial_Hint_Record_Player)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Record_Player, this, recordPlayerItems, 1 ) );
int pumpkinItems[] = {Tile::pumpkin_Id};
if(!isHintCompleted(e_Tutorial_Hint_Pumpkin)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Pumpkin, this, pumpkinItems, 1, -1, -1, 0 ) );
- int hellRockItems[] = {Tile::hellRock_Id};
+ int hellRockItems[] = {Tile::netherRack_Id};
if(!isHintCompleted(e_Tutorial_Hint_Hell_Rock)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Hell_Rock, this, hellRockItems, 1 ) );
- int hellSandItems[] = {Tile::hellSand_Id};
+ int hellSandItems[] = {Tile::soulsand_Id};
if(!isHintCompleted(e_Tutorial_Hint_Hell_Sand)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Hell_Sand, this, hellSandItems, 1 ) );
- int glowstoneItems[] = {Tile::lightGem_Id};
+ int glowstoneItems[] = {Tile::glowstone_Id};
if(!isHintCompleted(e_Tutorial_Hint_Glowstone)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Glowstone, this, glowstoneItems, 1 ) );
int portalItems[] = {Tile::portalTile_Id};
@@ -608,7 +630,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
if(!isHintCompleted(e_Tutorial_Hint_Cake)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Cake, this, cakeItems, 1 ) );
int redstoneRepeaterItems[] = {Tile::diode_on_Id, Tile::diode_off_Id};
- if(!isHintCompleted(e_Tutorial_Hint_Redstone_Repeater)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Redstone_Repeater, this, redstoneRepeaterItems, 2, Item::diode_Id ) );
+ if(!isHintCompleted(e_Tutorial_Hint_Redstone_Repeater)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Redstone_Repeater, this, redstoneRepeaterItems, 2, Item::repeater_Id ) );
int trapdoorItems[] = {Tile::trapdoor_Id};
if(!isHintCompleted(e_Tutorial_Hint_Trapdoor)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Trapdoor, this, trapdoorItems, 1 ) );
@@ -622,10 +644,10 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int monsterStoneEggItems[] = {Tile::monsterStoneEgg_Id};
if(!isHintCompleted(e_Tutorial_Hint_Monster_Stone_Egg)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Monster_Stone_Egg, this, monsterStoneEggItems, 1 ) );
- int stoneBrickSmoothItems[] = {Tile::stoneBrickSmooth_Id};
+ int stoneBrickSmoothItems[] = {Tile::stoneBrick_Id};
if(!isHintCompleted(e_Tutorial_Hint_Stone_Brick_Smooth)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Stone_Brick_Smooth, this, stoneBrickSmoothItems, 1 ) );
- int hugeMushroomItems[] = {Tile::hugeMushroom1_Id,Tile::hugeMushroom2_Id};
+ int hugeMushroomItems[] = {Tile::hugeMushroom_brown_Id,Tile::hugeMushroom_red_Id};
if(!isHintCompleted(e_Tutorial_Hint_Huge_Mushroom)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Huge_Mushroom, this, hugeMushroomItems, 2 ) );
int ironFenceItems[] = {Tile::ironFence_Id};
@@ -673,7 +695,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int endPortalFrameItems[] = {Tile::endPortalFrameTile_Id};
if(!isHintCompleted(e_Tutorial_Hint_End_Portal_Frame)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_End_Portal_Frame, this, endPortalFrameItems, 1 ) );
- int whiteStoneItems[] = {Tile::whiteStone_Id};
+ int whiteStoneItems[] = {Tile::endStone_Id};
if(!isHintCompleted(e_Tutorial_Hint_White_Stone)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_White_Stone, this, whiteStoneItems, 1 ) );
int dragonEggItems[] = {Tile::dragonEgg_Id};
@@ -683,7 +705,7 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
if(!isHintCompleted(e_Tutorial_Hint_RedstoneLamp)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_RedstoneLamp, this, redstoneLampItems, 2 ) );
int cocoaItems[] = {Tile::cocoa_Id};
- if(!isHintCompleted(e_Tutorial_Hint_Cocoa)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Cocoa, this, cocoaItems, 1 ) );
+ if(!isHintCompleted(e_Tutorial_Hint_Cocoa)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Cocoa, this, cocoaItems, 1, Item::dye_powder_Id, -1, DyePowderItem::BROWN) );
int emeraldOreItems[] = {Tile::emeraldOre_Id};
if(!isHintCompleted(e_Tutorial_Hint_EmeraldOre)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_EmeraldOre, this, emeraldOreItems, 1 ) );
@@ -734,6 +756,45 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
int carrotItems[] = {Tile::carrots_Id};
if(!isHintCompleted(e_Tutorial_Hint_Carrot)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Carrot, this, carrotItems, 1, -1, -1, 7 ) );
+
+ int commandBlockItems[] = {Tile::commandBlock_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_CommandBlock)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_CommandBlock, this, commandBlockItems, 1 ) );
+
+ int beaconItems[] = {Tile::beacon_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_Beacon)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Beacon, this, beaconItems, 1 ) );
+
+ int activatorRailItems[] = {Tile::activatorRail_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_Activator_Rail)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Activator_Rail, this, activatorRailItems, 1 ) );
+
+ int redstoneBlockItems[] = {Tile::redstoneBlock_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_RedstoneBlock)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_RedstoneBlock, this, redstoneBlockItems, 1 ) );
+
+ int daylightDetectorItems[] = {Tile::daylightDetector_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_DaylightDetector)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_DaylightDetector, this, daylightDetectorItems, 1 ) );
+
+ int dropperItems[] = {Tile::dropper_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_Dropper)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Dropper, this, dropperItems, 1 ) );
+
+ int hopperItems[] = {Tile::hopper_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_Hopper)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Hopper, this, hopperItems, 1 ) );
+
+ int comparatorItems[] = {Tile::comparator_off_Id, Tile::comparator_on_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_Comparator)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_Comparator, this, comparatorItems, 2, Item::comparator_Id ) );
+
+ int trappedChestItems[] = {Tile::chest_trap_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_ChestTrap)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_ChestTrap, this, trappedChestItems, 1 ) );
+
+ int hayBlockItems[] = {Tile::hayBlock_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_HayBlock)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_HayBlock, this, hayBlockItems, 1 ) );
+
+ int clayHardenedItems[] = {Tile::clayHardened_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_ClayHardened)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_ClayHardened, this, clayHardenedItems, 1 ) );
+
+ int clayHardenedColoredItems[] = {Tile::clayHardened_colored_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_ClayHardenedColored)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_ClayHardenedColored, this, clayHardenedColoredItems, 1 ) );
+
+ int coalBlockItems[] = {Tile::coalBlock_Id};
+ if(!isHintCompleted(e_Tutorial_Hint_CoalBlock)) addHint(e_Tutorial_State_Gameplay, new LookAtTileHint(e_Tutorial_Hint_CoalBlock, this, coalBlockItems, 1 ) );
/*
* ENTITY HINTS
@@ -760,8 +821,12 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
if(!isHintCompleted(e_Tutorial_Hint_EnderDragon)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_EnderDragon, this, IDS_DESC_ENDERDRAGON, IDS_ENDERDRAGON, eTYPE_ENDERDRAGON ) );
if(!isHintCompleted(e_Tutorial_Hint_Blaze)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Blaze, this, IDS_DESC_BLAZE, IDS_BLAZE, eTYPE_BLAZE ) );
if(!isHintCompleted(e_Tutorial_Hint_Lava_Slime)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Lava_Slime, this, IDS_DESC_LAVA_SLIME, IDS_LAVA_SLIME, eTYPE_LAVASLIME ) );
- if(!isHintCompleted(e_Tutorial_Hint_Ozelot)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Ozelot, this, IDS_DESC_OZELOT, IDS_OZELOT, eTYPE_OZELOT ) );
+ if(!isHintCompleted(e_Tutorial_Hint_Ozelot)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Ozelot, this, IDS_DESC_OZELOT, IDS_OZELOT, eTYPE_OCELOT ) );
if(!isHintCompleted(e_Tutorial_Hint_Villager)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Villager, this, IDS_DESC_VILLAGER, IDS_VILLAGER, eTYPE_VILLAGER) );
+ if(!isHintCompleted(e_Tutorial_Hint_Wither)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Wither, this, IDS_DESC_WITHER, IDS_WITHER, eTYPE_WITHERBOSS) );
+ if(!isHintCompleted(e_Tutorial_Hint_Witch)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Witch, this, IDS_DESC_WITCH, IDS_WITCH, eTYPE_WITCH) );
+ if(!isHintCompleted(e_Tutorial_Hint_Bat)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Bat, this, IDS_DESC_BAT, IDS_BAT, eTYPE_BAT) );
+ if(!isHintCompleted(e_Tutorial_Hint_Horse)) addHint(e_Tutorial_State_Gameplay, new LookAtEntityHint(e_Tutorial_Hint_Horse, this, IDS_DESC_HORSE, IDS_HORSE, eTYPE_HORSE) );
/*
@@ -932,6 +997,86 @@ Tutorial::Tutorial(int iPad, bool isFullTutorial /*= false*/) : m_iPad( iPad )
/*
*
*
+ * HORSE ENCOUNTER
+ *
+ */
+ if(isFullTutorial || !isStateCompleted(e_Tutorial_State_Horse) )
+ {
+ addTask(e_Tutorial_State_Horse,
+ new HorseChoiceTask(this, IDS_TUTORIAL_TASK_HORSE_OVERVIEW, IDS_TUTORIAL_TASK_DONKEY_OVERVIEW, IDS_TUTORIAL_TASK_MULE_OVERVIEW, IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW,
+ true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State_Gameplay_Constraints, eTelemetryTutorial_Horse) );
+
+ addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_INTRO, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_PURPOSE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_TAMING, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_TAMING2, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+
+ // 4J-JEV: Only force the RideEntityTask if we're on the full-tutorial.
+ if (isFullTutorial) addTask(e_Tutorial_State_Horse, new RideEntityTask(eTYPE_HORSE, this, IDS_TUTORIAL_TASK_HORSE_RIDE, true, NULL, false, false, false) );
+ else addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_RIDE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+
+ addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_SADDLES, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Horse, new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_BREEDING, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ }
+
+ /*
+ *
+ *
+ * HORSE MENU
+ *
+ */
+ if(isFullTutorial || !isStateCompleted( e_Tutorial_State_Horse_Menu ) )
+ {
+ ProcedureCompoundTask *horseMenuTask = new ProcedureCompoundTask( this );
+ horseMenuTask->AddTask( new ChoiceTask(this, IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW, IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW, true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State, eTelemetryTutorial_HorseMenu) );
+ horseMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ horseMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ horseMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Horse_Menu, horseMenuTask );
+ }
+
+ /*
+ *
+ *
+ * FIREWORKS MENU
+ *
+ */
+ if(isFullTutorial || !isStateCompleted( e_Tutorial_State_Fireworks_Menu ) )
+ {
+ ProcedureCompoundTask *fireworksMenuTask = new ProcedureCompoundTask( this );
+ fireworksMenuTask->AddTask( new ChoiceTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW, IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW, true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State, eTelemetryTutorial_FireworksMenu) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ fireworksMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Fireworks_Menu, fireworksMenuTask );
+ }
+
+ /*
+ *
+ *
+ * BEACON MENU
+ *
+ */
+ if(isFullTutorial || !isStateCompleted( e_Tutorial_State_Beacon_Menu ) )
+ {
+ ProcedureCompoundTask *beaconMenuTask = new ProcedureCompoundTask( this );
+ beaconMenuTask->AddTask( new ChoiceTask(this, IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW, IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW, true, ACTION_MENU_A, ACTION_MENU_B, e_Tutorial_Completion_Complete_State, eTelemetryTutorial_BeaconMenu) );
+ beaconMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ beaconMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ beaconMenuTask->AddTask( new InfoTask(this, IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION, IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE, true, ACTION_MENU_A) );
+ addTask(e_Tutorial_State_Beacon_Menu, beaconMenuTask );
+ }
+
+ /*
+ *
+ *
* MINECART
*
*/
@@ -1203,27 +1348,15 @@ void Tutorial::tick()
// Need to set the time on both levels to stop the flickering as the local level
// tries to predict the time
MinecraftServer::SetTimeOfDay(m_iTutorialFreezeTimeValue);
- pMinecraft->level->setOverrideTimeOfDay(m_iTutorialFreezeTimeValue); // Always daytime
+ pMinecraft->level->setDayTime(m_iTutorialFreezeTimeValue); // Always daytime
+ app.SetGameHostOption(eGameHostOption_DoDaylightCycle,0);
m_timeFrozen = true;
}
else if(m_freezeTime && m_timeFrozen && m_fullTutorialComplete)
{
- __int64 currentTime = pMinecraft->level->getTime();
- int currentDayTime = (currentTime % Level::TICKS_PER_DAY);
- int timeToAdd = 0;
- if(currentDayTime > m_iTutorialFreezeTimeValue)
- {
- timeToAdd = (Level::TICKS_PER_DAY - currentDayTime) + m_iTutorialFreezeTimeValue;
- }
- else
- {
- timeToAdd = m_iTutorialFreezeTimeValue - currentDayTime;
- }
- __int64 targetTime = currentTime + timeToAdd;
- MinecraftServer::SetTimeOfDay(-1);
- MinecraftServer::SetTime(targetTime);
- pMinecraft->level->setOverrideTimeOfDay(-1);
- pMinecraft->level->setTime(targetTime);
+ MinecraftServer::SetTimeOfDay(m_iTutorialFreezeTimeValue);
+ pMinecraft->level->setDayTime(m_iTutorialFreezeTimeValue);
+ app.SetGameHostOption(eGameHostOption_DoDaylightCycle,1);
m_timeFrozen = false;
}
@@ -1569,10 +1702,22 @@ bool Tutorial::setMessage(PopupMessageDetails *message)
{
TutorialMessage *messageString = it->second;
text = wstring( messageString->getMessageForDisplay() );
+
+ // 4J Stu - Quick fix for boat tutorial being incorrect
+ if(message->m_messageId == IDS_TUTORIAL_TASK_BOAT_OVERVIEW)
+ {
+ text = replaceAll(text, L"{*CONTROLLER_ACTION_USE*}", L"{*CONTROLLER_ACTION_DISMOUNT*}");
+ }
}
else
{
text = wstring( app.GetString(message->m_messageId) );
+
+ // 4J Stu - Quick fix for boat tutorial being incorrect
+ if(message->m_messageId == IDS_TUTORIAL_TASK_BOAT_OVERVIEW)
+ {
+ text = replaceAll(text, L"{*CONTROLLER_ACTION_USE*}", L"{*CONTROLLER_ACTION_DISMOUNT*}");
+ }
}
}
@@ -1916,7 +2061,7 @@ void Tutorial::onLookAt(int id, int iData)
}
}
-void Tutorial::onLookAtEntity(eINSTANCEOF type)
+void Tutorial::onLookAtEntity(shared_ptr<Entity> entity)
{
if( m_hintDisplayed ) return;
@@ -1924,12 +2069,39 @@ void Tutorial::onLookAtEntity(eINSTANCEOF type)
for(AUTO_VAR(it, hints[m_CurrentState].begin()); it < hints[m_CurrentState].end(); ++it)
{
TutorialHint *hint = *it;
- hintNeeded = hint->onLookAtEntity(type);
+ hintNeeded = hint->onLookAtEntity(entity->GetType());
if(hintNeeded)
{
break;
}
}
+
+ if ( (m_CurrentState == e_Tutorial_State_Gameplay) && entity->instanceof(eTYPE_HORSE) )
+ {
+ changeTutorialState(e_Tutorial_State_Horse);
+ }
+
+ for (AUTO_VAR(it, activeTasks[m_CurrentState].begin()); it != activeTasks[m_CurrentState].end(); ++it)
+ {
+ (*it)->onLookAtEntity(entity);
+ }
+}
+
+void Tutorial::onRideEntity(shared_ptr<Entity> entity)
+{
+ if(m_CurrentState == e_Tutorial_State_Gameplay)
+ {
+ switch (entity->GetType())
+ {
+ case eTYPE_MINECART: changeTutorialState(e_Tutorial_State_Riding_Minecart); break;
+ case eTYPE_BOAT: changeTutorialState(e_Tutorial_State_Riding_Boat); break;
+ }
+ }
+
+ for (AUTO_VAR(it, activeTasks[m_CurrentState].begin()); it != activeTasks[m_CurrentState].end(); ++it)
+ {
+ (*it)->onRideEntity(entity);
+ }
}
void Tutorial::onEffectChanged(MobEffect *effect, bool bRemoved)
diff --git a/Minecraft.Client/Common/Tutorial/Tutorial.h b/Minecraft.Client/Common/Tutorial/Tutorial.h
index aaaaba0a..169c33e3 100644
--- a/Minecraft.Client/Common/Tutorial/Tutorial.h
+++ b/Minecraft.Client/Common/Tutorial/Tutorial.h
@@ -165,7 +165,8 @@ public:
void onTake(shared_ptr<ItemInstance> item, unsigned int invItemCountAnyAux, unsigned int invItemCountThisAux);
void onSelectedItemChanged(shared_ptr<ItemInstance> item);
void onLookAt(int id, int iData=0);
- void onLookAtEntity(eINSTANCEOF type);
+ void onLookAtEntity(shared_ptr<Entity> entity);
+ void onRideEntity(shared_ptr<Entity> entity);
void onEffectChanged(MobEffect *effect, bool bRemoved=false);
bool canMoveToPosition(double xo, double yo, double zo, double xt, double yt, double zt);
diff --git a/Minecraft.Client/Common/Tutorial/TutorialEnum.h b/Minecraft.Client/Common/Tutorial/TutorialEnum.h
index 33f2e67d..1de6bbad 100644
--- a/Minecraft.Client/Common/Tutorial/TutorialEnum.h
+++ b/Minecraft.Client/Common/Tutorial/TutorialEnum.h
@@ -62,9 +62,14 @@ enum eTutorial_State
e_Tutorial_State_Anvil,
e_Tutorial_State_Anvil_Menu,
e_Tutorial_State_Enderchests,
-
- e_Tutorial_State_Unused_9,
- e_Tutorial_State_Unused_10,
+ e_Tutorial_State_Horse,
+ e_Tutorial_State_Horse_Menu,
+ e_Tutorial_State_Hopper,
+ e_Tutorial_State_Hopper_Menu,
+ e_Tutorial_State_Beacon,
+ e_Tutorial_State_Beacon_Menu,
+ e_Tutorial_State_Fireworks,
+ e_Tutorial_State_Fireworks_Menu,
e_Tutorial_State_Max
};
@@ -201,9 +206,12 @@ enum eTutorial_Hint
e_Tutorial_Hint_EnderDragon,
e_Tutorial_Hint_Blaze,
e_Tutorial_Hint_Lava_Slime,
-
e_Tutorial_Hint_Ozelot,
e_Tutorial_Hint_Villager,
+ e_Tutorial_Hint_Wither,
+ e_Tutorial_Hint_Witch,
+ e_Tutorial_Hint_Bat,
+ e_Tutorial_Hint_Horse,
e_Tutorial_Hint_Item_Shovel,
e_Tutorial_Hint_Item_Hatchet,
@@ -292,9 +300,19 @@ enum eTutorial_Hint
e_Tutorial_Hint_Potato,
e_Tutorial_Hint_Carrot,
- e_Tutorial_Hint_Item_Unused_18,
- e_Tutorial_Hint_Item_Unused_19,
- e_Tutorial_Hint_Item_Unused_20,
+ e_Tutorial_Hint_CommandBlock,
+ e_Tutorial_Hint_Beacon,
+ e_Tutorial_Hint_Activator_Rail,
+ e_Tutorial_Hint_RedstoneBlock,
+ e_Tutorial_Hint_DaylightDetector,
+ e_Tutorial_Hint_Dropper,
+ e_Tutorial_Hint_Hopper,
+ e_Tutorial_Hint_Comparator,
+ e_Tutorial_Hint_ChestTrap,
+ e_Tutorial_Hint_HayBlock,
+ e_Tutorial_Hint_ClayHardened,
+ e_Tutorial_Hint_ClayHardenedColored,
+ e_Tutorial_Hint_CoalBlock,
e_Tutorial_Hint_Item_Max,
};
diff --git a/Minecraft.Client/Common/Tutorial/TutorialTask.h b/Minecraft.Client/Common/Tutorial/TutorialTask.h
index 92cb5999..b589ab27 100644
--- a/Minecraft.Client/Common/Tutorial/TutorialTask.h
+++ b/Minecraft.Client/Common/Tutorial/TutorialTask.h
@@ -6,6 +6,7 @@ class Level;
class Tutorial;
class TutorialConstraint;
class MobEffect;
+class Entity;
// A class that represents each individual task in the tutorial.
//
@@ -33,7 +34,7 @@ protected:
vector<TutorialConstraint *> constraints;
bool areConstraintsEnabled;
public:
- TutorialTask(Tutorial *tutorial, int descriptionId, bool enablePreCompletion, vector<TutorialConstraint *> *inConstraints, bool bShowMinimumTime=false, bool bAllowFade=true, bool m_bTaskReminders=true );
+ TutorialTask(Tutorial *tutorial, int descriptionId, bool enablePreCompletion, vector<TutorialConstraint *> *inConstraints, bool bShowMinimumTime=false, bool bAllowFade=true, bool bTaskReminders=true );
virtual ~TutorialTask();
virtual int getDescriptionId() { return descriptionId; }
@@ -60,4 +61,7 @@ public:
virtual void onTake(shared_ptr<ItemInstance> item, unsigned int invItemCountAnyAux, unsigned int invItemCountThisAux) { }
virtual void onStateChange(eTutorial_State newState) { }
virtual void onEffectChanged(MobEffect *effect, bool bRemoved=false) { }
+
+ virtual void onLookAtEntity(shared_ptr<Entity> entity) { }
+ virtual void onRideEntity(shared_ptr<Entity> entity) { }
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/Tutorial/TutorialTasks.h b/Minecraft.Client/Common/Tutorial/TutorialTasks.h
index 591e9564..b3db973f 100644
--- a/Minecraft.Client/Common/Tutorial/TutorialTasks.h
+++ b/Minecraft.Client/Common/Tutorial/TutorialTasks.h
@@ -9,6 +9,8 @@
#include "XuiCraftingTask.h"
#include "StateChangeTask.h"
#include "ChoiceTask.h"
+#include "HorseChoiceTask.h"
+#include "RideEntityTask.h"
#include "FullTutorialActiveTask.h"
#include "AreaTask.h"
#include "ProgressFlagTask.h"
diff --git a/Minecraft.Client/Common/Tutorial/UseItemTask.h b/Minecraft.Client/Common/Tutorial/UseItemTask.h
index 46d71be4..6c729540 100644
--- a/Minecraft.Client/Common/Tutorial/UseItemTask.h
+++ b/Minecraft.Client/Common/Tutorial/UseItemTask.h
@@ -10,7 +10,6 @@ class UseItemTask : public TutorialTask
{
private:
const int itemId;
- bool completed;
public:
UseItemTask(const int itemId, Tutorial *tutorial, int descriptionId,
diff --git a/Minecraft.Client/Common/UI/IUIController.h b/Minecraft.Client/Common/UI/IUIController.h
index 319185d8..3040c2cc 100644
--- a/Minecraft.Client/Common/UI/IUIController.h
+++ b/Minecraft.Client/Common/UI/IUIController.h
@@ -29,7 +29,7 @@ public:
virtual void SetTooltipText( unsigned int iPad, unsigned int tooltip, int iTextID ) = 0;
virtual void SetEnableTooltips( unsigned int iPad, BOOL bVal ) = 0;
virtual void ShowTooltip( unsigned int iPad, unsigned int tooltip, bool show ) = 0;
- 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) = 0;
+ 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, int iRS=-1, int iBack=-1, bool forceUpdate = false) = 0;
virtual void EnableTooltip( unsigned int iPad, unsigned int tooltip, bool enable ) = 0;
virtual void RefreshTooltips(unsigned int iPad) = 0;
diff --git a/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.cpp
index 29ddcf71..667431b2 100644
--- a/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.cpp
+++ b/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.cpp
@@ -21,6 +21,7 @@ IUIScene_AbstractContainerMenu::IUIScene_AbstractContainerMenu()
m_pointerPos.x = 0.0f;
m_pointerPos.y = 0.0f;
+ m_bPointerDrivenByMouse = false;
}
@@ -73,7 +74,7 @@ void IUIScene_AbstractContainerMenu::Initialize(int iPad, AbstractContainerMenu*
m_iCurrSlotX = 0;
m_iCurrSlotY = 0;
#endif // TAP_DETECTION
- //
+ //
// for(int i=0;i<XUSER_MAX_COUNT;i++)
// {
// m_bFirstTouchStored[i]=false;
@@ -101,10 +102,10 @@ int IUIScene_AbstractContainerMenu::GetSectionDimensions( ESceneSection eSection
*piNumRows = 0;
*piNumColumns = 0;
}
- return( ( *piNumRows ) * ( *piNumColumns ) );
+ return( ( *piNumRows ) * ( *piNumColumns ) );
}
-void IUIScene_AbstractContainerMenu::updateSlotPosition( ESceneSection eSection, ESceneSection newSection, ETapState eTapDirection, int *piTargetX, int *piTargetY, int xOffset )
+void IUIScene_AbstractContainerMenu::updateSlotPosition( ESceneSection eSection, ESceneSection newSection, ETapState eTapDirection, int *piTargetX, int *piTargetY, int xOffset, int yOffset )
{
// Update the target slot based on the size of the current section
int columns, rows;
@@ -124,10 +125,19 @@ void IUIScene_AbstractContainerMenu::updateSlotPosition( ESceneSection eSection,
{
(*piTargetY) = 0;
}
- if( (*piTargetY) < 0 )
+ int offsetY = (*piTargetY) - yOffset;
+ if( offsetY < 0 )
{
(*piTargetY) = 0;
}
+ else if(offsetY >= rows)
+ {
+ (*piTargetY) = rows - 1;
+ }
+ else
+ {
+ (*piTargetY) = offsetY;
+ }
// Update X
int offsetX = (*piTargetX) - xOffset;
@@ -205,7 +215,7 @@ void IUIScene_AbstractContainerMenu::SetToolTip( EToolTipButton eButton, EToolTi
void IUIScene_AbstractContainerMenu::UpdateTooltips()
{
// Table gives us text id for tooltip.
- static const DWORD kaToolTipextIds[ eNumToolTips ] =
+ static const DWORD kaToolTipextIds[ eNumToolTips ] =
{
IDS_TOOLTIPS_PICKUPPLACE, //eToolTipPickupPlace_OLD
IDS_TOOLTIPS_EXIT, // eToolTipExit
@@ -307,7 +317,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
float fNewX=(((float)pTouchPadData->touch[0].x)-m_oldvTouchPos.x) * m_fTouchPadMulX;
float fNewY=(((float)pTouchPadData->touch[0].y)-m_oldvTouchPos.y) * m_fTouchPadMulY;
- // relative positions - needs a deadzone
+ // relative positions - needs a deadzone
if(fNewX>m_fTouchPadDeadZoneX)
{
@@ -320,11 +330,11 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
if(fNewY>m_fTouchPadDeadZoneY)
{
- vPointerPos.y=m_oldvPointerPos.y+((fNewY-m_fTouchPadDeadZoneY)*((float)app.GetGameSettings(iPad,eGameSetting_Sensitivity_InMenu)/100.0f));
+ vPointerPos.y=m_oldvPointerPos.y+((fNewY-m_fTouchPadDeadZoneY)*((float)app.GetGameSettings(iPad,eGameSetting_Sensitivity_InMenu)/100.0f));
}
else if(fNewY<-m_fTouchPadDeadZoneY)
{
- vPointerPos.y=m_oldvPointerPos.y+((fNewY+m_fTouchPadDeadZoneY)*((float)app.GetGameSettings(iPad,eGameSetting_Sensitivity_InMenu)/100.0f));
+ vPointerPos.y=m_oldvPointerPos.y+((fNewY+m_fTouchPadDeadZoneY)*((float)app.GetGameSettings(iPad,eGameSetting_Sensitivity_InMenu)/100.0f));
}
// Clamp to pointer extents.
@@ -334,130 +344,131 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
else if ( vPointerPos.y > m_fPointerMaxY ) vPointerPos.y = m_fPointerMaxY;
bStickInput = true;
- m_eCurrTapState=eTapStateNoInput;
+ m_eCurrTapState=eTapStateNoInput;
}
else
{
// reset the touch flag
m_bFirstTouchStored[iPad]=false;
-
+
#endif
- // If there is any input on sticks, move the pointer.
- if ( ( fabs( fInputX ) >= 0.01f ) || ( fabs( fInputY ) >= 0.01f ) )
- {
- fInputDirX = ( fInputX > 0.0f ) ? 1.0f : ( fInputX < 0.0f )?-1.0f : 0.0f;
- fInputDirY = ( fInputY > 0.0f ) ? 1.0f : ( fInputY < 0.0f )?-1.0f : 0.0f;
+ // If there is any input on sticks, move the pointer.
+ if ( ( fabs( fInputX ) >= 0.01f ) || ( fabs( fInputY ) >= 0.01f ) )
+ {
+ m_bPointerDrivenByMouse = false;
+ fInputDirX = ( fInputX > 0.0f ) ? 1.0f : ( fInputX < 0.0f )?-1.0f : 0.0f;
+ fInputDirY = ( fInputY > 0.0f ) ? 1.0f : ( fInputY < 0.0f )?-1.0f : 0.0f;
#ifdef TAP_DETECTION
- // Check for potential tap input to jump slot.
- ETapState eNewTapInput = GetTapInputType( fInputX, fInputY );
+ // Check for potential tap input to jump slot.
+ ETapState eNewTapInput = GetTapInputType( fInputX, fInputY );
- switch( m_eCurrTapState )
+ switch( m_eCurrTapState )
+ {
+ case eTapStateNoInput:
+ m_eCurrTapState = eNewTapInput;
+ break;
+
+ case eTapStateUp:
+ case eTapStateDown:
+ case eTapStateLeft:
+ case eTapStateRight:
+ if ( ( eNewTapInput != m_eCurrTapState ) && ( eNewTapInput != eTapStateNoInput ) )
{
- case eTapStateNoInput:
- m_eCurrTapState = eNewTapInput;
- break;
-
- case eTapStateUp:
- case eTapStateDown:
- case eTapStateLeft:
- case eTapStateRight:
- if ( ( eNewTapInput != m_eCurrTapState ) && ( eNewTapInput != eTapStateNoInput ) )
- {
- // Input is no longer suitable for tap.
- m_eCurrTapState = eTapNone;
- }
- break;
-
- case eTapNone:
- /// Nothing to do, input is not a tap.
- break;
+ // Input is no longer suitable for tap.
+ m_eCurrTapState = eTapNone;
}
+ break;
+
+ case eTapNone:
+ /// Nothing to do, input is not a tap.
+ break;
+ }
#endif // TAP_DETECTION
- // Square it so we get more precision for small inputs.
- fInputX = fInputX * fInputX * fInputDirX * POINTER_SPEED_FACTOR;
- fInputY = fInputY * fInputY * fInputDirY * POINTER_SPEED_FACTOR;
- //fInputX = fInputX * POINTER_SPEED_FACTOR;
- //fInputY = fInputY * POINTER_SPEED_FACTOR;
- float fInputScale = 1.0f;
+ // Square it so we get more precision for small inputs.
+ fInputX = fInputX * fInputX * fInputDirX * POINTER_SPEED_FACTOR;
+ fInputY = fInputY * fInputY * fInputDirY * POINTER_SPEED_FACTOR;
+ //fInputX = fInputX * POINTER_SPEED_FACTOR;
+ //fInputY = fInputY * POINTER_SPEED_FACTOR;
+ float fInputScale = 1.0f;
- // Ramp up input from zero when new input is recieved over INPUT_TICKS_FOR_SCALING ticks. This is to try to improve tapping stick to move 1 box.
- if ( m_iConsectiveInputTicks < MAX_INPUT_TICKS_FOR_SCALING )
- {
- ++m_iConsectiveInputTicks;
- fInputScale = ( (float)( m_iConsectiveInputTicks) / (float)(MAX_INPUT_TICKS_FOR_SCALING) );
- }
+ // Ramp up input from zero when new input is recieved over INPUT_TICKS_FOR_SCALING ticks. This is to try to improve tapping stick to move 1 box.
+ if ( m_iConsectiveInputTicks < MAX_INPUT_TICKS_FOR_SCALING )
+ {
+ ++m_iConsectiveInputTicks;
+ fInputScale = ( (float)( m_iConsectiveInputTicks) / (float)(MAX_INPUT_TICKS_FOR_SCALING) );
+ }
#ifdef TAP_DETECTION
- else if ( m_iConsectiveInputTicks < MAX_INPUT_TICKS_FOR_TAPPING )
- {
- ++m_iConsectiveInputTicks;
- }
- else
- {
- m_eCurrTapState = eTapNone;
- }
+ else if ( m_iConsectiveInputTicks < MAX_INPUT_TICKS_FOR_TAPPING )
+ {
+ ++m_iConsectiveInputTicks;
+ }
+ else
+ {
+ m_eCurrTapState = eTapNone;
+ }
#endif
- // 4J Stu - The cursor moves too fast in SD mode
- // The SD/splitscreen scenes are approximately 0.6 times the size of the fullscreen on
- if(!RenderManager.IsHiDef() || app.GetLocalPlayerCount() > 1) fInputScale *= 0.6f;
+ // 4J Stu - The cursor moves too fast in SD mode
+ // The SD/splitscreen scenes are approximately 0.6 times the size of the fullscreen on
+ if(!RenderManager.IsHiDef() || app.GetLocalPlayerCount() > 1) fInputScale *= 0.6f;
- fInputX *= fInputScale;
- fInputY *= fInputScale;
+ fInputX *= fInputScale;
+ fInputY *= fInputScale;
#ifdef USE_POINTER_ACCEL
- m_fPointerAccelX += fInputX / 50.0f;
- m_fPointerAccelY += fInputY / 50.0f;
+ m_fPointerAccelX += fInputX / 50.0f;
+ m_fPointerAccelY += fInputY / 50.0f;
- if ( fabsf( fInputX ) > fabsf( m_fPointerVelX + m_fPointerAccelX ) )
- {
- m_fPointerVelX += m_fPointerAccelX;
- }
- else
- {
- m_fPointerAccelX = fInputX - m_fPointerVelX;
- m_fPointerVelX = fInputX;
- }
+ if ( fabsf( fInputX ) > fabsf( m_fPointerVelX + m_fPointerAccelX ) )
+ {
+ m_fPointerVelX += m_fPointerAccelX;
+ }
+ else
+ {
+ m_fPointerAccelX = fInputX - m_fPointerVelX;
+ m_fPointerVelX = fInputX;
+ }
- if ( fabsf( fInputY ) > fabsf( m_fPointerVelY + m_fPointerAccelY ) )
- {
- m_fPointerVelY += m_fPointerAccelY;
- }
- else
- {
- m_fPointerAccelY = fInputY - m_fPointerVelY;
- m_fPointerVelY = fInputY;
- }
- //printf( "IN %.2f VEL %.2f ACC %.2f\n", fInputY, m_fPointerVelY, m_fPointerAccelY );
+ if ( fabsf( fInputY ) > fabsf( m_fPointerVelY + m_fPointerAccelY ) )
+ {
+ m_fPointerVelY += m_fPointerAccelY;
+ }
+ else
+ {
+ m_fPointerAccelY = fInputY - m_fPointerVelY;
+ m_fPointerVelY = fInputY;
+ }
+ //printf( "IN %.2f VEL %.2f ACC %.2f\n", fInputY, m_fPointerVelY, m_fPointerAccelY );
- vPointerPos.x += m_fPointerVelX;
- vPointerPos.y -= m_fPointerVelY;
+ vPointerPos.x += m_fPointerVelX;
+ vPointerPos.y -= m_fPointerVelY;
#else
- // Add input to pointer position.
- vPointerPos.x += fInputX;
- vPointerPos.y -= fInputY;
+ // Add input to pointer position.
+ vPointerPos.x += fInputX;
+ vPointerPos.y -= fInputY;
#endif
- // Clamp to pointer extents.
- if ( vPointerPos.x < m_fPointerMinX ) vPointerPos.x = m_fPointerMinX;
- else if ( vPointerPos.x > m_fPointerMaxX ) vPointerPos.x = m_fPointerMaxX;
- if ( vPointerPos.y < m_fPointerMinY ) vPointerPos.y = m_fPointerMinY;
- else if ( vPointerPos.y > m_fPointerMaxY ) vPointerPos.y = m_fPointerMaxY;
+ // Clamp to pointer extents.
+ if ( vPointerPos.x < m_fPointerMinX ) vPointerPos.x = m_fPointerMinX;
+ else if ( vPointerPos.x > m_fPointerMaxX ) vPointerPos.x = m_fPointerMaxX;
+ if ( vPointerPos.y < m_fPointerMinY ) vPointerPos.y = m_fPointerMinY;
+ else if ( vPointerPos.y > m_fPointerMaxY ) vPointerPos.y = m_fPointerMaxY;
- bStickInput = true;
- }
- else
- {
- m_iConsectiveInputTicks = 0;
+ bStickInput = true;
+ }
+ else
+ {
+ m_iConsectiveInputTicks = 0;
#ifdef USE_POINTER_ACCEL
- m_fPointerVelX = 0.0f;
- m_fPointerVelY = 0.0f;
- m_fPointerAccelX = 0.0f;
- m_fPointerAccelY = 0.0f;
+ m_fPointerVelX = 0.0f;
+ m_fPointerVelY = 0.0f;
+ m_fPointerAccelX = 0.0f;
+ m_fPointerAccelY = 0.0f;
#endif
- }
+ }
#ifdef __ORBIS__
}
@@ -501,7 +512,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
( vPointerPos.y >= sectionPos.y ) && ( vPointerPos.y <= itemMax.y ) )
{
// Pointer is over this control!
- eSectionUnderPointer = eSection;
+ eSectionUnderPointer = eSection;
vSnapPos.x = itemPos.x + ( itemSize.x / 2.0f );
vSnapPos.y = itemPos.y + ( itemSize.y / 2.0f );
@@ -589,8 +600,11 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
}
}
+ // 4J - TomK - set to section none if this is a non-visible section
+ if(!IsVisible(eSectionUnderPointer)) eSectionUnderPointer = eSectionNone;
+
// If we are not over any slot, set focus elsewhere.
- if ( eSectionUnderPointer == eSectionNone )
+ if ( eSectionUnderPointer == eSectionNone )
{
setFocusToPointer( getPad() );
#ifdef TAP_DETECTION
@@ -680,7 +694,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
// If there is no stick input, and we are over a slot, then snap pointer to slot centre.
// 4J - TomK - only if this particular component allows so!
- if(CanHaveFocus(eSectionUnderPointer))
+ if(!m_bPointerDrivenByMouse && CanHaveFocus(eSectionUnderPointer))
{
vPointerPos.x = vSnapPos.x;
vPointerPos.y = vSnapPos.y;
@@ -768,20 +782,26 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
if( bPointerIsOverSlot && bSlotHasItem )
{
- vector<wstring> unformattedStrings;
- wstring desc = GetItemDescription( slot, unformattedStrings );
- SetPointerText(desc, unformattedStrings, slot != m_lastPointerLabelSlot);
+ vector<HtmlString> *desc = GetItemDescription(slot);
+ SetPointerText(desc, slot != m_lastPointerLabelSlot);
m_lastPointerLabelSlot = slot;
+ delete desc;
+ }
+ else if (eSectionUnderPointer != eSectionNone && !IsSectionSlotList(eSectionUnderPointer) )
+ {
+ vector<HtmlString> *desc = GetSectionHoverText(eSectionUnderPointer);
+ SetPointerText(desc, false);
+ m_lastPointerLabelSlot = NULL;
+ delete desc;
}
else
{
- vector<wstring> unformattedStrings;
- SetPointerText(L"", unformattedStrings, false);
+ SetPointerText(NULL, false);
m_lastPointerLabelSlot = NULL;
}
- EToolTipItem buttonA, buttonX, buttonY, buttonRT;
- buttonA = buttonX = buttonY = buttonRT = eToolTipNone;
+ EToolTipItem buttonA, buttonX, buttonY, buttonRT, buttonBack;
+ buttonA = buttonX = buttonY = buttonRT = buttonBack = eToolTipNone;
if ( bPointerIsOverSlot )
{
SetPointerOutsideMenu( false );
@@ -790,7 +810,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
if ( bSlotHasItem )
{
// Item in hand and item in slot ... is item in slot the same as in out hand? If so, can we stack on to it?
- if ( bCarriedIsSameAsSlot )
+ if ( bCarriedIsSameAsSlot )
{
// Can we stack more into this slot?
if ( iSlotStackSizeRemaining == 0 )
@@ -865,13 +885,22 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
if ( iSlotCount == 1 )
{
buttonA = eToolTipPickUpGeneric;
- buttonRT = eToolTipWhatIsThis;
}
else
{
// Multiple items in slot.
buttonA = eToolTipPickUpAll;
buttonX = eToolTipPickUpHalf;
+ }
+
+#ifdef __PSVITA__
+ if (!InputManager.IsVitaTV())
+ {
+ buttonBack = eToolTipWhatIsThis;
+ }
+ else
+#endif
+ {
buttonRT = eToolTipWhatIsThis;
}
}
@@ -919,7 +948,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
else
{
buttonY = eToolTipQuickMove;
- }
+ }
break;
case ArmorRecipes::eArmorType_Leggings:
if(isSlotEmpty(eSectionInventoryArmor,2))
@@ -1051,7 +1080,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
bool bValidIngredient=false;
//bool bValidIngredientBottom=false;
- if(Item::items[iId]->hasPotionBrewingFormula() || (iId == Item::netherStalkSeeds_Id))
+ if(Item::items[iId]->hasPotionBrewingFormula() || (iId == Item::netherwart_seeds_Id))
{
bValidIngredient=true;
}
@@ -1077,15 +1106,15 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
// ingredient slot empty
buttonY = eToolTipQuickMoveIngredient;
}
- }
+ }
else
{
// valid potion? Glass bottle with water in it is a 'potion' too.
if(iId==Item::potion_Id)
{
// space available?
- if(isSlotEmpty(eSectionBrewingBottle1,0) ||
- isSlotEmpty(eSectionBrewingBottle2,0) ||
+ if(isSlotEmpty(eSectionBrewingBottle1,0) ||
+ isSlotEmpty(eSectionBrewingBottle2,0) ||
isSlotEmpty(eSectionBrewingBottle3,0))
{
buttonY = eToolTipQuickMoveIngredient;
@@ -1112,8 +1141,8 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
{
// is there already something in the ingredient slot?
if(isSlotEmpty(eSectionEnchantSlot,0))
- {
- // tool slot empty
+ {
+ // tool slot empty
switch(iId)
{
case Item::bow_Id:
@@ -1124,10 +1153,10 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
buttonY=eToolTipQuickMoveWeapon;
break;
- case Item::helmet_cloth_Id:
- case Item::chestplate_cloth_Id:
- case Item::leggings_cloth_Id:
- case Item::boots_cloth_Id:
+ case Item::helmet_leather_Id:
+ case Item::chestplate_leather_Id:
+ case Item::leggings_leather_Id:
+ case Item::boots_leather_Id:
case Item::helmet_chain_Id:
case Item::chestplate_chain_Id:
@@ -1155,7 +1184,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
buttonY = eToolTipQuickMove;
break;
default:
- buttonY=eToolTipQuickMoveTool;
+ buttonY=eToolTipQuickMoveTool;
break;
}
}
@@ -1163,10 +1192,10 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
{
buttonY = eToolTipQuickMove;
}
- }
+ }
else
{
- buttonY=eToolTipQuickMove;
+ buttonY=eToolTipQuickMove;
}
}
else
@@ -1201,13 +1230,13 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
shared_ptr<ItemInstance> item = nullptr;
if(bPointerIsOverSlot && bSlotHasItem) item = getSlotItem(eSectionUnderPointer, iNewSlotIndex);
- overrideTooltips(eSectionUnderPointer, item, bIsItemCarried, bSlotHasItem, bCarriedIsSameAsSlot, iSlotStackSizeRemaining, buttonA, buttonX, buttonY, buttonRT);
+ overrideTooltips(eSectionUnderPointer, item, bIsItemCarried, bSlotHasItem, bCarriedIsSameAsSlot, iSlotStackSizeRemaining, buttonA, buttonX, buttonY, buttonRT, buttonBack);
SetToolTip( eToolTipButtonA, buttonA );
SetToolTip( eToolTipButtonX, buttonX );
SetToolTip( eToolTipButtonY, buttonY );
SetToolTip( eToolTipButtonRT, buttonRT );
-
+ SetToolTip( eToolTipButtonBack, buttonBack );
// Offset back to image top left.
vPointerPos.x -= m_fPointerImageOffsetX;
@@ -1275,35 +1304,60 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, bool b
#endif
int buttonNum=0; // 0 = LeftMouse, 1 = RightMouse
- BOOL quickKeyHeld=FALSE; // Represents shift key on PC
-
- BOOL validKeyPress = FALSE;
- //BOOL itemEditorKeyPress = FALSE;
+ BOOL quickKeyHeld=false; // Represents shift key on PC
+ BOOL quickKeyDown = false; // Represents shift key on PC
+ BOOL validKeyPress = false;
+ bool itemEditorKeyPress = false;
// Ignore input from other players
//if(pMinecraft->player->GetXboxPad()!=pInputData->UserIndex) return S_OK;
-
+
switch(iAction)
{
#ifdef _DEBUG_MENUS_ENABLED
-#if TO_BE_IMPLEMENTED
- case VK_PAD_RTHUMB_PRESS:
+ case ACTION_MENU_OTHER_STICK_PRESS:
itemEditorKeyPress = TRUE;
break;
-#endif
-#endif
+#endif
case ACTION_MENU_A:
#ifdef __ORBIS__
case ACTION_MENU_TOUCHPAD_PRESS:
#endif
- if(!bRepeat)
+ if (!bRepeat)
{
validKeyPress = TRUE;
// Standard left click
buttonNum = 0;
- quickKeyHeld = FALSE;
- ui.PlayUISFX(eSFX_Press);
+ if (KMInput.IsKeyDown(VK_SHIFT))
+ {
+ {
+ validKeyPress = TRUE;
+
+ // Shift and left click
+ buttonNum = 0;
+ quickKeyHeld = TRUE;
+ if (IsSectionSlotList(m_eCurrSection))
+ {
+ int currentIndex = getCurrentIndex(m_eCurrSection) - getSectionStartOffset(m_eCurrSection);
+
+ bool bSlotHasItem = !isSlotEmpty(m_eCurrSection, currentIndex);
+ if (bSlotHasItem)
+ ui.PlayUISFX(eSFX_Press);
+ }
+ }
+ }
+ else {
+ if (IsSectionSlotList(m_eCurrSection))
+ {
+ int currentIndex = getCurrentIndex(m_eCurrSection) - getSectionStartOffset(m_eCurrSection);
+
+ bool bSlotHasItem = !isSlotEmpty(m_eCurrSection, currentIndex);
+ if (bSlotHasItem)
+ ui.PlayUISFX(eSFX_Press);
+ }
+ //
+ }
}
break;
case ACTION_MENU_X:
@@ -1314,9 +1368,18 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, bool b
// Standard right click
buttonNum = 1;
quickKeyHeld = FALSE;
- ui.PlayUISFX(eSFX_Press);
+
+ if( IsSectionSlotList( m_eCurrSection ) )
+ {
+ int currentIndex = getCurrentIndex( m_eCurrSection ) - getSectionStartOffset(m_eCurrSection);
+
+ bool bSlotHasItem = !isSlotEmpty(m_eCurrSection, currentIndex);
+ if ( bSlotHasItem )
+ ui.PlayUISFX(eSFX_Press);
+ }
}
break;
+
case ACTION_MENU_Y:
if(!bRepeat)
{
@@ -1333,7 +1396,14 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, bool b
// Shift and left click
buttonNum = 0;
quickKeyHeld = TRUE;
- ui.PlayUISFX(eSFX_Press);
+ if( IsSectionSlotList( m_eCurrSection ) )
+ {
+ int currentIndex = getCurrentIndex( m_eCurrSection ) - getSectionStartOffset(m_eCurrSection);
+
+ bool bSlotHasItem = !isSlotEmpty(m_eCurrSection, currentIndex);
+ if ( bSlotHasItem )
+ ui.PlayUISFX(eSFX_Press);
+ }
}
}
break;
@@ -1358,7 +1428,7 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, bool b
}
else
{
- ui.CloseUIScenes(iPad);
+ ui.CloseUIScenes(iPad);
}
bHandled = true;
@@ -1395,13 +1465,7 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, bool b
bHandled = true;
}
break;
-#ifdef __PSVITA__
- //CD - Vita uses select for What's this - key 40
- case MINECRAFT_ACTION_GAME_INFO:
-#else
case ACTION_MENU_PAGEDOWN:
-#endif
-
{
if( IsSectionSlotList( m_eCurrSection ) )
{
@@ -1456,7 +1520,7 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, bool b
{
handleOutsideClicked(iPad, buttonNum, quickKeyHeld);
}
- else //
+ else //
{
// over empty space or something else???
handleOtherClicked(iPad,m_eCurrSection,buttonNum,quickKeyHeld?true:false);
@@ -1467,47 +1531,19 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, bool b
bHandled = true;
}
#ifdef _DEBUG_MENUS_ENABLED
-#if TO_BE_IMPLEMENTED
else if(itemEditorKeyPress == TRUE)
{
- HXUIOBJ hFocusObject = GetFocus(pInputData->UserIndex);
- HXUIOBJ hFocusObjectParent;
- XuiElementGetParent( hFocusObject, &hFocusObjectParent );
-
- HXUICLASS hClassCXuiCtrlSlotList;
-
- // TODO Define values for these
- hClassCXuiCtrlSlotList = XuiFindClass( L"CXuiCtrlSlotList" );
-
- // If the press comes from a SlotList, cast it up then send a clicked call to it's menu
- if( XuiIsInstanceOf( hFocusObjectParent, hClassCXuiCtrlSlotList ) )
- {
- CXuiCtrlSlotList* slotList;
- VOID *pObj;
- XuiObjectFromHandle( hFocusObjectParent, &pObj );
- slotList = (CXuiCtrlSlotList *)pObj;
-
- int currentIndex = slotList->GetCurSel();
-
- CXuiCtrlSlotItemListItem* pCXuiCtrlSlotItem;
- slotList->GetCXuiCtrlSlotItem( currentIndex, &( pCXuiCtrlSlotItem ) );
-
- //Minecraft *pMinecraft = Minecraft::GetInstance();
-
- CScene_DebugItemEditor::ItemEditorInput *initData = new CScene_DebugItemEditor::ItemEditorInput();
- initData->iPad = m_iPad;
- initData->slot = pCXuiCtrlSlotItem->getSlot( pCXuiCtrlSlotItem->m_hObj );
+ if( IsSectionSlotList( m_eCurrSection ) )
+ {
+ ItemEditorInput *initData = new ItemEditorInput();
+ initData->iPad = getPad();
+ initData->slot = getSlot( m_eCurrSection, getCurrentIndex(m_eCurrSection) );
initData->menu = m_menu;
- // Add timer to poll controller stick input at 60Hz
- HRESULT timerResult = KillTimer( POINTER_INPUT_TIMER_ID );
- assert( timerResult == S_OK );
-
- app.NavigateToScene(m_iPad,eUIScene_DebugItemEditor,(void *)initData,false,TRUE);
+ ui.NavigateToScene(getPad(),eUIScene_DebugItemEditor,(void *)initData);
}
}
#endif
-#endif
else
{
handleAdditionalKeyPress(iAction);
@@ -1528,7 +1564,7 @@ void IUIScene_AbstractContainerMenu::handleOutsideClicked(int iPad, int buttonNu
// Drop items.
//pMinecraft->localgameModes[m_iPad]->handleInventoryMouseClick(menu->containerId, AbstractContainerMenu::CLICKED_OUTSIDE, buttonNum, quickKeyHeld?true:false, pMinecraft->localplayers[m_iPad] );
- slotClicked(AbstractContainerMenu::CLICKED_OUTSIDE, buttonNum, quickKeyHeld?true:false);
+ slotClicked(AbstractContainerMenu::SLOT_CLICKED_OUTSIDE, buttonNum, quickKeyHeld?true:false);
}
void IUIScene_AbstractContainerMenu::handleOtherClicked(int iPad, ESceneSection eSection, int buttonNum, bool quickKey)
@@ -1573,8 +1609,7 @@ bool IUIScene_AbstractContainerMenu::IsSameItemAs(shared_ptr<ItemInstance> itemA
{
if(itemA == NULL || itemB == NULL) return false;
- bool bStackedByData = itemA->isStackedByData();
- return ( ( itemA->id == itemB->id ) && ( (bStackedByData && itemA->getAuxValue() == itemB->getAuxValue()) || !bStackedByData ) );
+ return (itemA->id == itemB->id && (!itemB->isStackedByData() || itemB->getAuxValue() == itemA->getAuxValue()) && ItemInstance::tagMatches(itemB, itemA) );
}
int IUIScene_AbstractContainerMenu::GetEmptyStackSpace(Slot *slot)
@@ -1598,38 +1633,27 @@ int IUIScene_AbstractContainerMenu::GetEmptyStackSpace(Slot *slot)
return iResult;
}
-wstring IUIScene_AbstractContainerMenu::GetItemDescription(Slot *slot, vector<wstring> &unformattedStrings)
+vector<HtmlString> *IUIScene_AbstractContainerMenu::GetItemDescription(Slot *slot)
{
- if(slot == NULL) return L"";
+ if(slot == NULL) return NULL;
- wstring desc = L"";
- vector<wstring> *strings = slot->getItem()->getHoverText(nullptr, false, unformattedStrings);
- bool firstLine = true;
- for(AUTO_VAR(it, strings->begin()); it != strings->end(); ++it)
+ vector<HtmlString> *lines = slot->getItem()->getHoverText(nullptr, false);
+
+ // Add rarity to first line
+ if (lines->size() > 0)
{
- wstring thisString = *it;
- if(!firstLine)
+ lines->at(0).color = slot->getItem()->getRarity()->color;
+
+ if(slot->getItem()->hasCustomHoverName())
{
- desc.append( L"<br />" );
+ lines->at(0).color = eTextColor_RenamedItemTitle;
}
- else
- {
- firstLine = false;
- wchar_t formatted[256];
- eMinecraftColour rarityColour = slot->getItem()->getRarity()->color;
- int colour = app.GetHTMLColour(rarityColour);
+ }
- if(slot->getItem()->hasCustomHoverName())
- {
- colour = app.GetHTMLColour(eTextColor_RenamedItemTitle);
- }
+ return lines;
+}
- swprintf(formatted, 256, L"<font color=\"#%08x\">%ls</font>",colour,thisString.c_str());
- thisString = formatted;
- }
- desc.append( thisString );
- }
- strings->clear();
- delete strings;
- return desc;
+vector<HtmlString> *IUIScene_AbstractContainerMenu::GetSectionHoverText(ESceneSection eSection)
+{
+ return NULL;
}
diff --git a/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.h b/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.h
index bdb8bb4c..fe79bf19 100644
--- a/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.h
+++ b/Minecraft.Client/Common/UI/IUIScene_AbstractContainerMenu.h
@@ -52,7 +52,6 @@ protected:
eSectionInventoryCreativeUsing,
eSectionInventoryCreativeSelector,
-#ifndef _XBOX
eSectionInventoryCreativeTab_0,
eSectionInventoryCreativeTab_1,
eSectionInventoryCreativeTab_2,
@@ -62,7 +61,6 @@ protected:
eSectionInventoryCreativeTab_6,
eSectionInventoryCreativeTab_7,
eSectionInventoryCreativeSlider,
-#endif
eSectionInventoryCreativeMax,
eSectionEnchantUsing,
@@ -88,6 +86,37 @@ protected:
eSectionAnvilResult,
eSectionAnvilName,
eSectionAnvilMax,
+
+ eSectionBeaconUsing,
+ eSectionBeaconInventory,
+ eSectionBeaconItem,
+ eSectionBeaconPrimaryTierOneOne,
+ eSectionBeaconPrimaryTierOneTwo,
+ eSectionBeaconPrimaryTierTwoOne,
+ eSectionBeaconPrimaryTierTwoTwo,
+ eSectionBeaconPrimaryTierThree,
+ eSectionBeaconSecondaryOne,
+ eSectionBeaconSecondaryTwo,
+ eSectionBeaconConfirm,
+ eSectionBeaconMax,
+
+ eSectionHopperUsing,
+ eSectionHopperInventory,
+ eSectionHopperContents,
+ eSectionHopperMax,
+
+ eSectionHorseUsing,
+ eSectionHorseInventory,
+ eSectionHorseChest,
+ eSectionHorseArmor,
+ eSectionHorseSaddle,
+ eSectionHorseMax,
+
+ eSectionFireworksUsing,
+ eSectionFireworksInventory,
+ eSectionFireworksResult,
+ eSectionFireworksIngredients,
+ eSectionFireworksMax,
};
AbstractContainerMenu* m_menu;
@@ -96,6 +125,7 @@ protected:
eTutorial_State m_previousTutorialState;
UIVec2D m_pointerPos;
+ bool m_bPointerDrivenByMouse;
// Offset from pointer image top left to centre (we use the centre as the actual pointer).
float m_fPointerImageOffsetX;
@@ -162,13 +192,14 @@ protected:
virtual bool IsSectionSlotList( ESceneSection eSection ) { return eSection != eSectionNone; }
virtual bool CanHaveFocus( ESceneSection eSection ) { return true; }
+ virtual bool IsVisible( ESceneSection eSection ) { return true; }
int GetSectionDimensions( ESceneSection eSection, int* piNumColumns, int* piNumRows );
virtual int getSectionColumns(ESceneSection eSection) = 0;
virtual int getSectionRows(ESceneSection eSection) = 0;
virtual ESceneSection GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY ) = 0;
virtual void GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition ) = 0;
virtual void GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize ) = 0;
- void updateSlotPosition( ESceneSection eSection, ESceneSection newSection, ETapState eTapDirection, int *piTargetX, int *piTargetY, int xOffset );
+ void updateSlotPosition( ESceneSection eSection, ESceneSection newSection, ETapState eTapDirection, int *piTargetX, int *piTargetY, int xOffset = 0, int yOffset = 0 );
#ifdef TAP_DETECTION
ETapState GetTapInputType( float fInputX, float fInputY );
@@ -200,18 +231,32 @@ protected:
virtual void setSectionFocus(ESceneSection eSection, int iPad) = 0;
virtual void setSectionSelectedSlot(ESceneSection eSection, int x, int y) = 0;
virtual void setFocusToPointer(int iPad) = 0;
- virtual void SetPointerText(const wstring &description, vector<wstring> &unformattedStrings, bool newSlot) = 0;
+ virtual void SetPointerText(vector<HtmlString> *description, bool newSlot) = 0;
+ virtual vector<HtmlString> *GetSectionHoverText(ESceneSection eSection);
virtual shared_ptr<ItemInstance> getSlotItem(ESceneSection eSection, int iSlot) = 0;
+ virtual Slot *getSlot(ESceneSection eSection, int iSlot) = 0;
virtual bool isSlotEmpty(ESceneSection eSection, int iSlot) = 0;
virtual void adjustPointerForSafeZone() = 0;
- virtual bool overrideTooltips(ESceneSection sectionUnderPointer, shared_ptr<ItemInstance> itemUnderPointer, bool bIsItemCarried, bool bSlotHasItem, bool bCarriedIsSameAsSlot, int iSlotStackSizeRemaining,
- EToolTipItem &buttonA, EToolTipItem &buttonX, EToolTipItem &buttonY, EToolTipItem &buttonRT) { return false; }
+ virtual bool overrideTooltips(
+ ESceneSection sectionUnderPointer,
+ shared_ptr<ItemInstance> itemUnderPointer,
+ bool bIsItemCarried,
+ bool bSlotHasItem,
+ bool bCarriedIsSameAsSlot,
+ int iSlotStackSizeRemaining,
+ EToolTipItem &buttonA,
+ EToolTipItem &buttonX,
+ EToolTipItem &buttonY,
+ EToolTipItem &buttonRT,
+ EToolTipItem &buttonBack
+ ) { return false; }
private:
bool IsSameItemAs(shared_ptr<ItemInstance> itemA, shared_ptr<ItemInstance> itemB);
int GetEmptyStackSpace(Slot *slot);
- wstring GetItemDescription(Slot *slot, vector<wstring> &unformattedStrings);
+
+ vector<HtmlString> *GetItemDescription(Slot *slot);
protected:
diff --git a/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.cpp
index 81451c7a..10d1bcc4 100644
--- a/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.cpp
+++ b/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.cpp
@@ -206,7 +206,7 @@ void IUIScene_AnvilMenu::handleTick()
m_costString = app.GetString(IDS_REPAIR_EXPENSIVE);
canAfford = false;
}
- else if(!m_repairMenu->getSlot(RepairMenu::RESULT_SLOT)->hasItem())
+ else if(!m_repairMenu->getSlot(AnvilMenu::RESULT_SLOT)->hasItem())
{
// Do nothing
}
@@ -216,7 +216,7 @@ void IUIScene_AnvilMenu::handleTick()
wchar_t temp[256];
swprintf(temp, 256, costString, m_repairMenu->cost);
m_costString = temp;
- if(!m_repairMenu->getSlot(RepairMenu::RESULT_SLOT)->mayPickup(dynamic_pointer_cast<Player>(m_inventory->player->shared_from_this())))
+ if(!m_repairMenu->getSlot(AnvilMenu::RESULT_SLOT)->mayPickup(dynamic_pointer_cast<Player>(m_inventory->player->shared_from_this())))
{
canAfford = false;
}
@@ -224,13 +224,13 @@ void IUIScene_AnvilMenu::handleTick()
}
setCostLabel(m_costString, canAfford);
- bool crossVisible = (m_repairMenu->getSlot(RepairMenu::INPUT_SLOT)->hasItem() || m_repairMenu->getSlot(RepairMenu::ADDITIONAL_SLOT)->hasItem()) && !m_repairMenu->getSlot(RepairMenu::RESULT_SLOT)->hasItem();
+ bool crossVisible = (m_repairMenu->getSlot(AnvilMenu::INPUT_SLOT)->hasItem() || m_repairMenu->getSlot(AnvilMenu::ADDITIONAL_SLOT)->hasItem()) && !m_repairMenu->getSlot(AnvilMenu::RESULT_SLOT)->hasItem();
showCross(crossVisible);
}
void IUIScene_AnvilMenu::updateItemName()
{
- Slot *slot = m_repairMenu->getSlot(RepairMenu::INPUT_SLOT);
+ Slot *slot = m_repairMenu->getSlot(AnvilMenu::INPUT_SLOT);
if (slot != NULL && slot->hasItem())
{
if (!slot->getItem()->hasCustomHoverName() && m_itemName.compare(slot->getItem()->getHoverName())==0)
@@ -250,12 +250,12 @@ void IUIScene_AnvilMenu::updateItemName()
void IUIScene_AnvilMenu::refreshContainer(AbstractContainerMenu *container, vector<shared_ptr<ItemInstance> > *items)
{
- slotChanged(container, RepairMenu::INPUT_SLOT, container->getSlot(0)->getItem());
+ slotChanged(container, AnvilMenu::INPUT_SLOT, container->getSlot(0)->getItem());
}
void IUIScene_AnvilMenu::slotChanged(AbstractContainerMenu *container, int slotIndex, shared_ptr<ItemInstance> item)
{
- if (slotIndex == RepairMenu::INPUT_SLOT)
+ if (slotIndex == AnvilMenu::INPUT_SLOT)
{
m_itemName = item == NULL ? L"" : item->getHoverName();
setEditNameValue(m_itemName);
diff --git a/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.h b/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.h
index 6c4348f2..4e9e3aa7 100644
--- a/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.h
+++ b/Minecraft.Client/Common/UI/IUIScene_AnvilMenu.h
@@ -11,13 +11,13 @@
#define ANVIL_SCENE_ITEM2_SLOT_DOWN_OFFSET 4
class Inventory;
-class RepairMenu;
+class AnvilMenu;
class IUIScene_AnvilMenu : public virtual IUIScene_AbstractContainerMenu, public net_minecraft_world_inventory::ContainerListener
{
protected:
shared_ptr<Inventory> m_inventory;
- RepairMenu *m_repairMenu;
+ AnvilMenu *m_repairMenu;
wstring m_itemName;
protected:
diff --git a/Minecraft.Client/Common/UI/IUIScene_BeaconMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_BeaconMenu.cpp
new file mode 100644
index 00000000..76d21406
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_BeaconMenu.cpp
@@ -0,0 +1,410 @@
+#include "stdafx.h"
+#include "..\Minecraft.World\CustomPayloadPacket.h"
+#include "..\Minecraft.World\net.minecraft.world.inventory.h"
+#include "..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
+#include "..\Minecraft.World\net.minecraft.world.effect.h"
+#include "..\Minecraft.World\HtmlString.h"
+#include "IUIScene_BeaconMenu.h"
+#include "Minecraft.h"
+#include "MultiPlayerLocalPlayer.h"
+#include "ClientConnection.h"
+
+IUIScene_BeaconMenu::IUIScene_BeaconMenu()
+{
+ m_beacon = nullptr;
+ m_initPowerButtons = true;
+}
+
+IUIScene_AbstractContainerMenu::ESceneSection IUIScene_BeaconMenu::GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY )
+{
+ ESceneSection newSection = eSection;
+
+ int xOffset = 0;
+
+ // Find the new section if there is one
+ switch( eSection )
+ {
+ case eSectionBeaconInventory:
+ if(eTapDirection == eTapStateDown) newSection = eSectionBeaconUsing;
+ else if(eTapDirection == eTapStateUp)
+ {
+ if( *piTargetX < 4 )
+ {
+ newSection = eSectionBeaconPrimaryTierThree;
+ }
+ else if ( *piTargetX < 7)
+ {
+ newSection = eSectionBeaconItem;
+ }
+ else
+ {
+ newSection = eSectionBeaconConfirm;
+ }
+ }
+ break;
+ case eSectionBeaconUsing:
+ if(eTapDirection == eTapStateDown)
+ {
+ if( *piTargetX < 2)
+ {
+ newSection = eSectionBeaconPrimaryTierOneOne;
+ }
+ else if( *piTargetX < 5)
+ {
+ newSection = eSectionBeaconPrimaryTierOneTwo;
+ }
+ else if( *piTargetX > 8 && GetPowerButtonId(eSectionBeaconSecondaryTwo) > 0)
+ {
+ newSection = eSectionBeaconSecondaryTwo;
+ }
+ else
+ {
+ newSection = eSectionBeaconSecondaryOne;
+ }
+ }
+ else if(eTapDirection == eTapStateUp) newSection = eSectionBeaconInventory;
+ break;
+ case eSectionBeaconItem:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionBeaconInventory;
+ xOffset = -5;
+ }
+ else if(eTapDirection == eTapStateUp) newSection = eSectionBeaconSecondaryOne;
+ else if(eTapDirection == eTapStateLeft) newSection = eSectionBeaconConfirm;
+ else if(eTapDirection == eTapStateRight) newSection = eSectionBeaconConfirm;
+ break;
+ case eSectionBeaconPrimaryTierOneOne:
+ if(eTapDirection == eTapStateDown) newSection = eSectionBeaconPrimaryTierTwoOne;
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionBeaconUsing;
+ xOffset = -1;
+ }
+ else if(eTapDirection == eTapStateLeft) newSection = eSectionBeaconPrimaryTierOneTwo;
+ else if(eTapDirection == eTapStateRight) newSection = eSectionBeaconPrimaryTierOneTwo;
+ break;
+ case eSectionBeaconPrimaryTierOneTwo:
+ if(eTapDirection == eTapStateDown) newSection = eSectionBeaconPrimaryTierTwoTwo;
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionBeaconUsing;
+ xOffset = -3;
+ }
+ else if(eTapDirection == eTapStateLeft) newSection = eSectionBeaconPrimaryTierOneOne;
+ else if(eTapDirection == eTapStateRight) newSection = eSectionBeaconPrimaryTierOneOne;
+ break;
+ case eSectionBeaconPrimaryTierTwoOne:
+ if(eTapDirection == eTapStateDown) newSection = eSectionBeaconPrimaryTierThree;
+ else if(eTapDirection == eTapStateUp) newSection = eSectionBeaconPrimaryTierOneOne;
+ else if(eTapDirection == eTapStateLeft)
+ {
+ if(GetPowerButtonId(eSectionBeaconSecondaryTwo) > 0)
+ {
+ newSection = eSectionBeaconSecondaryTwo;
+ }
+ else
+ {
+ newSection = eSectionBeaconSecondaryOne;
+ }
+ }
+ else if(eTapDirection == eTapStateRight) newSection = eSectionBeaconPrimaryTierTwoTwo;
+ break;
+ case eSectionBeaconPrimaryTierTwoTwo:
+ if(eTapDirection == eTapStateDown) newSection = eSectionBeaconPrimaryTierThree;
+ else if(eTapDirection == eTapStateUp) newSection = eSectionBeaconPrimaryTierOneTwo;
+ else if(eTapDirection == eTapStateLeft) newSection = eSectionBeaconPrimaryTierTwoOne;
+ else if(eTapDirection == eTapStateRight) newSection = eSectionBeaconSecondaryOne;
+ break;
+ case eSectionBeaconPrimaryTierThree:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionBeaconInventory;
+ xOffset = -3;
+ }
+ else if(eTapDirection == eTapStateUp) newSection = eSectionBeaconPrimaryTierTwoOne;
+ break;
+ case eSectionBeaconSecondaryOne:
+ if(eTapDirection == eTapStateDown) newSection = eSectionBeaconItem;
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionBeaconUsing;
+ xOffset = -7;
+ }
+ else if(eTapDirection == eTapStateLeft) newSection = eSectionBeaconPrimaryTierTwoTwo;
+ else if(eTapDirection == eTapStateRight)
+ {
+ if(GetPowerButtonId(eSectionBeaconSecondaryTwo) > 0)
+ {
+ newSection = eSectionBeaconSecondaryTwo;
+ }
+ else
+ {
+ newSection = eSectionBeaconPrimaryTierTwoOne;
+ }
+ }
+ break;
+ case eSectionBeaconSecondaryTwo:
+ if(eTapDirection == eTapStateDown) newSection = eSectionBeaconItem;
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionBeaconUsing;
+ xOffset = -8;
+ }
+ else if(eTapDirection == eTapStateLeft) newSection = eSectionBeaconSecondaryOne;
+ else if(eTapDirection == eTapStateRight) newSection = eSectionBeaconPrimaryTierTwoOne;
+ break;
+ case eSectionBeaconConfirm:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionBeaconInventory;
+ xOffset = -8;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionBeaconSecondaryOne;
+ }
+ else if(eTapDirection == eTapStateLeft) newSection = eSectionBeaconItem;
+ else if(eTapDirection == eTapStateRight) newSection = eSectionBeaconItem;
+ break;
+ default:
+ assert(false);
+ break;
+ }
+
+ updateSlotPosition(eSection, newSection, eTapDirection, piTargetX, piTargetY, xOffset);
+
+ return newSection;
+}
+
+int IUIScene_BeaconMenu::getSectionStartOffset(IUIScene_AbstractContainerMenu::ESceneSection eSection)
+{
+ int offset = 0;
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ offset = BeaconMenu::PAYMENT_SLOT;
+ break;
+ case eSectionBeaconInventory:
+ offset = BeaconMenu::INV_SLOT_START;
+ break;
+ case eSectionBeaconUsing:
+ offset = BeaconMenu::USE_ROW_SLOT_START;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return offset;
+}
+
+bool IUIScene_BeaconMenu::IsSectionSlotList( ESceneSection eSection )
+{
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ case eSectionBeaconInventory:
+ case eSectionBeaconUsing:
+ return true;
+ }
+ return false;
+}
+
+void IUIScene_BeaconMenu::handleOtherClicked(int iPad, ESceneSection eSection, int buttonNum, bool quickKey)
+{
+ switch(eSection)
+ {
+ case eSectionBeaconConfirm:
+ {
+ if( (m_beacon->getItem(0) == NULL) || (m_beacon->getPrimaryPower() <= 0) ) return;
+ ByteArrayOutputStream baos;
+ DataOutputStream dos(&baos);
+ dos.writeInt(m_beacon->getPrimaryPower());
+ dos.writeInt(m_beacon->getSecondaryPower());
+
+ Minecraft::GetInstance()->localplayers[getPad()]->connection->send(shared_ptr<CustomPayloadPacket>(new CustomPayloadPacket(CustomPayloadPacket::SET_BEACON_PACKET, baos.toByteArray())));
+
+ if (m_beacon->getPrimaryPower() > 0)
+ {
+ int effectId = m_beacon->getPrimaryPower();
+
+ bool active = true;
+ bool selected = false;
+
+ int tier = 3;
+ if (tier >= m_beacon->getLevels())
+ {
+ active = false;
+ }
+ else if (effectId == m_beacon->getSecondaryPower())
+ {
+ selected = true;
+ }
+
+ AddPowerButton(GetId(tier, m_beacon->getPrimaryPower()), MobEffect::effects[m_beacon->getPrimaryPower()]->getIcon(), tier, 1, active, selected);
+ }
+ }
+ break;
+ case eSectionBeaconPrimaryTierOneOne:
+ case eSectionBeaconPrimaryTierOneTwo:
+ case eSectionBeaconPrimaryTierTwoOne:
+ case eSectionBeaconPrimaryTierTwoTwo:
+ case eSectionBeaconPrimaryTierThree:
+ case eSectionBeaconSecondaryOne:
+ case eSectionBeaconSecondaryTwo:
+ if(IsPowerButtonSelected(eSection))
+ {
+ return;
+ }
+
+ int id = GetPowerButtonId(eSection);
+ int effectId = (id & 0xff);
+ int tier = (id >> 8);
+
+ if (tier < 3)
+ {
+ m_beacon->setPrimaryPower(effectId);
+ }
+ else
+ {
+ m_beacon->setSecondaryPower(effectId);
+ }
+ SetPowerButtonSelected(eSection);
+ break;
+ };
+}
+
+void IUIScene_BeaconMenu::handleTick()
+{
+ if (m_initPowerButtons && m_beacon->getLevels() >= 0)
+ {
+ m_initPowerButtons = false;
+ for (int tier = 0; tier <= 2; tier++)
+ {
+ int count = BeaconTileEntity::BEACON_EFFECTS_EFFECTS;//BEACON_EFFECTS[tier].length;
+ int totalWidth = count * 22 + (count - 1) * 2;
+
+ for (int c = 0; c < count; c++)
+ {
+ if(BeaconTileEntity::BEACON_EFFECTS[tier][c] == NULL) continue;
+
+ int effectId = BeaconTileEntity::BEACON_EFFECTS[tier][c]->id;
+ int icon = BeaconTileEntity::BEACON_EFFECTS[tier][c]->getIcon();
+
+ bool active = true;
+ bool selected = false;
+
+ if (tier >= m_beacon->getLevels())
+ {
+ active = false;
+ }
+ else if (effectId == m_beacon->getPrimaryPower())
+ {
+ selected = true;
+ }
+
+ AddPowerButton(GetId(tier, effectId), icon, tier, c, active, selected);
+ }
+ }
+
+ {
+ int tier = 3;
+
+ int count = BeaconTileEntity::BEACON_EFFECTS_EFFECTS + 1;//BEACON_EFFECTS[tier].length + 1;
+ int totalWidth = count * 22 + (count - 1) * 2;
+
+ for (int c = 0; c < count - 1; c++)
+ {
+ if(BeaconTileEntity::BEACON_EFFECTS[tier][c] == NULL) continue;
+
+ int effectId = BeaconTileEntity::BEACON_EFFECTS[tier][c]->id;
+ int icon = BeaconTileEntity::BEACON_EFFECTS[tier][c]->getIcon();
+
+ bool active = true;
+ bool selected = false;
+
+ if (tier >= m_beacon->getLevels())
+ {
+ active = false;
+ }
+ else if (effectId == m_beacon->getSecondaryPower())
+ {
+ selected = true;
+ }
+
+ AddPowerButton(GetId(tier, effectId), icon, tier, c, active, selected);
+ }
+ if (m_beacon->getPrimaryPower() > 0)
+ {
+ int effectId = m_beacon->getPrimaryPower();
+
+ bool active = true;
+ bool selected = false;
+
+ if (tier >= m_beacon->getLevels())
+ {
+ active = false;
+ }
+ else if (effectId == m_beacon->getSecondaryPower())
+ {
+ selected = true;
+ }
+
+ AddPowerButton(GetId(tier, m_beacon->getPrimaryPower()), MobEffect::effects[m_beacon->getPrimaryPower()]->getIcon(), tier, 1, active, selected);
+ }
+ }
+ }
+
+ SetConfirmButtonEnabled( (m_beacon->getItem(0) != NULL) && (m_beacon->getPrimaryPower() > 0) );
+}
+
+int IUIScene_BeaconMenu::GetId(int tier, int effectId)
+{
+ return (tier << 8) | effectId;
+}
+
+vector<HtmlString> *IUIScene_BeaconMenu::GetSectionHoverText(ESceneSection eSection)
+{
+ vector<HtmlString> *desc = NULL;
+ switch(eSection)
+ {
+ case eSectionBeaconSecondaryTwo:
+ if(GetPowerButtonId(eSectionBeaconSecondaryTwo) == 0)
+ {
+ // This isn't visible
+ break;
+ }
+ // Fall through otherwise
+ case eSectionBeaconPrimaryTierOneOne:
+ case eSectionBeaconPrimaryTierOneTwo:
+ case eSectionBeaconPrimaryTierTwoOne:
+ case eSectionBeaconPrimaryTierTwoTwo:
+ case eSectionBeaconPrimaryTierThree:
+ case eSectionBeaconSecondaryOne:
+ {
+ int id = GetPowerButtonId(eSection);
+ int effectId = (id & 0xff);
+
+ desc = new vector<HtmlString>();
+
+ HtmlString string( app.GetString(MobEffect::effects[effectId]->getDescriptionId()), eHTMLColor_White );
+ desc->push_back( string );
+ }
+ break;
+ }
+ return desc;
+}
+
+bool IUIScene_BeaconMenu::IsVisible( ESceneSection eSection )
+{
+ switch( eSection )
+ {
+ case eSectionBeaconSecondaryTwo:
+ if(GetPowerButtonId(eSectionBeaconSecondaryTwo) == 0)
+ {
+ // This isn't visible
+ return false;
+ }
+ }
+ return true;
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_BeaconMenu.h b/Minecraft.Client/Common/UI/IUIScene_BeaconMenu.h
new file mode 100644
index 00000000..1f5f7340
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_BeaconMenu.h
@@ -0,0 +1,31 @@
+#pragma once
+#include "Common\UI\IUIScene_AbstractContainerMenu.h"
+
+class BeaconTileEntity;
+
+class IUIScene_BeaconMenu : public virtual IUIScene_AbstractContainerMenu
+{
+public:
+ IUIScene_BeaconMenu();
+
+ virtual ESceneSection GetSectionAndSlotInDirection(ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY);
+ int getSectionStartOffset(ESceneSection eSection);
+ virtual void handleOtherClicked(int iPad, ESceneSection eSection, int buttonNum, bool quickKey);
+ virtual bool IsSectionSlotList( ESceneSection eSection );
+ virtual vector<HtmlString> *GetSectionHoverText(ESceneSection eSection);
+ bool IsVisible( ESceneSection eSection );
+
+protected:
+ void handleTick();
+ int GetId(int tier, int effectId);
+
+ virtual void SetConfirmButtonEnabled(bool enabled) = 0;
+ virtual void AddPowerButton(int id, int icon, int tier, int count, bool active, bool selected) = 0;
+ virtual int GetPowerButtonId(ESceneSection eSection) = 0;
+ virtual bool IsPowerButtonSelected(ESceneSection eSection) = 0;
+ virtual void SetPowerButtonSelected(ESceneSection eSection) = 0;
+
+ shared_ptr<BeaconTileEntity> m_beacon;
+ bool m_initPowerButtons;
+};
+
diff --git a/Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.cpp
new file mode 100644
index 00000000..4371b4e5
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.cpp
@@ -0,0 +1,25 @@
+#include "stdafx.h"
+#include "../../../Minecraft.World/CustomPayloadPacket.h"
+#include "MultiPlayerLocalPlayer.h"
+#include "ClientConnection.h"
+#include "IUIScene_CommandBlockMenu.h"
+
+void IUIScene_CommandBlockMenu::Initialise(CommandBlockEntity *commandBlock)
+{
+ m_commandBlock = commandBlock;
+ SetCommand(m_commandBlock->getCommand());
+}
+
+void IUIScene_CommandBlockMenu::ConfirmButtonClicked()
+{
+ ByteArrayOutputStream baos;
+ DataOutputStream dos(&baos);
+
+ dos.writeInt(m_commandBlock->x);
+ dos.writeInt(m_commandBlock->y);
+ dos.writeInt(m_commandBlock->z);
+ dos.writeUTF(GetCommand());
+
+ Minecraft::GetInstance()->localplayers[GetPad()]->connection->send(shared_ptr<CustomPayloadPacket>(new CustomPayloadPacket(CustomPayloadPacket::SET_ADVENTURE_COMMAND_PACKET, baos.toByteArray())));
+}
+
diff --git a/Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.h b/Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.h
new file mode 100644
index 00000000..db0aff82
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_CommandBlockMenu.h
@@ -0,0 +1,18 @@
+#pragma once
+#include "../Minecraft.World/net.minecraft.world.level.tile.entity.h"
+
+class IUIScene_CommandBlockMenu
+{
+public:
+ void Initialise(CommandBlockEntity *commandBlock);
+
+protected:
+ void ConfirmButtonClicked();
+
+ virtual wstring GetCommand();
+ virtual void SetCommand(wstring command);
+ virtual int GetPad();
+
+private:
+ CommandBlockEntity *m_commandBlock;
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.cpp
index f158b174..05a44202 100644
--- a/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.cpp
+++ b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.cpp
@@ -267,65 +267,68 @@ bool IUIScene_CraftingMenu::handleKeyDown(int iPad, int iAction, bool bRepeat)
//pMinecraft->soundEngine->playUI( L"random.pop", 1.0f, 1.0f);
ui.PlayUISFX(eSFX_Craft);
- // and remove those resources from your inventory
- for(int i=0;i<pRecipeIngredientsRequired[iRecipe].iIngC;i++)
+ if(pTempItemInst->id != Item::fireworksCharge_Id && pTempItemInst->id != Item::fireworks_Id)
{
- for(int j=0;j<pRecipeIngredientsRequired[iRecipe].iIngValA[i];j++)
+ // and remove those resources from your inventory
+ for(int i=0;i<pRecipeIngredientsRequired[iRecipe].iIngC;i++)
{
- shared_ptr<ItemInstance> ingItemInst = nullptr;
- // do we need to remove a specific aux value?
- if(pRecipeIngredientsRequired[iRecipe].iIngAuxValA[i]!=Recipes::ANY_AUX_VALUE)
+ for(int j=0;j<pRecipeIngredientsRequired[iRecipe].iIngValA[i];j++)
{
- ingItemInst = m_pPlayer->inventory->getResourceItem( pRecipeIngredientsRequired[iRecipe].iIngIDA[i],pRecipeIngredientsRequired[iRecipe].iIngAuxValA[i] );
- m_pPlayer->inventory->removeResource(pRecipeIngredientsRequired[iRecipe].iIngIDA[i],pRecipeIngredientsRequired[iRecipe].iIngAuxValA[i]);
- }
- else
- {
- ingItemInst = m_pPlayer->inventory->getResourceItem( pRecipeIngredientsRequired[iRecipe].iIngIDA[i] );
- m_pPlayer->inventory->removeResource(pRecipeIngredientsRequired[iRecipe].iIngIDA[i]);
- }
-
- // 4J Stu - Fix for #13097 - Bug: Milk Buckets are removed when crafting Cake
- if (ingItemInst != NULL)
- {
- if (ingItemInst->getItem()->hasCraftingRemainingItem())
+ shared_ptr<ItemInstance> ingItemInst = nullptr;
+ // do we need to remove a specific aux value?
+ if(pRecipeIngredientsRequired[iRecipe].iIngAuxValA[i]!=Recipes::ANY_AUX_VALUE)
+ {
+ ingItemInst = m_pPlayer->inventory->getResourceItem( pRecipeIngredientsRequired[iRecipe].iIngIDA[i],pRecipeIngredientsRequired[iRecipe].iIngAuxValA[i] );
+ m_pPlayer->inventory->removeResource(pRecipeIngredientsRequired[iRecipe].iIngIDA[i],pRecipeIngredientsRequired[iRecipe].iIngAuxValA[i]);
+ }
+ else
{
- // replace item with remaining result
- m_pPlayer->inventory->add( shared_ptr<ItemInstance>( new ItemInstance(ingItemInst->getItem()->getCraftingRemainingItem()) ) );
+ ingItemInst = m_pPlayer->inventory->getResourceItem( pRecipeIngredientsRequired[iRecipe].iIngIDA[i] );
+ m_pPlayer->inventory->removeResource(pRecipeIngredientsRequired[iRecipe].iIngIDA[i]);
}
+ // 4J Stu - Fix for #13097 - Bug: Milk Buckets are removed when crafting Cake
+ if (ingItemInst != NULL)
+ {
+ if (ingItemInst->getItem()->hasCraftingRemainingItem())
+ {
+ // replace item with remaining result
+ m_pPlayer->inventory->add( shared_ptr<ItemInstance>( new ItemInstance(ingItemInst->getItem()->getCraftingRemainingItem()) ) );
+ }
+
+ }
}
}
- }
- // 4J Stu - Fix for #13119 - We should add the item after we remove the ingredients
- if(m_pPlayer->inventory->add(pTempItemInst)==false )
- {
- // no room in inventory, so throw it down
- m_pPlayer->drop(pTempItemInst);
- }
+ // 4J Stu - Fix for #13119 - We should add the item after we remove the ingredients
+ if(m_pPlayer->inventory->add(pTempItemInst)==false )
+ {
+ // no room in inventory, so throw it down
+ m_pPlayer->drop(pTempItemInst);
+ }
- //4J Gordon: Achievements
- switch(pTempItemInst->id )
- {
- case Tile::workBench_Id: m_pPlayer->awardStat(GenericStats::buildWorkbench(), GenericStats::param_buildWorkbench()); break;
- case Item::pickAxe_wood_Id: m_pPlayer->awardStat(GenericStats::buildPickaxe(), GenericStats::param_buildPickaxe()); break;
- case Tile::furnace_Id: m_pPlayer->awardStat(GenericStats::buildFurnace(), GenericStats::param_buildFurnace()); break;
- case Item::hoe_wood_Id: m_pPlayer->awardStat(GenericStats::buildHoe(), GenericStats::param_buildHoe()); break;
- case Item::bread_Id: m_pPlayer->awardStat(GenericStats::makeBread(), GenericStats::param_makeBread()); break;
- case Item::cake_Id: m_pPlayer->awardStat(GenericStats::bakeCake(), GenericStats::param_bakeCake()); break;
- case Item::pickAxe_stone_Id: m_pPlayer->awardStat(GenericStats::buildBetterPickaxe(), GenericStats::param_buildBetterPickaxe()); break;
- case Item::sword_wood_Id: m_pPlayer->awardStat(GenericStats::buildSword(), GenericStats::param_buildSword()); break;
- case Tile::dispenser_Id: m_pPlayer->awardStat(GenericStats::dispenseWithThis(), GenericStats::param_dispenseWithThis()); break;
- case Tile::enchantTable_Id: m_pPlayer->awardStat(GenericStats::enchantments(), GenericStats::param_enchantments()); break;
- case Tile::bookshelf_Id: m_pPlayer->awardStat(GenericStats::bookcase(), GenericStats::param_bookcase()); break;
- }
+ //4J Gordon: Achievements
+ switch(pTempItemInst->id )
+ {
+ case Tile::workBench_Id: m_pPlayer->awardStat(GenericStats::buildWorkbench(), GenericStats::param_buildWorkbench()); break;
+ case Item::pickAxe_wood_Id: m_pPlayer->awardStat(GenericStats::buildPickaxe(), GenericStats::param_buildPickaxe()); break;
+ case Tile::furnace_Id: m_pPlayer->awardStat(GenericStats::buildFurnace(), GenericStats::param_buildFurnace()); break;
+ case Item::hoe_wood_Id: m_pPlayer->awardStat(GenericStats::buildHoe(), GenericStats::param_buildHoe()); break;
+ case Item::bread_Id: m_pPlayer->awardStat(GenericStats::makeBread(), GenericStats::param_makeBread()); break;
+ case Item::cake_Id: m_pPlayer->awardStat(GenericStats::bakeCake(), GenericStats::param_bakeCake()); break;
+ case Item::pickAxe_stone_Id: m_pPlayer->awardStat(GenericStats::buildBetterPickaxe(), GenericStats::param_buildBetterPickaxe()); break;
+ case Item::sword_wood_Id: m_pPlayer->awardStat(GenericStats::buildSword(), GenericStats::param_buildSword()); break;
+ case Tile::dispenser_Id: m_pPlayer->awardStat(GenericStats::dispenseWithThis(), GenericStats::param_dispenseWithThis()); break;
+ case Tile::enchantTable_Id: m_pPlayer->awardStat(GenericStats::enchantments(), GenericStats::param_enchantments()); break;
+ case Tile::bookshelf_Id: m_pPlayer->awardStat(GenericStats::bookcase(), GenericStats::param_bookcase()); break;
+ }
- // We've used some ingredients from our inventory, so update the recipes we can make
- CheckRecipesAvailable();
- // don't reset the vertical slots - we want to stay where we are
- UpdateVerticalSlots();
- UpdateHighlight();
+ // We've used some ingredients from our inventory, so update the recipes we can make
+ CheckRecipesAvailable();
+ // don't reset the vertical slots - we want to stay where we are
+ UpdateVerticalSlots();
+ UpdateHighlight();
+ }
}
else
{
@@ -1067,35 +1070,43 @@ void IUIScene_CraftingMenu::DisplayIngredients()
int id=pRecipeIngredientsRequired[iRecipe].iIngIDA[i];
int iAuxVal=pRecipeIngredientsRequired[iRecipe].iIngAuxValA[i];
Item *item = Item::items[id];
- if( (iAuxVal & 0xFF) == 0xFF) // 4J Stu - If the aux value is set to match any
- iAuxVal = 0;
-
- // 4J Stu - For clocks and compasses we set the aux value to a special one that signals we should use a default texture
- // rather than the dynamic one for the player
- if( id == Item::clock_Id || id == Item::compass_Id )
- {
- iAuxVal = 0xFF;
- }
shared_ptr<ItemInstance> itemInst= shared_ptr<ItemInstance>(new ItemInstance(item,pRecipeIngredientsRequired[iRecipe].iIngValA[i],iAuxVal));
- setIngredientDescriptionItem(getPad(),i,itemInst);
- setIngredientDescriptionRedBox(i,false);
-
// 4J-PB - a very special case - the bed can use any kind of wool, so we can't use the item description
// and the same goes for the painting
int idescID;
- if( ((pTempItemInst->id==Item::bed_Id) &&(id==Tile::cloth_Id)) ||
- ((pTempItemInst->id==Item::painting_Id) &&(id==Tile::cloth_Id)) )
+ if( ((pTempItemInst->id==Item::bed_Id) &&(id==Tile::wool_Id)) ||
+ ((pTempItemInst->id==Item::painting_Id) &&(id==Tile::wool_Id)) )
{
idescID=IDS_ANY_WOOL;
}
+ else if((pTempItemInst->id==Item::fireworksCharge_Id) && (id==Item::dye_powder_Id))
+ {
+ idescID=IDS_ITEM_DYE_POWDER;
+ iAuxVal = 1;
+ }
else
{
idescID=itemInst->getDescriptionId();
}
setIngredientDescriptionText(i,app.GetString(idescID));
+
+
+ if( (iAuxVal & 0xFF) == 0xFF) // 4J Stu - If the aux value is set to match any
+ iAuxVal = 0;
+
+ // 4J Stu - For clocks and compasses we set the aux value to a special one that signals we should use a default texture
+ // rather than the dynamic one for the player
+ if( id == Item::clock_Id || id == Item::compass_Id )
+ {
+ iAuxVal = 0xFF;
+ }
+ itemInst->setAuxValue(iAuxVal);
+
+ setIngredientDescriptionItem(getPad(),i,itemInst);
+ setIngredientDescriptionRedBox(i,false);
}
// 4J Stu - For clocks and compasses we set the aux value to a special one that signals we should use a default texture
@@ -1141,6 +1152,10 @@ void IUIScene_CraftingMenu::DisplayIngredients()
{
iAuxVal = 0xFF;
}
+ else if( pTempItemInst->id==Item::fireworksCharge_Id && id == Item::dye_powder_Id)
+ {
+ iAuxVal = 1;
+ }
shared_ptr<ItemInstance> itemInst= shared_ptr<ItemInstance>(new ItemInstance(id,1,iAuxVal));
setIngredientSlotItem(getPad(),index,itemInst);
// show the ingredients we don't have if we can't make the recipe
@@ -1368,6 +1383,15 @@ void IUIScene_CraftingMenu::UpdateTooltips()
}*/
}
+void IUIScene_CraftingMenu::HandleInventoryUpdated()
+{
+ // Check which recipes are available with the resources we have
+ CheckRecipesAvailable();
+ UpdateVerticalSlots();
+ UpdateHighlight();
+ UpdateTooltips();
+}
+
bool IUIScene_CraftingMenu::isItemSelected(int itemId)
{
bool isSelected = false;
diff --git a/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h
index 05227fff..03a58378 100644
--- a/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h
+++ b/Minecraft.Client/Common/UI/IUIScene_CraftingMenu.h
@@ -86,6 +86,7 @@ protected:
void DisplayIngredients();
void UpdateTooltips();
void UpdateDescriptionText(bool);
+ void HandleInventoryUpdated();
public:
Recipy::_eGroupType getCurrentGroup() { return m_pGroupA[m_iGroupIndex]; }
diff --git a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp
index 7ce33234..973020db 100644
--- a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp
+++ b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp
@@ -8,6 +8,9 @@
#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.item.enchantment.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.animal.h"
+#include "..\..\..\Minecraft.World\JavaMath.h"
// 4J JEV - Images for each tab.
IUIScene_CreativeMenu::TabSpec **IUIScene_CreativeMenu::specs = NULL;
@@ -26,14 +29,15 @@ void IUIScene_CreativeMenu::staticCtor()
// Building Blocks
DEF(eCreativeInventory_BuildingBlocks)
- ITEM(Tile::rock_Id)
+ ITEM(Tile::stone_Id)
ITEM(Tile::grass_Id)
ITEM(Tile::dirt_Id)
- ITEM(Tile::stoneBrick_Id)
+ ITEM(Tile::cobblestone_Id)
ITEM(Tile::sand_Id)
ITEM(Tile::sandStone_Id)
ITEM_AUX(Tile::sandStone_Id, SandStoneTile::TYPE_SMOOTHSIDE)
ITEM_AUX(Tile::sandStone_Id, SandStoneTile::TYPE_HEIROGLYPHS)
+ ITEM(Tile::coalBlock_Id)
ITEM(Tile::goldBlock_Id)
ITEM(Tile::ironBlock_Id)
ITEM(Tile::lapisBlock_Id)
@@ -59,24 +63,29 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM_AUX(Tile::treeTrunk_Id, TreeTile::JUNGLE_TRUNK)
ITEM(Tile::gravel_Id)
ITEM(Tile::redBrick_Id)
- ITEM(Tile::mossStone_Id)
+ ITEM(Tile::mossyCobblestone_Id)
ITEM(Tile::obsidian_Id)
ITEM(Tile::clay)
ITEM(Tile::ice_Id)
ITEM(Tile::snow_Id)
- ITEM(Tile::hellRock_Id)
- ITEM(Tile::hellSand_Id)
- ITEM(Tile::lightGem_Id)
- ITEM_AUX(Tile::stoneBrickSmooth_Id,SmoothStoneBrickTile::TYPE_DEFAULT)
- ITEM_AUX(Tile::stoneBrickSmooth_Id,SmoothStoneBrickTile::TYPE_MOSSY)
- ITEM_AUX(Tile::stoneBrickSmooth_Id,SmoothStoneBrickTile::TYPE_CRACKED)
- ITEM_AUX(Tile::stoneBrickSmooth_Id,SmoothStoneBrickTile::TYPE_DETAIL)
+ ITEM(Tile::netherRack_Id)
+ ITEM(Tile::soulsand_Id)
+ ITEM(Tile::glowstone_Id)
+ ITEM(Tile::fence_Id)
+ ITEM(Tile::netherFence_Id)
+ ITEM(Tile::ironFence_Id)
+ ITEM_AUX(Tile::cobbleWall_Id, WallTile::TYPE_NORMAL)
+ ITEM_AUX(Tile::cobbleWall_Id, WallTile::TYPE_MOSSY)
+ ITEM_AUX(Tile::stoneBrick_Id,SmoothStoneBrickTile::TYPE_DEFAULT)
+ ITEM_AUX(Tile::stoneBrick_Id,SmoothStoneBrickTile::TYPE_MOSSY)
+ ITEM_AUX(Tile::stoneBrick_Id,SmoothStoneBrickTile::TYPE_CRACKED)
+ ITEM_AUX(Tile::stoneBrick_Id,SmoothStoneBrickTile::TYPE_DETAIL)
ITEM_AUX(Tile::monsterStoneEgg_Id,StoneMonsterTile::HOST_ROCK)
ITEM_AUX(Tile::monsterStoneEgg_Id,StoneMonsterTile::HOST_COBBLE)
ITEM_AUX(Tile::monsterStoneEgg_Id,StoneMonsterTile::HOST_STONEBRICK)
ITEM(Tile::mycel_Id)
ITEM(Tile::netherBrick_Id)
- ITEM(Tile::whiteStone_Id)
+ ITEM(Tile::endStone_Id)
ITEM_AUX(Tile::quartzBlock_Id,QuartzBlockTile::TYPE_CHISELED)
ITEM_AUX(Tile::quartzBlock_Id,QuartzBlockTile::TYPE_LINES_Y)
ITEM(Tile::trapdoor_Id)
@@ -102,11 +111,28 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Tile::stairs_junglewood_Id)
ITEM(Tile::stairs_stone_Id)
ITEM(Tile::stairs_bricks_Id)
- ITEM(Tile::stairs_stoneBrickSmooth_Id)
+ ITEM(Tile::stairs_stoneBrick_Id)
ITEM(Tile::stairs_netherBricks_Id)
ITEM(Tile::stairs_sandstone_Id)
ITEM(Tile::stairs_quartz_Id)
+ ITEM(Tile::clayHardened_Id)
+ ITEM_AUX(Tile::clayHardened_colored_Id,14) // Red
+ ITEM_AUX(Tile::clayHardened_colored_Id,1) // Orange
+ ITEM_AUX(Tile::clayHardened_colored_Id,4) // Yellow
+ ITEM_AUX(Tile::clayHardened_colored_Id,5) // Lime
+ ITEM_AUX(Tile::clayHardened_colored_Id,3) // Light Blue
+ ITEM_AUX(Tile::clayHardened_colored_Id,9) // Cyan
+ ITEM_AUX(Tile::clayHardened_colored_Id,11) // Blue
+ ITEM_AUX(Tile::clayHardened_colored_Id,10) // Purple
+ ITEM_AUX(Tile::clayHardened_colored_Id,2) // Magenta
+ ITEM_AUX(Tile::clayHardened_colored_Id,6) // Pink
+ ITEM_AUX(Tile::clayHardened_colored_Id,0) // White
+ ITEM_AUX(Tile::clayHardened_colored_Id,8) // Light Gray
+ ITEM_AUX(Tile::clayHardened_colored_Id,7) // Gray
+ ITEM_AUX(Tile::clayHardened_colored_Id,15) // Black
+ ITEM_AUX(Tile::clayHardened_colored_Id,13) // Green
+ ITEM_AUX(Tile::clayHardened_colored_Id,12) // Brown
// Decoration
DEF(eCreativeInventory_Decoration)
@@ -136,8 +162,8 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Tile::deadBush_Id)
ITEM(Tile::flower_Id)
ITEM(Tile::rose_Id)
- ITEM(Tile::mushroom1_Id)
- ITEM(Tile::mushroom2_Id)
+ ITEM(Tile::mushroom_brown_Id)
+ ITEM(Tile::mushroom_red_Id)
ITEM(Tile::cactus_Id)
ITEM(Tile::topSnow_Id)
// 4J-PB - Already got sugar cane in Materials ITEM_11(Tile::reeds_Id)
@@ -149,22 +175,23 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Item::sign_Id)
ITEM(Tile::bookshelf_Id)
ITEM(Item::flowerPot_Id)
- ITEM_AUX(Tile::cloth_Id,14) // Red
- ITEM_AUX(Tile::cloth_Id,1) // Orange
- ITEM_AUX(Tile::cloth_Id,4) // Yellow
- ITEM_AUX(Tile::cloth_Id,5) // Lime
- ITEM_AUX(Tile::cloth_Id,3) // Light Blue
- ITEM_AUX(Tile::cloth_Id,9) // Cyan
- ITEM_AUX(Tile::cloth_Id,11) // Blue
- ITEM_AUX(Tile::cloth_Id,10) // Purple
- ITEM_AUX(Tile::cloth_Id,2) // Magenta
- ITEM_AUX(Tile::cloth_Id,6) // Pink
- ITEM_AUX(Tile::cloth_Id,0) // White
- ITEM_AUX(Tile::cloth_Id,8) // Light Gray
- ITEM_AUX(Tile::cloth_Id,7) // Gray
- ITEM_AUX(Tile::cloth_Id,15) // Black
- ITEM_AUX(Tile::cloth_Id,13) // Green
- ITEM_AUX(Tile::cloth_Id,12) // Brown
+ ITEM(Tile::hayBlock_Id)
+ ITEM_AUX(Tile::wool_Id,14) // Red
+ ITEM_AUX(Tile::wool_Id,1) // Orange
+ ITEM_AUX(Tile::wool_Id,4) // Yellow
+ ITEM_AUX(Tile::wool_Id,5) // Lime
+ ITEM_AUX(Tile::wool_Id,3) // Light Blue
+ ITEM_AUX(Tile::wool_Id,9) // Cyan
+ ITEM_AUX(Tile::wool_Id,11) // Blue
+ ITEM_AUX(Tile::wool_Id,10) // Purple
+ ITEM_AUX(Tile::wool_Id,2) // Magenta
+ ITEM_AUX(Tile::wool_Id,6) // Pink
+ ITEM_AUX(Tile::wool_Id,0) // White
+ ITEM_AUX(Tile::wool_Id,8) // Light Gray
+ ITEM_AUX(Tile::wool_Id,7) // Gray
+ ITEM_AUX(Tile::wool_Id,15) // Black
+ ITEM_AUX(Tile::wool_Id,13) // Green
+ ITEM_AUX(Tile::wool_Id,12) // Brown
ITEM_AUX(Tile::woolCarpet_Id,14) // Red
ITEM_AUX(Tile::woolCarpet_Id,1) // Orange
@@ -183,11 +210,102 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM_AUX(Tile::woolCarpet_Id,13) // Green
ITEM_AUX(Tile::woolCarpet_Id,12) // Brown
+#if 0
+ ITEM_AUX(Tile::stained_glass_Id,14) // Red
+ ITEM_AUX(Tile::stained_glass_Id,1) // Orange
+ ITEM_AUX(Tile::stained_glass_Id,4) // Yellow
+ ITEM_AUX(Tile::stained_glass_Id,5) // Lime
+ ITEM_AUX(Tile::stained_glass_Id,3) // Light Blue
+ ITEM_AUX(Tile::stained_glass_Id,9) // Cyan
+ ITEM_AUX(Tile::stained_glass_Id,11) // Blue
+ ITEM_AUX(Tile::stained_glass_Id,10) // Purple
+ ITEM_AUX(Tile::stained_glass_Id,2) // Magenta
+ ITEM_AUX(Tile::stained_glass_Id,6) // Pink
+ ITEM_AUX(Tile::stained_glass_Id,0) // White
+ ITEM_AUX(Tile::stained_glass_Id,8) // Light Gray
+ ITEM_AUX(Tile::stained_glass_Id,7) // Gray
+ ITEM_AUX(Tile::stained_glass_Id,15) // Black
+ ITEM_AUX(Tile::stained_glass_Id,13) // Green
+ ITEM_AUX(Tile::stained_glass_Id,12) // Brown
+
+ ITEM_AUX(Tile::stained_glass_pane_Id,14) // Red
+ ITEM_AUX(Tile::stained_glass_pane_Id,1) // Orange
+ ITEM_AUX(Tile::stained_glass_pane_Id,4) // Yellow
+ ITEM_AUX(Tile::stained_glass_pane_Id,5) // Lime
+ ITEM_AUX(Tile::stained_glass_pane_Id,3) // Light Blue
+ ITEM_AUX(Tile::stained_glass_pane_Id,9) // Cyan
+ ITEM_AUX(Tile::stained_glass_pane_Id,11) // Blue
+ ITEM_AUX(Tile::stained_glass_pane_Id,10) // Purple
+ ITEM_AUX(Tile::stained_glass_pane_Id,2) // Magenta
+ ITEM_AUX(Tile::stained_glass_pane_Id,6) // Pink
+ ITEM_AUX(Tile::stained_glass_pane_Id,0) // White
+ ITEM_AUX(Tile::stained_glass_pane_Id,8) // Light Gray
+ ITEM_AUX(Tile::stained_glass_pane_Id,7) // Gray
+ ITEM_AUX(Tile::stained_glass_pane_Id,15) // Black
+ ITEM_AUX(Tile::stained_glass_pane_Id,13) // Green
+ ITEM_AUX(Tile::stained_glass_pane_Id,12) // Brown
+#endif
+
+#ifndef _CONTENT_PACKAGE
+ DEF(eCreativeInventory_ArtToolsDecorations)
+ if(app.DebugSettingsOn())
+ {
+ for(unsigned int i = 0; i < Painting::LAST_VALUE; ++i)
+ {
+ ITEM_AUX(Item::painting_Id, i + 1)
+ }
+
+ BuildFirework(list, FireworksItem::TYPE_BIG, DyePowderItem::PURPLE, 1, false, false);
+
+ BuildFirework(list, FireworksItem::TYPE_SMALL, DyePowderItem::RED, 1, false, false);
+ BuildFirework(list, FireworksItem::TYPE_SMALL, DyePowderItem::RED, 2, false, false);
+ BuildFirework(list, FireworksItem::TYPE_SMALL, DyePowderItem::RED, 3, false, false);
+
+ BuildFirework(list, FireworksItem::TYPE_BURST, DyePowderItem::GREEN, 1, false, true);
+ BuildFirework(list, FireworksItem::TYPE_CREEPER, DyePowderItem::BLUE, 1, true, false);
+ BuildFirework(list, FireworksItem::TYPE_STAR, DyePowderItem::YELLOW, 1, false, false);
+ BuildFirework(list, FireworksItem::TYPE_BIG, DyePowderItem::WHITE, 1, true, true);
+
+ ITEM_AUX(Tile::stained_glass_Id,14) // Red
+ ITEM_AUX(Tile::stained_glass_Id,1) // Orange
+ ITEM_AUX(Tile::stained_glass_Id,4) // Yellow
+ ITEM_AUX(Tile::stained_glass_Id,5) // Lime
+ ITEM_AUX(Tile::stained_glass_Id,3) // Light Blue
+ ITEM_AUX(Tile::stained_glass_Id,9) // Cyan
+ ITEM_AUX(Tile::stained_glass_Id,11) // Blue
+ ITEM_AUX(Tile::stained_glass_Id,10) // Purple
+ ITEM_AUX(Tile::stained_glass_Id,2) // Magenta
+ ITEM_AUX(Tile::stained_glass_Id,6) // Pink
+ ITEM_AUX(Tile::stained_glass_Id,0) // White
+ ITEM_AUX(Tile::stained_glass_Id,8) // Light Gray
+ ITEM_AUX(Tile::stained_glass_Id,7) // Gray
+ ITEM_AUX(Tile::stained_glass_Id,15) // Black
+ ITEM_AUX(Tile::stained_glass_Id,13) // Green
+ ITEM_AUX(Tile::stained_glass_Id,12) // Brown
+
+ ITEM_AUX(Tile::stained_glass_pane_Id,14) // Red
+ ITEM_AUX(Tile::stained_glass_pane_Id,1) // Orange
+ ITEM_AUX(Tile::stained_glass_pane_Id,4) // Yellow
+ ITEM_AUX(Tile::stained_glass_pane_Id,5) // Lime
+ ITEM_AUX(Tile::stained_glass_pane_Id,3) // Light Blue
+ ITEM_AUX(Tile::stained_glass_pane_Id,9) // Cyan
+ ITEM_AUX(Tile::stained_glass_pane_Id,11) // Blue
+ ITEM_AUX(Tile::stained_glass_pane_Id,10) // Purple
+ ITEM_AUX(Tile::stained_glass_pane_Id,2) // Magenta
+ ITEM_AUX(Tile::stained_glass_pane_Id,6) // Pink
+ ITEM_AUX(Tile::stained_glass_pane_Id,0) // White
+ ITEM_AUX(Tile::stained_glass_pane_Id,8) // Light Gray
+ ITEM_AUX(Tile::stained_glass_pane_Id,7) // Gray
+ ITEM_AUX(Tile::stained_glass_pane_Id,15) // Black
+ ITEM_AUX(Tile::stained_glass_pane_Id,13) // Green
+ ITEM_AUX(Tile::stained_glass_pane_Id,12) // Brown
+ }
+#endif
// Redstone
DEF(eCreativeInventory_Redstone)
ITEM(Tile::dispenser_Id)
- ITEM(Tile::musicBlock_Id)
+ ITEM(Tile::noteblock_Id)
ITEM(Tile::pistonBase_Id)
ITEM(Tile::pistonStickyBase_Id)
ITEM(Tile::tnt_Id)
@@ -197,20 +315,31 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Tile::pressurePlate_stone_Id)
ITEM(Tile::pressurePlate_wood_Id)
ITEM(Item::redStone_Id)
- ITEM(Tile::notGate_on_Id)
- ITEM(Item::diode_Id)
+ ITEM(Tile::redstoneBlock_Id)
+ ITEM(Tile::redstoneTorch_on_Id)
+ ITEM(Item::repeater_Id)
ITEM(Tile::redstoneLight_Id)
ITEM(Tile::tripWireSource_Id)
+ ITEM(Tile::daylightDetector_Id)
+ ITEM(Tile::dropper_Id)
+ ITEM(Tile::hopper_Id)
+ ITEM(Item::comparator_Id)
+ ITEM(Tile::chest_trap_Id)
+ ITEM(Tile::weightedPlate_heavy_Id)
+ ITEM(Tile::weightedPlate_light_Id)
// Transport
DEF(eCreativeInventory_Transport)
ITEM(Tile::rail_Id)
ITEM(Tile::goldenRail_Id)
ITEM(Tile::detectorRail_Id)
+ ITEM(Tile::activatorRail_Id)
ITEM(Tile::ladder_Id)
ITEM(Item::minecart_Id)
ITEM(Item::minecart_chest_Id)
ITEM(Item::minecart_furnace_Id)
+ ITEM(Item::minecart_hopper_Id)
+ ITEM(Item::minecart_tnt_Id)
ITEM(Item::saddle_Id)
ITEM(Item::boat_Id)
@@ -222,25 +351,49 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Tile::furnace_Id)
ITEM(Item::brewingStand_Id)
ITEM(Tile::enchantTable_Id)
+ ITEM(Tile::beacon_Id)
ITEM(Tile::endPortalFrameTile_Id)
- ITEM(Tile::recordPlayer_Id)
+ ITEM(Tile::jukebox_Id)
ITEM(Tile::anvil_Id);
- ITEM(Tile::fence_Id)
- ITEM(Tile::netherFence_Id)
- ITEM(Tile::ironFence_Id)
- ITEM_AUX(Tile::cobbleWall_Id, WallTile::TYPE_NORMAL)
- ITEM_AUX(Tile::cobbleWall_Id, WallTile::TYPE_MOSSY)
ITEM(Item::bed_Id)
ITEM(Item::bucket_empty_Id)
ITEM(Item::bucket_lava_Id)
ITEM(Item::bucket_water_Id)
- ITEM(Item::milk_Id)
+ ITEM(Item::bucket_milk_Id)
ITEM(Item::cauldron_Id)
ITEM(Item::snowBall_Id)
ITEM(Item::paper_Id)
ITEM(Item::book_Id)
ITEM(Item::enderPearl_Id)
ITEM(Item::eyeOfEnder_Id)
+ ITEM(Item::nameTag_Id)
+ ITEM(Item::netherStar_Id)
+ ITEM_AUX(Item::spawnEgg_Id, 50); // Creeper
+ ITEM_AUX(Item::spawnEgg_Id, 51); // Skeleton
+ ITEM_AUX(Item::spawnEgg_Id, 52); // Spider
+ ITEM_AUX(Item::spawnEgg_Id, 54); // Zombie
+ ITEM_AUX(Item::spawnEgg_Id, 55); // Slime
+ ITEM_AUX(Item::spawnEgg_Id, 56); // Ghast
+ ITEM_AUX(Item::spawnEgg_Id, 57); // Zombie Pigman
+ ITEM_AUX(Item::spawnEgg_Id, 58); // Enderman
+ ITEM_AUX(Item::spawnEgg_Id, 59); // Cave Spider
+ ITEM_AUX(Item::spawnEgg_Id, 60); // Silverfish
+ ITEM_AUX(Item::spawnEgg_Id, 61); // Blaze
+ ITEM_AUX(Item::spawnEgg_Id, 62); // Magma Cube
+ ITEM_AUX(Item::spawnEgg_Id, 65); // Bat
+ ITEM_AUX(Item::spawnEgg_Id, 66); // Witch
+ ITEM_AUX(Item::spawnEgg_Id, 90); // Pig
+ ITEM_AUX(Item::spawnEgg_Id, 91); // Sheep
+ ITEM_AUX(Item::spawnEgg_Id, 92); // Cow
+ ITEM_AUX(Item::spawnEgg_Id, 93); // Chicken
+ ITEM_AUX(Item::spawnEgg_Id, 94); // Squid
+ ITEM_AUX(Item::spawnEgg_Id, 95); // Wolf
+ ITEM_AUX(Item::spawnEgg_Id, 96); // Mooshroom
+ ITEM_AUX(Item::spawnEgg_Id, 98); // Ozelot
+ ITEM_AUX(Item::spawnEgg_Id, 100); // Horse
+ ITEM_AUX(Item::spawnEgg_Id, 100 | ((EntityHorse::TYPE_DONKEY + 1) << 12) ); // Donkey
+ ITEM_AUX(Item::spawnEgg_Id, 100 | ((EntityHorse::TYPE_MULE + 1) << 12)); // Mule
+ ITEM_AUX(Item::spawnEgg_Id, 120); // Villager
ITEM(Item::record_01_Id)
ITEM(Item::record_02_Id)
ITEM(Item::record_03_Id)
@@ -253,27 +406,26 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Item::record_10_Id)
ITEM(Item::record_11_Id)
ITEM(Item::record_12_Id)
- ITEM_AUX(Item::monsterPlacer_Id, 50); // Creeper
- ITEM_AUX(Item::monsterPlacer_Id, 51); // Skeleton
- ITEM_AUX(Item::monsterPlacer_Id, 52); // Spider
- ITEM_AUX(Item::monsterPlacer_Id, 54); // Zombie
- ITEM_AUX(Item::monsterPlacer_Id, 55); // Slime
- ITEM_AUX(Item::monsterPlacer_Id, 56); // Ghast
- ITEM_AUX(Item::monsterPlacer_Id, 57); // Zombie Pigman
- ITEM_AUX(Item::monsterPlacer_Id, 58); // Enderman
- ITEM_AUX(Item::monsterPlacer_Id, 59); // Cave Spider
- ITEM_AUX(Item::monsterPlacer_Id, 60); // Silverfish
- ITEM_AUX(Item::monsterPlacer_Id, 61); // Blaze
- ITEM_AUX(Item::monsterPlacer_Id, 62); // Magma Cube
- ITEM_AUX(Item::monsterPlacer_Id, 90); // Pig
- ITEM_AUX(Item::monsterPlacer_Id, 91); // Sheep
- ITEM_AUX(Item::monsterPlacer_Id, 92); // Cow
- ITEM_AUX(Item::monsterPlacer_Id, 93); // Chicken
- ITEM_AUX(Item::monsterPlacer_Id, 94); // Squid
- ITEM_AUX(Item::monsterPlacer_Id, 95); // Wolf
- ITEM_AUX(Item::monsterPlacer_Id, 96); // Mooshroom
- ITEM_AUX(Item::monsterPlacer_Id, 98); // Ozelot
- ITEM_AUX(Item::monsterPlacer_Id, 120); // Villager
+
+ BuildFirework(list, FireworksItem::TYPE_SMALL, DyePowderItem::LIGHT_BLUE, 1, true, false);
+ BuildFirework(list, FireworksItem::TYPE_CREEPER, DyePowderItem::GREEN, 2, false, false);
+ BuildFirework(list, FireworksItem::TYPE_MAX, DyePowderItem::RED, 2, false, false, DyePowderItem::ORANGE);
+ BuildFirework(list, FireworksItem::TYPE_BURST, DyePowderItem::MAGENTA, 3, true, false, DyePowderItem::BLUE);
+ BuildFirework(list, FireworksItem::TYPE_STAR, DyePowderItem::YELLOW, 2, false, true, DyePowderItem::ORANGE);
+
+#ifndef _CONTENT_PACKAGE
+ DEF(eCreativeInventory_ArtToolsMisc)
+ if(app.DebugSettingsOn())
+ {
+ ITEM_AUX(Item::spawnEgg_Id, 100 | ((EntityHorse::TYPE_SKELETON + 1) << 12)); // Skeleton
+ ITEM_AUX(Item::spawnEgg_Id, 100 | ((EntityHorse::TYPE_UNDEAD + 1) << 12)); // Zombie
+ ITEM_AUX(Item::spawnEgg_Id, 98 | ((Ocelot::TYPE_BLACK + 1) << 12));
+ ITEM_AUX(Item::spawnEgg_Id, 98 | ((Ocelot::TYPE_RED + 1) << 12));
+ ITEM_AUX(Item::spawnEgg_Id, 98 | ((Ocelot::TYPE_SIAMESE + 1) << 12));
+ ITEM_AUX(Item::spawnEgg_Id, 52 | (2 << 12)); // Spider-Jockey
+ ITEM_AUX(Item::spawnEgg_Id, 63); // Enderdragon
+ }
+#endif
// Food
DEF(eCreativeInventory_Food)
@@ -305,17 +457,17 @@ void IUIScene_CreativeMenu::staticCtor()
// Tools, Armour and Weapons (Complete)
DEF(eCreativeInventory_ToolsArmourWeapons)
ITEM(Item::compass_Id)
- ITEM(Item::helmet_cloth_Id)
- ITEM(Item::chestplate_cloth_Id)
- ITEM(Item::leggings_cloth_Id)
- ITEM(Item::boots_cloth_Id)
+ ITEM(Item::helmet_leather_Id)
+ ITEM(Item::chestplate_leather_Id)
+ ITEM(Item::leggings_leather_Id)
+ ITEM(Item::boots_leather_Id)
ITEM(Item::sword_wood_Id)
ITEM(Item::shovel_wood_Id)
ITEM(Item::pickAxe_wood_Id)
ITEM(Item::hatchet_wood_Id)
ITEM(Item::hoe_wood_Id)
- ITEM(Item::map_Id)
+ ITEM(Item::emptyMap_Id)
ITEM(Item::helmet_chain_Id)
ITEM(Item::chestplate_chain_Id)
ITEM(Item::leggings_chain_Id)
@@ -364,6 +516,10 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Item::shears_Id)
ITEM(Item::fishingRod_Id)
ITEM(Item::carrotOnAStick_Id)
+ ITEM(Item::lead_Id)
+ ITEM(Item::horseArmorDiamond_Id)
+ ITEM(Item::horseArmorGold_Id)
+ ITEM(Item::horseArmorMetal_Id)
for(unsigned int i = 0; i < Enchantment::enchantments.length; ++i)
{
@@ -372,6 +528,16 @@ void IUIScene_CreativeMenu::staticCtor()
list->push_back(Item::enchantedBook->createForEnchantment(new EnchantmentInstance(enchantment, enchantment->getMaxLevel())));
}
+#ifndef _CONTENT_PACKAGE
+ if(app.DebugSettingsOn())
+ {
+ shared_ptr<ItemInstance> debugSword = shared_ptr<ItemInstance>(new ItemInstance(Item::sword_diamond_Id, 1, 0));
+ debugSword->enchant( Enchantment::damageBonus, 50 );
+ debugSword->setHoverName(L"Sword of Debug");
+ list->push_back(debugSword);
+ }
+#endif
+
// Materials
DEF(eCreativeInventory_Materials)
ITEM(Item::coal_Id)
@@ -390,7 +556,7 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Item::feather_Id)
ITEM(Item::flint_Id)
ITEM(Item::leather_Id)
- ITEM(Item::sulphur_Id)
+ ITEM(Item::gunpowder_Id)
ITEM(Item::clay_Id)
ITEM(Item::yellowDust_Id)
ITEM(Item::seeds_wheat_Id)
@@ -403,7 +569,7 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Item::slimeBall_Id)
ITEM(Item::blazeRod_Id)
ITEM(Item::goldNugget_Id)
- ITEM(Item::netherStalkSeeds_Id)
+ ITEM(Item::netherwart_seeds_Id)
ITEM_AUX(Item::dye_powder_Id,1) // Red
ITEM_AUX(Item::dye_powder_Id,14) // Orange
ITEM_AUX(Item::dye_powder_Id,11) // Yellow
@@ -538,22 +704,28 @@ void IUIScene_CreativeMenu::staticCtor()
// Top Row
ECreative_Inventory_Groups blocksGroup[] = {eCreativeInventory_BuildingBlocks};
- specs[eCreativeInventoryTab_BuildingBlocks] = new TabSpec(L"Structures", IDS_GROUPNAME_BUILDING_BLOCKS, 1, blocksGroup, 0, NULL);
-
+ specs[eCreativeInventoryTab_BuildingBlocks] = new TabSpec(L"Structures", IDS_GROUPNAME_BUILDING_BLOCKS, 1, blocksGroup);
+
+#ifndef _CONTENT_PACKAGE
+ ECreative_Inventory_Groups decorationsGroup[] = {eCreativeInventory_Decoration};
+ ECreative_Inventory_Groups debugDecorationsGroup[] = {eCreativeInventory_ArtToolsDecorations};
+ specs[eCreativeInventoryTab_Decorations] = new TabSpec(L"Decoration", IDS_GROUPNAME_DECORATIONS, 1, decorationsGroup, 0, NULL, 1, debugDecorationsGroup);
+#else
ECreative_Inventory_Groups decorationsGroup[] = {eCreativeInventory_Decoration};
- specs[eCreativeInventoryTab_Decorations] = new TabSpec(L"Decoration", IDS_GROUPNAME_DECORATIONS, 1, decorationsGroup, 0, NULL);
+ specs[eCreativeInventoryTab_Decorations] = new TabSpec(L"Decoration", IDS_GROUPNAME_DECORATIONS, 1, decorationsGroup);
+#endif
ECreative_Inventory_Groups redAndTranGroup[] = {eCreativeInventory_Transport, eCreativeInventory_Redstone};
- specs[eCreativeInventoryTab_RedstoneAndTransport] = new TabSpec(L"RedstoneAndTransport", IDS_GROUPNAME_REDSTONE_AND_TRANSPORT, 2, redAndTranGroup, 0, NULL);
+ specs[eCreativeInventoryTab_RedstoneAndTransport] = new TabSpec(L"RedstoneAndTransport", IDS_GROUPNAME_REDSTONE_AND_TRANSPORT, 2, redAndTranGroup);
ECreative_Inventory_Groups materialsGroup[] = {eCreativeInventory_Materials};
- specs[eCreativeInventoryTab_Materials] = new TabSpec(L"Materials", IDS_GROUPNAME_MATERIALS, 1, materialsGroup, 0, NULL);
+ specs[eCreativeInventoryTab_Materials] = new TabSpec(L"Materials", IDS_GROUPNAME_MATERIALS, 1, materialsGroup);
ECreative_Inventory_Groups foodGroup[] = {eCreativeInventory_Food};
- specs[eCreativeInventoryTab_Food] = new TabSpec(L"Food", IDS_GROUPNAME_FOOD, 1, foodGroup, 0, NULL);
+ specs[eCreativeInventoryTab_Food] = new TabSpec(L"Food", IDS_GROUPNAME_FOOD, 1, foodGroup);
ECreative_Inventory_Groups toolsGroup[] = {eCreativeInventory_ToolsArmourWeapons};
- specs[eCreativeInventoryTab_ToolsWeaponsArmor] = new TabSpec(L"Tools", IDS_GROUPNAME_TOOLS_WEAPONS_ARMOR, 1, toolsGroup, 0, NULL);
+ specs[eCreativeInventoryTab_ToolsWeaponsArmor] = new TabSpec(L"Tools", IDS_GROUPNAME_TOOLS_WEAPONS_ARMOR, 1, toolsGroup);
ECreative_Inventory_Groups brewingGroup[] = {eCreativeInventory_Brewing, eCreativeInventory_Potions_Level2_Extended, eCreativeInventory_Potions_Extended, eCreativeInventory_Potions_Level2, eCreativeInventory_Potions_Basic};
@@ -561,16 +733,21 @@ void IUIScene_CreativeMenu::staticCtor()
// In 480p there's not enough room for the LT button, so use text instead
//if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen())
{
- specs[eCreativeInventoryTab_Brewing] = new TabSpec(L"Brewing", IDS_GROUPNAME_POTIONS_480, 5, brewingGroup, 0, NULL);
+ specs[eCreativeInventoryTab_Brewing] = new TabSpec(L"Brewing", IDS_GROUPNAME_POTIONS_480, 5, brewingGroup);
}
// else
// {
// specs[eCreativeInventoryTab_Brewing] = new TabSpec(L"icon_brewing.png", IDS_GROUPNAME_POTIONS, 1, brewingGroup, 4, potionsGroup);
// }
+#ifndef _CONTENT_PACKAGE
ECreative_Inventory_Groups miscGroup[] = {eCreativeInventory_Misc};
- specs[eCreativeInventoryTab_Misc] = new TabSpec(L"Misc", IDS_GROUPNAME_MISCELLANEOUS, 1, miscGroup, 0, NULL);
-
+ ECreative_Inventory_Groups debugMiscGroup[] = {eCreativeInventory_ArtToolsMisc};
+ specs[eCreativeInventoryTab_Misc] = new TabSpec(L"Misc", IDS_GROUPNAME_MISCELLANEOUS, 1, miscGroup, 0, NULL, 1, debugMiscGroup);
+#else
+ ECreative_Inventory_Groups miscGroup[] = {eCreativeInventory_Misc};
+ specs[eCreativeInventoryTab_Misc] = new TabSpec(L"Misc", IDS_GROUPNAME_MISCELLANEOUS, 1, miscGroup);
+#endif
}
IUIScene_CreativeMenu::IUIScene_CreativeMenu()
@@ -600,10 +777,33 @@ void IUIScene_CreativeMenu::switchTab(ECreativeInventoryTabs tab)
specs[tab]->populateMenu(itemPickerMenu,m_tabDynamicPos[m_curTab], m_tabPage[m_curTab]);
}
+void IUIScene_CreativeMenu::ScrollBar(UIVec2D pointerPos)
+{
+ UIVec2D pos;
+ UIVec2D size;
+ GetItemScreenData(eSectionInventoryCreativeSlider, 0, &pos, &size);
+ float fPosition = ((float)pointerPos.y - pos.y) / size.y;
+
+ // clamp
+ if(fPosition > 1)
+ fPosition = 1.0f;
+ else if(fPosition < 0)
+ fPosition = 0.0f;
+
+ // calculate page position according to page count
+ int iCurrentPage = Math::round(fPosition * (specs[m_curTab]->getPageCount() - 1));
+
+ // set tab page
+ m_tabPage[m_curTab] = iCurrentPage;
+
+ // update tab
+ switchTab(m_curTab);
+}
+
// 4J JEV - Tab Spec Struct
-IUIScene_CreativeMenu::TabSpec::TabSpec(LPCWSTR icon, int descriptionId, int staticGroupsCount, ECreative_Inventory_Groups *staticGroups, int dynamicGroupsCount, ECreative_Inventory_Groups *dynamicGroups)
- : m_icon(icon), m_descriptionId(descriptionId), m_staticGroupsCount(staticGroupsCount), m_dynamicGroupsCount(dynamicGroupsCount)
+IUIScene_CreativeMenu::TabSpec::TabSpec(LPCWSTR icon, int descriptionId, int staticGroupsCount, ECreative_Inventory_Groups *staticGroups, int dynamicGroupsCount, ECreative_Inventory_Groups *dynamicGroups, int debugGroupsCount /*= 0*/, ECreative_Inventory_Groups *debugGroups /*= NULL*/)
+ : m_icon(icon), m_descriptionId(descriptionId), m_staticGroupsCount(staticGroupsCount), m_dynamicGroupsCount(dynamicGroupsCount), m_debugGroupsCount(debugGroupsCount)
{
m_pages = 0;
@@ -622,8 +822,20 @@ IUIScene_CreativeMenu::TabSpec::TabSpec(LPCWSTR icon, int descriptionId, int sta
}
}
+ m_debugGroupsA = NULL;
+ m_debugItems = 0;
+ if(debugGroupsCount > 0)
+ {
+ m_debugGroupsA = new ECreative_Inventory_Groups[debugGroupsCount];
+ for(int i = 0; i < debugGroupsCount; ++i)
+ {
+ m_debugGroupsA[i] = debugGroups[i];
+ m_debugItems += categoryGroups[m_debugGroupsA[i]].size();
+ }
+ }
+
m_dynamicGroupsA = NULL;
- if(dynamicGroupsCount > 0)
+ if(dynamicGroupsCount > 0 && dynamicGroups != NULL)
{
m_dynamicGroupsA = new ECreative_Inventory_Groups[dynamicGroupsCount];
for(int i = 0; i < dynamicGroupsCount; ++i)
@@ -633,14 +845,16 @@ IUIScene_CreativeMenu::TabSpec::TabSpec(LPCWSTR icon, int descriptionId, int sta
}
}
- m_staticPerPage = MAX_SIZE - dynamicItems;
- m_pages = (int)ceil((float)m_staticItems / m_staticPerPage);
+ m_staticPerPage = columns;
+ const int totalRows = (m_staticItems + columns - 1) / columns;
+ m_pages = std::max<int>(1, totalRows - 5 + 1);
}
IUIScene_CreativeMenu::TabSpec::~TabSpec()
{
if(m_staticGroupsA != NULL) delete [] m_staticGroupsA;
if(m_dynamicGroupsA != NULL) delete [] m_dynamicGroupsA;
+ if(m_debugGroupsA != NULL) delete [] m_debugGroupsA;
}
void IUIScene_CreativeMenu::TabSpec::populateMenu(AbstractContainerMenu *menu, int dynamicIndex, unsigned int page)
@@ -659,12 +873,12 @@ void IUIScene_CreativeMenu::TabSpec::populateMenu(AbstractContainerMenu *menu, i
// Fill from the static groups
unsigned int startIndex = page * m_staticPerPage;
- int remainingItems = m_staticItems - startIndex;
// Work out the first group with an item the want to display, and which item in that group
unsigned int currentIndex = 0;
unsigned int currentGroup = 0;
unsigned int currentItem = 0;
+ bool displayStatic = false;
for(; currentGroup < m_staticGroupsCount; ++currentGroup)
{
int size = categoryGroups[m_staticGroupsA[currentGroup]].size();
@@ -673,26 +887,79 @@ void IUIScene_CreativeMenu::TabSpec::populateMenu(AbstractContainerMenu *menu, i
currentIndex += size;
continue;
}
+ displayStatic = true;
currentItem = size - ((currentIndex + size) - startIndex);
break;
}
- for(; lastSlotIndex < MAX_SIZE;)
+ int lastStaticPageCount = currentIndex;
+ while(lastStaticPageCount > m_staticPerPage) lastStaticPageCount -= m_staticPerPage;
+
+ if(displayStatic)
{
- Slot *slot = menu->getSlot(lastSlotIndex++);
- slot->set(categoryGroups[m_staticGroupsA[currentGroup]][currentItem]);
+ for(; lastSlotIndex < MAX_SIZE;)
+ {
+ Slot *slot = menu->getSlot(lastSlotIndex++);
+ slot->set(categoryGroups[m_staticGroupsA[currentGroup]][currentItem]);
+
+ ++currentItem;
+ if(currentItem >= categoryGroups[m_staticGroupsA[currentGroup]].size())
+ {
+ currentItem = 0;
+ ++currentGroup;
+ if(currentGroup >= m_staticGroupsCount)
+ {
+ break;
+ }
+ }
+ }
+ }
- ++currentItem;
- if(currentItem >= categoryGroups[m_staticGroupsA[currentGroup]].size())
+#ifndef _CONTENT_PACKAGE
+ if(app.DebugArtToolsOn())
+ {
+ if(m_debugGroupsCount > 0)
{
+ startIndex = 0;
+ if(lastStaticPageCount != 0)
+ {
+ startIndex = m_staticPerPage - lastStaticPageCount;
+ }
+ currentIndex = 0;
+ currentGroup = 0;
currentItem = 0;
- ++currentGroup;
- if(currentGroup >= m_staticGroupsCount)
+ bool showDebug = false;
+ for(; currentGroup < m_debugGroupsCount; ++currentGroup)
{
+ int size = categoryGroups[m_debugGroupsA[currentGroup]].size();
+ if( currentIndex + size < startIndex)
+ {
+ currentIndex += size;
+ continue;
+ }
+ currentItem = size - ((currentIndex + size) - startIndex);
break;
}
+
+ for(; lastSlotIndex < MAX_SIZE;)
+ {
+ Slot *slot = menu->getSlot(lastSlotIndex++);
+ slot->set(categoryGroups[m_debugGroupsA[currentGroup]][currentItem]);
+
+ ++currentItem;
+ if(currentItem >= categoryGroups[m_debugGroupsA[currentGroup]].size())
+ {
+ currentItem = 0;
+ ++currentGroup;
+ if(currentGroup >= m_debugGroupsCount)
+ {
+ break;
+ }
+ }
+ }
}
}
+#endif
for(; lastSlotIndex < MAX_SIZE; ++lastSlotIndex)
{
@@ -703,7 +970,16 @@ void IUIScene_CreativeMenu::TabSpec::populateMenu(AbstractContainerMenu *menu, i
unsigned int IUIScene_CreativeMenu::TabSpec::getPageCount()
{
- return m_pages;
+#ifndef _CONTENT_PACKAGE
+ if(app.DebugArtToolsOn())
+ {
+ return (int)ceil((float)(m_staticItems + m_debugItems) / m_staticPerPage);
+ }
+ else
+#endif
+ {
+ return m_pages;
+ }
}
@@ -763,7 +1039,6 @@ IUIScene_AbstractContainerMenu::ESceneSection IUIScene_CreativeMenu::GetSectionA
newSection = eSectionInventoryCreativeSelector;
}
break;
-#ifndef _XBOX
case eSectionInventoryCreativeTab_0:
case eSectionInventoryCreativeTab_1:
case eSectionInventoryCreativeTab_2:
@@ -775,7 +1050,6 @@ IUIScene_AbstractContainerMenu::ESceneSection IUIScene_CreativeMenu::GetSectionA
case eSectionInventoryCreativeSlider:
/* do nothing */
break;
-#endif
default:
assert( false );
break;
@@ -800,7 +1074,7 @@ bool IUIScene_CreativeMenu::handleValidKeyPress(int iPad, int buttonNum, BOOL qu
{
m_menu->getSlot(i)->set(nullptr);
// call this function to synchronize multiplayer item bar
- pMinecraft->localgameModes[iPad]->handleCreativeModeItemAdd(nullptr, i - (int)m_menu->slots->size() + 9 + InventoryMenu::USE_ROW_SLOT_START);
+ pMinecraft->localgameModes[iPad]->handleCreativeModeItemAdd(nullptr, i - (int)m_menu->slots.size() + 9 + InventoryMenu::USE_ROW_SLOT_START);
}
}
return true;
@@ -930,7 +1204,7 @@ void IUIScene_CreativeMenu::handleSlotListClicked(ESceneSection eSection, int bu
m_menu->clicked(currentIndex, buttonNum, quickKeyHeld?AbstractContainerMenu::CLICK_QUICK_MOVE:AbstractContainerMenu::CLICK_PICKUP, pMinecraft->localplayers[getPad()]);
shared_ptr<ItemInstance> newItem = m_menu->getSlot(currentIndex)->getItem();
// call this function to synchronize multiplayer item bar
- pMinecraft->localgameModes[getPad()]->handleCreativeModeItemAdd(newItem, currentIndex - (int)m_menu->slots->size() + 9 + InventoryMenu::USE_ROW_SLOT_START);
+ pMinecraft->localgameModes[getPad()]->handleCreativeModeItemAdd(newItem, currentIndex - (int)m_menu->slots.size() + 9 + InventoryMenu::USE_ROW_SLOT_START);
if(m_bCarryingCreativeItem)
{
@@ -978,7 +1252,7 @@ bool IUIScene_CreativeMenu::getEmptyInventorySlot(shared_ptr<ItemInstance> item,
for(unsigned int i = TabSpec::MAX_SIZE; i < TabSpec::MAX_SIZE + 9; ++i)
{
shared_ptr<ItemInstance> slotItem = m_menu->getSlot(i)->getItem();
- if( slotItem != NULL && slotItem->sameItem(item) && (slotItem->GetCount() + item->GetCount() <= item->getMaxStackSize() ))
+ if( slotItem != NULL && slotItem->sameItemWithTags(item) && (slotItem->GetCount() + item->GetCount() <= item->getMaxStackSize() ))
{
sameItemFound = true;
slotX = i - TabSpec::MAX_SIZE;
@@ -1021,7 +1295,7 @@ int IUIScene_CreativeMenu::getSectionStartOffset(ESceneSection eSection)
}
bool IUIScene_CreativeMenu::overrideTooltips(ESceneSection sectionUnderPointer, shared_ptr<ItemInstance> itemUnderPointer, bool bIsItemCarried, bool bSlotHasItem, bool bCarriedIsSameAsSlot, int iSlotStackSizeRemaining,
- EToolTipItem &buttonA, EToolTipItem &buttonX, EToolTipItem &buttonY, EToolTipItem &buttonRT)
+ EToolTipItem &buttonA, EToolTipItem &buttonX, EToolTipItem &buttonY, EToolTipItem &buttonRT, EToolTipItem &buttonBack)
{
bool _override = false;
@@ -1030,7 +1304,6 @@ bool IUIScene_CreativeMenu::overrideTooltips(ESceneSection sectionUnderPointer,
if(bSlotHasItem)
{
buttonA = eToolTipPickUpGeneric;
- buttonRT = eToolTipWhatIsThis;
if(itemUnderPointer->isStackable())
{
@@ -1051,3 +1324,74 @@ bool IUIScene_CreativeMenu::overrideTooltips(ESceneSection sectionUnderPointer,
return _override;
}
+
+void IUIScene_CreativeMenu::BuildFirework(vector<shared_ptr<ItemInstance> > *list, byte type, int color, int sulphur, bool flicker, bool trail, int fadeColor/*= -1*/)
+{
+ /////////////////////////////////
+ // Create firecharge
+ /////////////////////////////////
+
+
+ CompoundTag *expTag = new CompoundTag(FireworksItem::TAG_EXPLOSION);
+
+ vector<int> colors;
+
+ colors.push_back(DyePowderItem::COLOR_RGB[color]);
+
+ // glowstone dust gives flickering
+ if (flicker) expTag->putBoolean(FireworksItem::TAG_E_FLICKER, true);
+
+ // diamonds give trails
+ if (trail) expTag->putBoolean(FireworksItem::TAG_E_TRAIL, true);
+
+ intArray colorArray(colors.size());
+ for (int i = 0; i < colorArray.length; i++)
+ {
+ colorArray[i] = colors.at(i);
+ }
+ expTag->putIntArray(FireworksItem::TAG_E_COLORS, colorArray);
+ // delete colorArray.data;
+
+ expTag->putByte(FireworksItem::TAG_E_TYPE, type);
+
+ if (fadeColor != -1)
+ {
+ ////////////////////////////////////
+ // Apply fade colors to firecharge
+ ////////////////////////////////////
+
+ vector<int> colors;
+ colors.push_back(DyePowderItem::COLOR_RGB[fadeColor]);
+
+ intArray colorArray(colors.size());
+ for (int i = 0; i < colorArray.length; i++)
+ {
+ colorArray[i] = colors.at(i);
+ }
+ expTag->putIntArray(FireworksItem::TAG_E_FADECOLORS, colorArray);
+ }
+
+ /////////////////////////////////
+ // Create fireworks
+ /////////////////////////////////
+
+ shared_ptr<ItemInstance> firework;
+
+ {
+ firework = shared_ptr<ItemInstance>( new ItemInstance(Item::fireworks) );
+ CompoundTag *itemTag = new CompoundTag();
+ CompoundTag *fireTag = new CompoundTag(FireworksItem::TAG_FIREWORKS);
+ ListTag<CompoundTag> *expTags = new ListTag<CompoundTag>(FireworksItem::TAG_EXPLOSIONS);
+
+ expTags->add(expTag);
+
+ fireTag->put(FireworksItem::TAG_EXPLOSIONS, expTags);
+ fireTag->putByte(FireworksItem::TAG_FLIGHT, (byte) sulphur);
+
+ itemTag->put(FireworksItem::TAG_FIREWORKS, fireTag);
+
+ firework->setTag(itemTag);
+ }
+
+ list->push_back(firework);
+}
diff --git a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.h b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.h
index 7ab3ff7e..64b78029 100644
--- a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.h
+++ b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.h
@@ -38,6 +38,8 @@ public:
eCreativeInventory_Potions_Extended,
eCreativeInventory_Potions_Level2_Extended,
eCreativeInventory_Misc,
+ eCreativeInventory_ArtToolsDecorations,
+ eCreativeInventory_ArtToolsMisc,
eCreativeInventoryGroupsCount
};
@@ -57,14 +59,17 @@ public:
ECreative_Inventory_Groups *m_staticGroupsA;
const int m_dynamicGroupsCount;
ECreative_Inventory_Groups *m_dynamicGroupsA;
+ const int m_debugGroupsCount;
+ ECreative_Inventory_Groups *m_debugGroupsA;
private:
unsigned int m_pages;
unsigned int m_staticPerPage;
unsigned int m_staticItems;
+ unsigned int m_debugItems;
public:
- TabSpec( LPCWSTR icon, int descriptionId, int staticGroupsCount, ECreative_Inventory_Groups *staticGroups, int dynamicGroupsCount, ECreative_Inventory_Groups *dynamicGroups );
+ TabSpec( LPCWSTR icon, int descriptionId, int staticGroupsCount, ECreative_Inventory_Groups *staticGroups, int dynamicGroupsCount = 0, ECreative_Inventory_Groups *dynamicGroups = NULL, int debugGroupsCount = 0, ECreative_Inventory_Groups *debugGroups = NULL );
~TabSpec();
void populateMenu(AbstractContainerMenu *menu, int dynamicIndex, unsigned int page);
@@ -104,7 +109,8 @@ protected:
int m_tabDynamicPos[eCreativeInventoryTab_COUNT];
int m_tabPage[eCreativeInventoryTab_COUNT];
- void switchTab(ECreativeInventoryTabs tab);
+ void switchTab(ECreativeInventoryTabs tab);
+ void ScrollBar(UIVec2D pointerPos);
virtual void updateTabHighlightAndText(ECreativeInventoryTabs tab) = 0;
virtual void updateScrollCurrentPage(int currentPage, int pageCount) = 0;
virtual ESceneSection GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY );
@@ -117,6 +123,19 @@ protected:
virtual bool IsSectionSlotList( ESceneSection eSection );
virtual bool CanHaveFocus( ESceneSection eSection );
- virtual bool overrideTooltips(ESceneSection sectionUnderPointer, shared_ptr<ItemInstance> itemUnderPointer, bool bIsItemCarried, bool bSlotHasItem, bool bCarriedIsSameAsSlot, int iSlotStackSizeRemaining,
- EToolTipItem &buttonA, EToolTipItem &buttonX, EToolTipItem &buttonY, EToolTipItem &buttonRT);
+ virtual bool overrideTooltips(
+ ESceneSection sectionUnderPointer,
+ shared_ptr<ItemInstance> itemUnderPointer,
+ bool bIsItemCarried,
+ bool bSlotHasItem,
+ bool bCarriedIsSameAsSlot,
+ int iSlotStackSizeRemaining,
+ EToolTipItem &buttonA,
+ EToolTipItem &buttonX,
+ EToolTipItem &buttonY,
+ EToolTipItem &buttonRT,
+ EToolTipItem &buttonBack
+ );
+
+ static void BuildFirework(vector<shared_ptr<ItemInstance> > *list, byte type, int color, int sulphur, bool flicker, bool trail, int fadeColor = -1);
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_FireworksMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_FireworksMenu.cpp
new file mode 100644
index 00000000..7f90fe8f
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_FireworksMenu.cpp
@@ -0,0 +1,129 @@
+#include "stdafx.h"
+
+#include "IUIScene_FireworksMenu.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
+
+IUIScene_AbstractContainerMenu::ESceneSection IUIScene_FireworksMenu::GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY )
+{
+ ESceneSection newSection = eSection;
+ int xOffset = 0;
+ int yOffset = 0;
+
+ // Find the new section if there is one
+ switch( eSection )
+ {
+ case eSectionFireworksIngredients:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionFireworksInventory;
+ xOffset = -1;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionFireworksUsing;
+ xOffset = -1;
+ }
+ else if(eTapDirection == eTapStateLeft)
+ {
+ newSection = eSectionFireworksResult;
+ }
+ else if(eTapDirection == eTapStateRight)
+ {
+ newSection = eSectionFireworksResult;
+ }
+ break;
+ case eSectionFireworksResult:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionFireworksInventory;
+ xOffset = -7;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionFireworksUsing;
+ xOffset = -7;
+ }
+ else if(eTapDirection == eTapStateLeft)
+ {
+ newSection = eSectionFireworksIngredients;
+ yOffset = -1;
+ *piTargetX = getSectionColumns(eSectionFireworksIngredients);
+ }
+ else if(eTapDirection == eTapStateRight)
+ {
+ newSection = eSectionFireworksIngredients;
+ yOffset = -1;
+ *piTargetX = 0;
+ }
+ break;
+ case eSectionFireworksInventory:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionFireworksUsing;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ if(*piTargetX < 6)
+ {
+ newSection = eSectionFireworksIngredients;
+ xOffset = 1;
+ }
+ else
+ {
+ newSection = eSectionFireworksResult;
+ }
+ }
+ break;
+ case eSectionFireworksUsing:
+ if(eTapDirection == eTapStateDown)
+ {
+ if(*piTargetX < 6)
+ {
+ newSection = eSectionFireworksIngredients;
+ xOffset = 1;
+ }
+ else
+ {
+ newSection = eSectionFireworksResult;
+ }
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionFireworksInventory;
+ }
+ break;
+ default:
+ assert( false );
+ break;
+ }
+
+ updateSlotPosition(eSection, newSection, eTapDirection, piTargetX, piTargetY, xOffset, yOffset);
+
+ return newSection;
+}
+
+int IUIScene_FireworksMenu::getSectionStartOffset(ESceneSection eSection)
+{
+ int offset = 0;
+ switch( eSection )
+ {
+
+ case eSectionFireworksIngredients:
+ offset = FireworksMenu::CRAFT_SLOT_START;
+ break;
+
+ case eSectionFireworksResult:
+ offset = FireworksMenu::RESULT_SLOT;
+ break;
+ case eSectionFireworksInventory:
+ offset = FireworksMenu::INV_SLOT_START;
+ break;
+ case eSectionFireworksUsing:
+ offset = FireworksMenu::INV_SLOT_START + 27;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return offset;
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_FireworksMenu.h b/Minecraft.Client/Common/UI/IUIScene_FireworksMenu.h
new file mode 100644
index 00000000..4764d72c
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_FireworksMenu.h
@@ -0,0 +1,9 @@
+#pragma once
+#include "IUIScene_AbstractContainerMenu.h"
+
+class IUIScene_FireworksMenu : public virtual IUIScene_AbstractContainerMenu
+{
+protected:
+ virtual ESceneSection GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY );
+ int getSectionStartOffset(ESceneSection eSection);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_HUD.cpp b/Minecraft.Client/Common/UI/IUIScene_HUD.cpp
new file mode 100644
index 00000000..03adbd2c
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_HUD.cpp
@@ -0,0 +1,264 @@
+#include "stdafx.h"
+#include "..\..\Minecraft.h"
+#include "..\..\MultiPlayerLocalPlayer.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.effect.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.ai.attributes.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.monster.h"
+#include "IUIScene_HUD.h"
+
+IUIScene_HUD::IUIScene_HUD()
+{
+ m_lastActiveSlot = -1;
+ m_iGuiScale = -1;
+ m_bToolTipsVisible = true;
+ m_lastExpProgress = 0.0f;
+ m_lastExpLevel = 0;
+ m_iCurrentHealth = 0;
+ m_lastMaxHealth = 20;
+ m_lastHealthBlink = false;
+ m_lastHealthPoison = false;
+ m_iCurrentFood = -1;
+ m_lastFoodPoison = false;
+ m_lastAir = 10;
+ m_currentExtraAir = 0;
+ m_lastArmour = 0;
+ m_showHealth = true;
+ m_showHorseHealth = true;
+ m_showFood = true;
+ m_showAir = true;
+ m_showArmour = true;
+ m_showExpBar = true;
+ m_bRegenEffectEnabled = false;
+ m_iFoodSaturation = 0;
+ m_lastDragonHealth = 0.0f;
+ m_showDragonHealth = false;
+ m_ticksWithNoBoss = 0;
+ m_uiSelectedItemOpacityCountDown = 0;
+ m_displayName = L"";
+ m_lastShowDisplayName = true;
+ m_bRidingHorse = true;
+ m_horseHealth = 1;
+ m_lastHealthWither = true;
+ m_iCurrentHealthAbsorb = -1;
+ m_horseJumpProgress = 1.0f;
+ m_iHeartOffsetIndex = -1;
+ m_bHealthAbsorbActive = false;
+ m_iHorseMaxHealth = -1;
+ m_bIsJumpable = false;
+}
+
+void IUIScene_HUD::updateFrameTick()
+{
+ int iPad = getPad();
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+
+ int iGuiScale;
+
+ if(pMinecraft->localplayers[iPad]->m_iScreenSection == C4JRender::VIEWPORT_TYPE_FULLSCREEN)
+ {
+ iGuiScale=app.GetGameSettings(iPad,eGameSetting_UISize);
+ }
+ else
+ {
+ iGuiScale=app.GetGameSettings(iPad,eGameSetting_UISizeSplitscreen);
+ }
+ SetHudSize(iGuiScale);
+
+ SetDisplayName(ProfileManager.GetDisplayName(iPad));
+
+ SetTooltipsEnabled(((ui.GetMenuDisplayed(ProfileManager.GetPrimaryPad())) || (app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_Tooltips) != 0)));
+
+ SetActiveSlot(pMinecraft->localplayers[iPad]->inventory->selected);
+
+ if (pMinecraft->localgameModes[iPad]->canHurtPlayer())
+ {
+ renderPlayerHealth();
+ }
+ else
+ {
+ //SetRidingHorse(false, 0);
+ shared_ptr<Entity> riding = pMinecraft->localplayers[iPad]->riding;
+ if(riding == NULL)
+ {
+ SetRidingHorse(false, false, 0);
+ }
+ else
+ {
+ SetRidingHorse(true, pMinecraft->localplayers[iPad]->isRidingJumpable(), 0);
+ }
+ ShowHorseHealth(false);
+ m_horseHealth = 0;
+ ShowHealth(false);
+ ShowFood(false);
+ ShowAir(false);
+ ShowArmour(false);
+ ShowExpBar(false);
+ SetHealthAbsorb(0);
+ }
+
+ if(pMinecraft->localplayers[iPad]->isRidingJumpable())
+ {
+ SetHorseJumpBarProgress(pMinecraft->localplayers[iPad]->getJumpRidingScale());
+ }
+ else if (pMinecraft->localgameModes[iPad]->hasExperience())
+ {
+ // Update xp progress
+ ShowExpBar(true);
+
+ SetExpBarProgress(pMinecraft->localplayers[iPad]->experienceProgress, pMinecraft->localplayers[iPad]->getXpNeededForNextLevel());
+
+ // Update xp level
+ SetExpLevel(pMinecraft->localplayers[iPad]->experienceLevel);
+ }
+ else
+ {
+ ShowExpBar(false);
+ SetExpLevel(0);
+ }
+
+ if(m_uiSelectedItemOpacityCountDown>0)
+ {
+ --m_uiSelectedItemOpacityCountDown;
+
+ // 4J Stu - Timing here is kept the same as on Xbox360, even though we do it differently now and do the fade out in Flash rather than directly setting opacity
+ if(m_uiSelectedItemOpacityCountDown < (SharedConstants::TICKS_PER_SECOND * 1) )
+ {
+ HideSelectedLabel();
+ m_uiSelectedItemOpacityCountDown = 0;
+ }
+ }
+
+ unsigned char ucAlpha=app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_InterfaceOpacity);
+ float fVal;
+
+ if(ucAlpha<80)
+ {
+ // if we are in a menu, set the minimum opacity for tooltips to 15%
+ if(ui.GetMenuDisplayed(iPad) && (ucAlpha<15))
+ {
+ ucAlpha=15;
+ }
+
+ // check if we have the timer running for the opacity
+ unsigned int uiOpacityTimer=app.GetOpacityTimer(iPad);
+ if(uiOpacityTimer!=0)
+ {
+ if(uiOpacityTimer<10)
+ {
+ float fStep=(80.0f-(float)ucAlpha)/10.0f;
+ fVal=0.01f*(80.0f-((10.0f-(float)uiOpacityTimer)*fStep));
+ }
+ else
+ {
+ fVal=0.01f*80.0f;
+ }
+ }
+ else
+ {
+ fVal=0.01f*(float)ucAlpha;
+ }
+ }
+ else
+ {
+ // if we are in a menu, set the minimum opacity for tooltips to 15%
+ if(ui.GetMenuDisplayed(iPad) && (ucAlpha<15))
+ {
+ ucAlpha=15;
+ }
+ fVal=0.01f*(float)ucAlpha;
+ }
+ SetOpacity(fVal);
+
+ bool bDisplayGui=app.GetGameStarted() && !ui.GetMenuDisplayed(iPad) && !(app.GetXuiAction(iPad)==eAppAction_AutosaveSaveGameCapturedThumbnail) && app.GetGameSettings(iPad,eGameSetting_DisplayHUD)!=0;
+ if(bDisplayGui && pMinecraft->localplayers[iPad] != NULL)
+ {
+ SetVisible(true);
+ }
+ else
+ {
+ SetVisible(false);
+ }
+}
+
+void IUIScene_HUD::renderPlayerHealth()
+{
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ int iPad = getPad();
+
+ ShowHealth(true);
+
+ SetRegenerationEffect(pMinecraft->localplayers[iPad]->hasEffect(MobEffect::regeneration));
+
+ // Update health
+ bool blink = pMinecraft->localplayers[iPad]->invulnerableTime / 3 % 2 == 1;
+ if (pMinecraft->localplayers[iPad]->invulnerableTime < 10) blink = false;
+ int currentHealth = pMinecraft->localplayers[iPad]->getHealth();
+ int oldHealth = pMinecraft->localplayers[iPad]->lastHealth;
+ bool bHasPoison = pMinecraft->localplayers[iPad]->hasEffect(MobEffect::poison);
+ bool bHasWither = pMinecraft->localplayers[iPad]->hasEffect(MobEffect::wither);
+ AttributeInstance *maxHealthAttribute = pMinecraft->localplayers[iPad]->getAttribute(SharedMonsterAttributes::MAX_HEALTH);
+ float maxHealth = (float)maxHealthAttribute->getValue();
+ float totalAbsorption = pMinecraft->localplayers[iPad]->getAbsorptionAmount();
+
+ // Update armour
+ int armor = pMinecraft->localplayers[iPad]->getArmorValue();
+
+ SetHealth(currentHealth, oldHealth, blink, bHasPoison || bHasWither, bHasWither);
+ SetHealthAbsorb(totalAbsorption);
+
+ if(armor > 0)
+ {
+ ShowArmour(true);
+ SetArmour(armor);
+ }
+ else
+ {
+ ShowArmour(false);
+ }
+
+ shared_ptr<Entity> riding = pMinecraft->localplayers[iPad]->riding;
+
+ if(riding == NULL || riding && !riding->instanceof(eTYPE_LIVINGENTITY))
+ {
+ SetRidingHorse(false, false, 0);
+
+ ShowFood(true);
+ ShowHorseHealth(false);
+ m_horseHealth = 0;
+
+ // Update food
+ //bool foodBlink = false;
+ FoodData *foodData = pMinecraft->localplayers[iPad]->getFoodData();
+ int food = foodData->getFoodLevel();
+ int oldFood = foodData->getLastFoodLevel();
+ bool hasHungerEffect = pMinecraft->localplayers[iPad]->hasEffect(MobEffect::hunger);
+ int saturationLevel = pMinecraft->localplayers[iPad]->getFoodData()->getSaturationLevel();
+
+ SetFood(food, oldFood, hasHungerEffect);
+ SetFoodSaturationLevel(saturationLevel);
+
+ // Update air
+ if (pMinecraft->localplayers[iPad]->isUnderLiquid(Material::water))
+ {
+ ShowAir(true);
+ int count = (int) ceil((pMinecraft->localplayers[iPad]->getAirSupply() - 2) * 10.0f / Player::TOTAL_AIR_SUPPLY);
+ int extra = (int) ceil((pMinecraft->localplayers[iPad]->getAirSupply()) * 10.0f / Player::TOTAL_AIR_SUPPLY) - count;
+ SetAir(count, extra);
+ }
+ else
+ {
+ ShowAir(false);
+ }
+ }
+ else if(riding->instanceof(eTYPE_LIVINGENTITY) )
+ {
+ shared_ptr<LivingEntity> living = dynamic_pointer_cast<LivingEntity>(riding);
+ int riderCurrentHealth = (int) ceil(living->getHealth());
+ float maxRiderHealth = living->getMaxHealth();
+
+ SetRidingHorse(true, pMinecraft->localplayers[iPad]->isRidingJumpable(), maxRiderHealth);
+ SetHorseHealth(riderCurrentHealth);
+ ShowHorseHealth(true);
+ }
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_HUD.h b/Minecraft.Client/Common/UI/IUIScene_HUD.h
new file mode 100644
index 00000000..0f643dd3
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_HUD.h
@@ -0,0 +1,85 @@
+#pragma once
+
+class IUIScene_HUD
+{
+protected:
+ int m_lastActiveSlot;
+ int m_iGuiScale;
+ bool m_bToolTipsVisible;
+ float m_lastExpProgress;
+ int m_lastExpLevel;
+ int m_iCurrentHealth;
+ int m_lastMaxHealth;
+ bool m_lastHealthBlink, m_lastHealthPoison, m_lastHealthWither;
+ int m_iCurrentFood;
+ bool m_lastFoodPoison;
+ int m_lastAir, m_currentExtraAir;
+ int m_lastArmour;
+ float m_lastDragonHealth;
+ bool m_showDragonHealth;
+ int m_ticksWithNoBoss;
+ bool m_lastShowDisplayName;
+ int m_horseHealth;
+ int m_iCurrentHealthAbsorb;
+ float m_horseJumpProgress;
+ int m_iHeartOffsetIndex;
+ bool m_bHealthAbsorbActive;
+ int m_iHorseMaxHealth;
+
+ bool m_showHealth, m_showHorseHealth, m_showFood, m_showAir, m_showArmour, m_showExpBar, m_bRidingHorse, m_bIsJumpable;
+ bool m_bRegenEffectEnabled;
+ int m_iFoodSaturation;
+
+ unsigned int m_uiSelectedItemOpacityCountDown;
+
+ wstring m_displayName;
+
+ IUIScene_HUD();
+
+ virtual int getPad() = 0;
+ virtual void SetOpacity(float opacity) = 0;
+ virtual void SetVisible(bool visible) = 0;
+
+ virtual void SetHudSize(int scale) = 0;
+ virtual void SetExpBarProgress(float progress, int xpNeededForNextLevel) = 0;
+ virtual void SetExpLevel(int level) = 0;
+ virtual void SetActiveSlot(int slot) = 0;
+
+ virtual void SetHealth(int iHealth, int iLastHealth, bool bBlink, bool bPoison, bool bWither) = 0;
+ virtual void SetFood(int iFood, int iLastFood, bool bPoison) = 0;
+ virtual void SetAir(int iAir, int extra) = 0;
+ virtual void SetArmour(int iArmour) = 0;
+
+ virtual void ShowHealth(bool show) = 0;
+ virtual void ShowHorseHealth(bool show) = 0;
+ virtual void ShowFood(bool show) = 0;
+ virtual void ShowAir(bool show) = 0;
+ virtual void ShowArmour(bool show) = 0;
+ virtual void ShowExpBar(bool show) = 0;
+
+ virtual void SetRegenerationEffect(bool bEnabled) = 0;
+ virtual void SetFoodSaturationLevel(int iSaturation) = 0;
+
+ virtual void SetDragonHealth(float health) = 0;
+ virtual void SetDragonLabel(const wstring &label) = 0;
+ virtual void ShowDragonHealth(bool show) = 0;
+
+ virtual void HideSelectedLabel() = 0;
+
+ virtual void SetDisplayName(const wstring &displayName) = 0;
+
+ virtual void SetTooltipsEnabled(bool bEnabled) = 0;
+
+ virtual void SetRidingHorse(bool ridingHorse, bool bIsJumpable, int maxHorseHealth) = 0;
+ virtual void SetHorseHealth(int health, bool blink = false) = 0;
+ virtual void SetHorseJumpBarProgress(float progress) = 0;
+
+ virtual void SetHealthAbsorb(int healthAbsorb) = 0;
+
+ virtual void SetSelectedLabel(const wstring &label) = 0;
+ virtual void ShowDisplayName(bool show) = 0;
+
+public:
+ void updateFrameTick();
+ void renderPlayerHealth();
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_HopperMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_HopperMenu.cpp
new file mode 100644
index 00000000..392c12d4
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_HopperMenu.cpp
@@ -0,0 +1,77 @@
+#include "stdafx.h"
+#include "IUIScene_HopperMenu.h"
+#include "../Minecraft.World/net.minecraft.world.inventory.h"
+
+IUIScene_AbstractContainerMenu::ESceneSection IUIScene_HopperMenu::GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY )
+{
+ ESceneSection newSection = eSection;
+
+ int xOffset = 0;
+
+ // Find the new section if there is one
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionHopperInventory;
+ xOffset = -2;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ xOffset = -2;
+ newSection = eSectionHopperUsing;
+ }
+ break;
+ case eSectionHopperInventory:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionHopperUsing;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ xOffset = 2;
+ newSection = eSectionHopperContents;
+ }
+ break;
+ case eSectionHopperUsing:
+ if(eTapDirection == eTapStateDown)
+ {
+ xOffset = 2;
+ newSection = eSectionHopperContents;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionHopperInventory;
+ }
+ break;
+ default:
+ assert(false);
+ break;
+ }
+
+ updateSlotPosition(eSection, newSection, eTapDirection, piTargetX, piTargetY, xOffset);
+
+ return newSection;
+}
+
+int IUIScene_HopperMenu::getSectionStartOffset(ESceneSection eSection)
+{
+ int offset = 0;
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ offset = HopperMenu::CONTENTS_SLOT_START;
+ break;
+ case eSectionHopperInventory:
+ offset = HopperMenu::INV_SLOT_START;
+ break;
+ case eSectionHopperUsing:
+ offset = HopperMenu::USE_ROW_SLOT_START;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return offset;
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_HopperMenu.h b/Minecraft.Client/Common/UI/IUIScene_HopperMenu.h
new file mode 100644
index 00000000..ef6d8d25
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_HopperMenu.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "IUIScene_AbstractContainerMenu.h"
+#include "../../../Minecraft.World/Container.h"
+#include "../../../Minecraft.World/Inventory.h"
+
+class IUIScene_HopperMenu : public virtual IUIScene_AbstractContainerMenu
+{
+public:
+ virtual ESceneSection GetSectionAndSlotInDirection(ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY);
+ int getSectionStartOffset(ESceneSection eSection);
+};
diff --git a/Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.cpp
new file mode 100644
index 00000000..8f1caab8
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.cpp
@@ -0,0 +1,251 @@
+#include "stdafx.h"
+#include "IUIScene_HorseInventoryMenu.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.animal.h"
+
+IUIScene_AbstractContainerMenu::ESceneSection IUIScene_HorseInventoryMenu::GetSectionAndSlotInDirection( ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY )
+{
+ ESceneSection newSection = eSection;
+
+ int xOffset = 0;
+ int yOffset = 0;
+
+ // Find the new section if there is one
+ switch( eSection )
+ {
+ case eSectionHorseUsing:
+ if(eTapDirection == eTapStateDown)
+ {
+ if(m_horse->isChestedHorse() && *piTargetX >= 4)
+ {
+ newSection = eSectionHorseChest;
+ xOffset = 4;
+ }
+ else
+ {
+ newSection = eSectionHorseSaddle;
+ }
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionHorseInventory;
+ }
+ break;
+ case eSectionHorseInventory:
+ if(eTapDirection == eTapStateDown)
+ {
+ newSection = eSectionHorseUsing;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ if(m_horse->isChestedHorse() && *piTargetX >= 4)
+ {
+ xOffset = 4;
+ newSection = eSectionHorseChest;
+ }
+ else if(m_horse->canWearArmor())
+ {
+ newSection = eSectionHorseArmor;
+ }
+ else
+ {
+ newSection = eSectionHorseSaddle;
+ }
+ }
+ break;
+ case eSectionHorseChest:
+ if(eTapDirection == eTapStateDown)
+ {
+ xOffset = -4;
+ newSection = eSectionHorseInventory;
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ xOffset = -4;
+ newSection = eSectionHorseUsing;
+ }
+ else if(eTapDirection == eTapStateLeft)
+ {
+ if(*piTargetX < 0)
+ {
+ if(m_horse->canWearArmor() && *piTargetY == 1)
+ {
+ newSection = eSectionHorseArmor;
+ }
+ else if( *piTargetY == 0)
+ {
+ newSection = eSectionHorseSaddle;
+ }
+ }
+ }
+ else if(eTapDirection == eTapStateRight)
+ {
+ if(*piTargetX >= getSectionColumns(eSectionHorseChest))
+ {
+ if(m_horse->canWearArmor() && *piTargetY == 1)
+ {
+ newSection = eSectionHorseArmor;
+ }
+ else if( *piTargetY == 0)
+ {
+ newSection = eSectionHorseSaddle;
+ }
+ }
+ }
+ break;
+ case eSectionHorseArmor:
+ if(eTapDirection == eTapStateDown)
+ {
+ if(m_horse->isChestedHorse())
+ {
+ newSection = eSectionHorseChest;
+ }
+ else
+ {
+ newSection = eSectionHorseInventory;
+ }
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionHorseSaddle;
+ }
+ else if(eTapDirection == eTapStateRight)
+ {
+ if(m_horse->isChestedHorse())
+ {
+ yOffset = -1;
+ *piTargetX = 0;
+ newSection = eSectionHorseChest;
+ }
+ }
+ else if(eTapDirection == eTapStateLeft)
+ {
+ if(m_horse->isChestedHorse())
+ {
+ yOffset = -1;
+ *piTargetX = getSectionColumns(eSectionHorseChest);
+ newSection = eSectionHorseChest;
+ }
+ }
+ break;
+ case eSectionHorseSaddle:
+ if(eTapDirection == eTapStateDown)
+ {
+ if(m_horse->canWearArmor())
+ {
+ newSection = eSectionHorseArmor;
+ }
+ else
+ {
+ newSection = eSectionHorseInventory;
+ }
+ }
+ else if(eTapDirection == eTapStateUp)
+ {
+ newSection = eSectionHorseUsing;
+ }
+ else if(eTapDirection == eTapStateRight)
+ {
+ if(m_horse->isChestedHorse())
+ {
+ *piTargetX = 0;
+ newSection = eSectionHorseChest;
+ }
+ }
+ else if(eTapDirection == eTapStateLeft)
+ {
+ if(m_horse->isChestedHorse())
+ {
+ *piTargetX = getSectionColumns(eSectionHorseChest);
+ newSection = eSectionHorseChest;
+ }
+ }
+ break;
+ default:
+ assert(false);
+ break;
+ }
+
+ updateSlotPosition(eSection, newSection, eTapDirection, piTargetX, piTargetY, xOffset, yOffset);
+
+ return newSection;
+}
+
+// TODO: Offset will vary by type of horse, add in once horse menu and horse entity are implemented
+int IUIScene_HorseInventoryMenu::getSectionStartOffset(ESceneSection eSection)
+{
+ int offset = 0;
+ switch( eSection )
+ {
+ case eSectionHorseSaddle:
+ offset = EntityHorse::INV_SLOT_SADDLE;
+ break;
+ case eSectionHorseArmor:
+ offset = EntityHorse::INV_SLOT_ARMOR;
+ break;
+ case eSectionHorseChest:
+ offset = EntityHorse::INV_BASE_COUNT;
+ break;
+ case eSectionHorseInventory:
+ offset = EntityHorse::INV_BASE_COUNT;
+ if(m_horse->isChestedHorse())
+ {
+ offset += EntityHorse::INV_DONKEY_CHEST_COUNT;
+ }
+ break;
+ case eSectionHorseUsing:
+ offset = EntityHorse::INV_BASE_COUNT + 27;
+ if(m_horse->isChestedHorse())
+ {
+ offset += EntityHorse::INV_DONKEY_CHEST_COUNT;
+ }
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return offset;
+}
+
+bool IUIScene_HorseInventoryMenu::IsSectionSlotList( ESceneSection eSection )
+{
+ switch( eSection )
+ {
+ case eSectionHorseChest:
+ if(!m_horse->isChestedHorse())
+ return false;
+ else
+ return true;
+ case eSectionHorseArmor:
+ if(!m_horse->canWearArmor())
+ return false;
+ else
+ return true;
+ case eSectionHorseSaddle:
+ case eSectionHorseInventory:
+ case eSectionHorseUsing:
+ return true;
+ }
+ return false;
+}
+
+bool IUIScene_HorseInventoryMenu::IsVisible( ESceneSection eSection )
+{
+ switch( eSection )
+ {
+ case eSectionHorseChest:
+ if(!m_horse->isChestedHorse())
+ return false;
+ else
+ return true;
+ case eSectionHorseArmor:
+ if(!m_horse->canWearArmor())
+ return false;
+ else
+ return true;
+ case eSectionHorseSaddle:
+ case eSectionHorseInventory:
+ case eSectionHorseUsing:
+ return true;
+ }
+ return false;
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.h b/Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.h
new file mode 100644
index 00000000..6df2001e
--- /dev/null
+++ b/Minecraft.Client/Common/UI/IUIScene_HorseInventoryMenu.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "IUIScene_AbstractContainerMenu.h"
+#include "../../../Minecraft.World/Container.h"
+#include "../../../Minecraft.World/Inventory.h"
+#include "../../../Minecraft.World/EntityHorse.h"
+
+class IUIScene_HorseInventoryMenu : public virtual IUIScene_AbstractContainerMenu
+{
+protected:
+ shared_ptr<Inventory> m_inventory;
+ shared_ptr<Container> m_container;
+ shared_ptr<EntityHorse> m_horse;
+
+public:
+ virtual ESceneSection GetSectionAndSlotInDirection(ESceneSection eSection, ETapState eTapDirection, int *piTargetX, int *piTargetY);
+ int getSectionStartOffset(ESceneSection eSection);
+ bool IsSectionSlotList( ESceneSection eSection );
+ bool IsVisible( ESceneSection eSection );
+};
diff --git a/Minecraft.Client/Common/UI/IUIScene_PauseMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_PauseMenu.cpp
index 79203e7c..ab1767d4 100644
--- a/Minecraft.Client/Common/UI/IUIScene_PauseMenu.cpp
+++ b/Minecraft.Client/Common/UI/IUIScene_PauseMenu.cpp
@@ -11,15 +11,23 @@
#include "..\..\DLCTexturePack.h"
#include "..\..\..\Minecraft.World\StringHelpers.h"
+#ifndef _XBOX
+#include "UI.h"
+#endif
+
int IUIScene_PauseMenu::ExitGameDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
- IUIScene_PauseMenu *scene = (IUIScene_PauseMenu *)pParam;
+#ifdef _XBOX
+ IUIScene_PauseMenu *pScene = (IUIScene_PauseMenu *)pParam;
+#else
+ IUIScene_PauseMenu *pScene = dynamic_cast<IUIScene_PauseMenu *>(ui.GetSceneFromCallbackId((size_t)pParam));
+#endif
// Results switched for this dialog
if(result==C4JStorage::EMessage_ResultDecline)
{
- scene->SetIgnoreInput(true);
+ if(pScene) pScene->SetIgnoreInput(true);
app.SetAction(iPad,eAppAction_ExitWorld);
}
return 0;
@@ -28,7 +36,11 @@ int IUIScene_PauseMenu::ExitGameDialogReturned(void *pParam,int iPad,C4JStorage:
int IUIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
- IUIScene_PauseMenu *scene = (IUIScene_PauseMenu *)pParam;
+#ifdef _XBOX
+ IUIScene_PauseMenu *pScene = (IUIScene_PauseMenu *)pParam;
+#else
+ IUIScene_PauseMenu *pScene = dynamic_cast<IUIScene_PauseMenu *>(ui.GetSceneFromCallbackId((size_t)pParam));
+#endif
// Exit with or without saving
// Decline means save in this dialog
@@ -62,7 +74,7 @@ int IUIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStor
uiIDA[1]=IDS_CONFIRM_CANCEL;
// Give the player a warning about the trial version of the texture pack
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad() , &IUIScene_PauseMenu::WarningTrialTexturePackReturned, scene,app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad() , &IUIScene_PauseMenu::WarningTrialTexturePackReturned, pParam);
return S_OK;
}
@@ -78,7 +90,7 @@ int IUIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStor
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameAndSaveReturned, scene, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameAndSaveReturned, pParam);
return 0;
}
else
@@ -95,11 +107,11 @@ int IUIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStor
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_DECLINE_SAVE_GAME, IDS_CONFIRM_DECLINE_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameDeclineSaveReturned, scene, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_DECLINE_SAVE_GAME, IDS_CONFIRM_DECLINE_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameDeclineSaveReturned, pParam);
return 0;
}
- scene->SetIgnoreInput(true);
+ if(pScene) pScene->SetIgnoreInput(true);
app.SetAction(iPad,eAppAction_ExitWorld);
}
@@ -110,7 +122,11 @@ int IUIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStor
int IUIScene_PauseMenu::ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
// 4J-PB - we won't come in here if we have a trial texture pack
- IUIScene_PauseMenu *scene = (IUIScene_PauseMenu *)pParam;
+#ifdef _XBOX
+ IUIScene_PauseMenu *pScene = (IUIScene_PauseMenu *)pParam;
+#else
+ IUIScene_PauseMenu *pScene = dynamic_cast<IUIScene_PauseMenu *>(ui.GetSceneFromCallbackId((size_t)pParam));
+#endif
// results switched for this dialog
if(result==C4JStorage::EMessage_ResultDecline)
@@ -121,7 +137,7 @@ int IUIScene_PauseMenu::ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage
#if defined(_XBOX_ONE) || defined(__ORBIS__)
StorageManager.SetSaveDisabled(false);
#endif
- scene->SetIgnoreInput(true);
+ if(pScene) pScene->SetIgnoreInput(true);
MinecraftServer::getInstance()->setSaveOnExit( true );
// flag a app action of exit game
app.SetAction(iPad,eAppAction_ExitWorld);
@@ -139,11 +155,11 @@ int IUIScene_PauseMenu::ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage
if(g_NetworkManager.GetPlayerCount()>1)
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameSaveDialogReturned, scene, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameSaveDialogReturned, pParam);
}
else
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameSaveDialogReturned, scene, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, ProfileManager.GetPrimaryPad(), &IUIScene_PauseMenu::ExitGameSaveDialogReturned, pParam);
}
}
}
@@ -154,7 +170,11 @@ int IUIScene_PauseMenu::ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage
int IUIScene_PauseMenu::ExitGameDeclineSaveReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
- IUIScene_PauseMenu *scene = (IUIScene_PauseMenu *)pParam;
+#ifdef _XBOX
+ IUIScene_PauseMenu *pScene = (IUIScene_PauseMenu *)pParam;
+#else
+ IUIScene_PauseMenu *pScene = dynamic_cast<IUIScene_PauseMenu *>(ui.GetSceneFromCallbackId((size_t)pParam));
+#endif
// results switched for this dialog
if(result==C4JStorage::EMessage_ResultDecline)
@@ -163,7 +183,7 @@ int IUIScene_PauseMenu::ExitGameDeclineSaveReturned(void *pParam,int iPad,C4JSto
// Don't do this here, as it will still try and save some things even though it shouldn't!
//StorageManager.SetSaveDisabled(false);
#endif
- scene->SetIgnoreInput(true);
+ if(pScene) pScene->SetIgnoreInput(true);
MinecraftServer::getInstance()->setSaveOnExit( false );
// flag a app action of exit game
app.SetAction(iPad,eAppAction_ExitWorld);
@@ -181,11 +201,11 @@ int IUIScene_PauseMenu::ExitGameDeclineSaveReturned(void *pParam,int iPad,C4JSto
if(g_NetworkManager.GetPlayerCount()>1)
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameSaveDialogReturned, scene, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameSaveDialogReturned, pParam);
}
else
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameSaveDialogReturned, scene, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameSaveDialogReturned, pParam);
}
}
@@ -214,7 +234,7 @@ int IUIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad,NULL,&app, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
}
else
{
@@ -288,7 +308,7 @@ int IUIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4
{
// 4J-JEV: Fix for XB1: #165863 - XR-074: Compliance: With no active network connection user is unable to convert from Trial to Full texture pack and is not messaged why.
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad);
}
}
}
@@ -498,7 +518,7 @@ void IUIScene_PauseMenu::_ExitWorld(LPVOID lpParameter)
uiIDA[0]=IDS_CONFIRM_OK;
// 4J Stu - Fix for #48669 - TU5: Code: Compliance: TCR #15: Incorrect/misleading messages after signing out a profile during online game session.
// If the primary player is signed out, then that is most likely the cause of the disconnection so don't display a message box. This will allow the message box requested by the libraries to be brought up
- if( ProfileManager.IsSignedIn(ProfileManager.GetPrimaryPad())) ui.RequestMessageBox( exitReasonTitleId, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ if( ProfileManager.IsSignedIn(ProfileManager.GetPrimaryPad())) ui.RequestErrorMessage( exitReasonTitleId, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad());
exitReasonStringId = -1;
// 4J - Force a disconnection, this handles the situation that the server has already disconnected
@@ -596,7 +616,7 @@ void IUIScene_PauseMenu::_ExitWorld(LPVOID lpParameter)
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( exitReasonTitleId, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( exitReasonTitleId, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad());
exitReasonStringId = -1;
}
}
@@ -644,7 +664,7 @@ int IUIScene_PauseMenu::SaveGameDialogReturned(void *pParam,int iPad,C4JStorage:
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_ENABLE_AUTOSAVE, IDS_CONFIRM_ENABLE_AUTOSAVE, uiIDA, 2, iPad,&IUIScene_PauseMenu::EnableAutosaveDialogReturned,pParam, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_ENABLE_AUTOSAVE, IDS_CONFIRM_ENABLE_AUTOSAVE, uiIDA, 2, iPad,&IUIScene_PauseMenu::EnableAutosaveDialogReturned,pParam);
#else
// flag a app action of save game
app.SetAction(iPad,eAppAction_SaveGame);
diff --git a/Minecraft.Client/Common/UI/IUIScene_StartGame.cpp b/Minecraft.Client/Common/UI/IUIScene_StartGame.cpp
index be611778..d3a9e8f0 100644
--- a/Minecraft.Client/Common/UI/IUIScene_StartGame.cpp
+++ b/Minecraft.Client/Common/UI/IUIScene_StartGame.cpp
@@ -239,7 +239,7 @@ void IUIScene_StartGame::UpdateCurrentTexturePack(int iSlot)
// Give the player a warning about the texture pack missing
- ui.RequestMessageBox(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 3, ProfileManager.GetPrimaryPad(),&:TexturePackDialogReturned,this,app.GetStringTable());
+ ui.RequestErrorMessage(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 3, ProfileManager.GetPrimaryPad(),&:TexturePackDialogReturned,this);
// do set the texture pack id, and on the user pressing create world, check they have it
m_MoreOptionsParams.dwTexturePack = ListItem.iData;
@@ -368,7 +368,7 @@ int IUIScene_StartGame::TexturePackDialogReturned(void *pParam,int iPad,C4JStora
{
// 4J-JEV: Fix for XB1: #165863 - XR-074: Compliance: With no active network connection user is unable to convert from Trial to Full texture pack and is not messaged why.
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad);
}
}
}
diff --git a/Minecraft.Client/Common/UI/IUIScene_TradingMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_TradingMenu.cpp
index 658bcdfb..8cc04940 100644
--- a/Minecraft.Client/Common/UI/IUIScene_TradingMenu.cpp
+++ b/Minecraft.Client/Common/UI/IUIScene_TradingMenu.cpp
@@ -1,6 +1,7 @@
#include "stdafx.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.item.trading.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"
#include "..\..\..\Minecraft.World\net.minecraft.network.packet.h"
#include "..\..\Minecraft.h"
#include "..\..\MultiPlayerLocalPlayer.h"
@@ -77,6 +78,9 @@ bool IUIScene_TradingMenu::handleKeyDown(int iPad, int iAction, bool bRepeat)
int buyBMatches = player->inventory->countMatches(buyBItem);
if( (buyAItem != NULL && buyAMatches >= buyAItem->count) && (buyBItem == NULL || buyBMatches >= buyBItem->count) )
{
+ // 4J-JEV: Fix for PS4 #7111: [PATCH 1.12] Trading Librarian villagers for multiple ‘Enchanted Books’ will cause the title to crash.
+ int actualShopItem = m_activeOffers.at(selectedShopItem).second;
+
m_merchant->notifyTrade(activeRecipe);
// Remove the items we are purchasing with
@@ -91,7 +95,6 @@ bool IUIScene_TradingMenu::handleKeyDown(int iPad, int iAction, bool bRepeat)
}
// Send a packet to the server
- int actualShopItem = m_activeOffers.at(selectedShopItem).second;
player->connection->send( shared_ptr<TradeItemPacket>( new TradeItemPacket(m_menu->containerId, actualShopItem) ) );
updateDisplay();
@@ -238,15 +241,14 @@ void IUIScene_TradingMenu::updateDisplay()
// 4J-PB - need to get the villager type here
wsTemp = app.GetString(IDS_VILLAGER_OFFERS_ITEM);
- wsTemp = replaceAll(wsTemp,L"{*VILLAGER_TYPE*}",app.GetString(m_merchant->getDisplayName()));
+ wsTemp = replaceAll(wsTemp,L"{*VILLAGER_TYPE*}",m_merchant->getDisplayName());
int iPos=wsTemp.find(L"%s");
wsTemp.replace(iPos,2,activeRecipe->getSellItem()->getHoverName());
setTitle(wsTemp.c_str());
- vector<wstring> unformattedStrings;
- wstring offerDescription = GetItemDescription(activeRecipe->getSellItem(), unformattedStrings);
- setOfferDescription(offerDescription, unformattedStrings);
+ vector<HtmlString> *offerDescription = GetItemDescription(activeRecipe->getSellItem());
+ setOfferDescription(offerDescription);
shared_ptr<ItemInstance> buyAItem = activeRecipe->getBuyAItem();
shared_ptr<ItemInstance> buyBItem = activeRecipe->getBuyBItem();
@@ -299,13 +301,15 @@ void IUIScene_TradingMenu::updateDisplay()
}
else
{
- setTitle(app.GetString(m_merchant->getDisplayName()));
+ setTitle(m_merchant->getDisplayName());
setRequest1Name(L"");
setRequest2Name(L"");
setRequest1RedBox(false);
setRequest2RedBox(false);
setRequest1Item(nullptr);
- setRequest2Item(nullptr);
+ setRequest2Item(nullptr);
+ vector<HtmlString> offerDescription;
+ setOfferDescription(&offerDescription);
}
m_bHasUpdatedOnce = true;
@@ -361,27 +365,20 @@ void IUIScene_TradingMenu::setTradeItem(int index, shared_ptr<ItemInstance> item
{
}
-wstring IUIScene_TradingMenu::GetItemDescription(shared_ptr<ItemInstance> item, vector<wstring> &unformattedStrings)
+vector<HtmlString> *IUIScene_TradingMenu::GetItemDescription(shared_ptr<ItemInstance> item)
{
- if(item == NULL) return L"";
+ vector<HtmlString> *lines = item->getHoverText(nullptr, false);
- wstring desc = L"";
- vector<wstring> *strings = item->getHoverTextOnly(nullptr, false, unformattedStrings);
- bool firstLine = true;
- for(AUTO_VAR(it, strings->begin()); it != strings->end(); ++it)
+ // Add rarity to first line
+ if (lines->size() > 0)
{
- wstring thisString = *it;
- if(!firstLine)
- {
- desc.append( L"<br />" );
- }
- else
- {
- firstLine = false;
- }
- desc.append( thisString );
+ lines->at(0).color = item->getRarity()->color;
}
- strings->clear();
- delete strings;
- return desc;
+
+ return lines;
}
+
+void IUIScene_TradingMenu::HandleInventoryUpdated()
+{
+ updateDisplay();
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/IUIScene_TradingMenu.h b/Minecraft.Client/Common/UI/IUIScene_TradingMenu.h
index c8edda67..726f13c7 100644
--- a/Minecraft.Client/Common/UI/IUIScene_TradingMenu.h
+++ b/Minecraft.Client/Common/UI/IUIScene_TradingMenu.h
@@ -40,16 +40,19 @@ protected:
virtual void setRequest2RedBox(bool show) = 0;
virtual void setTradeRedBox(int index, bool show) = 0;
- virtual void setOfferDescription(const wstring &name, vector<wstring> &unformattedStrings) = 0;
+ virtual void setOfferDescription(vector<HtmlString> *description) = 0;
virtual void setRequest1Item(shared_ptr<ItemInstance> item);
virtual void setRequest2Item(shared_ptr<ItemInstance> item);
virtual void setTradeItem(int index, shared_ptr<ItemInstance> item);
-private:
void updateDisplay();
+ void HandleInventoryUpdated();
+
+private:
bool canMake(MerchantRecipe *recipe);
- wstring GetItemDescription(shared_ptr<ItemInstance> item, vector<wstring> &unformattedStrings);
+
+ vector<HtmlString> *GetItemDescription(shared_ptr<ItemInstance> item);
public:
shared_ptr<Merchant> getMerchant();
diff --git a/Minecraft.Client/Common/UI/UI.h b/Minecraft.Client/Common/UI/UI.h
index 622ccf84..428b3b90 100644
--- a/Minecraft.Client/Common/UI/UI.h
+++ b/Minecraft.Client/Common/UI/UI.h
@@ -31,10 +31,12 @@
#include "UIControl_HTMLLabel.h"
#include "UIControl_DynamicLabel.h"
#include "UIControl_MinecraftPlayer.h"
+#include "UIControl_MinecraftHorse.h"
#include "UIControl_PlayerSkinPreview.h"
#include "UIControl_EnchantmentButton.h"
#include "UIControl_EnchantmentBook.h"
#include "UIControl_SpaceIndicatorBar.h"
+#include "UIControl_BeaconEffectButton.h"
#ifdef __PSVITA__
#include "UIControl_Touch.h"
@@ -85,6 +87,7 @@
#include "UIScene_SettingsUIMenu.h"
#include "UIScene_SkinSelectMenu.h"
#include "UIScene_HowToPlayMenu.h"
+#include "UIScene_LanguageSelector.h"
#include "UIScene_HowToPlay.h"
#include "UIScene_ControlsMenu.h"
#include "UIScene_Credits.h"
@@ -101,6 +104,10 @@
#include "UIScene_CreativeMenu.h"
#include "UIScene_TradingMenu.h"
#include "UIScene_AnvilMenu.h"
+#include "UIScene_HorseInventoryMenu.h"
+#include "UIScene_HopperMenu.h"
+#include "UIScene_BeaconMenu.h"
+#include "UIScene_FireworksMenu.h"
#include "UIScene_CraftingMenu.h"
#include "UIScene_SignEntryMenu.h"
@@ -116,3 +123,4 @@
#include "UIScene_TeleportMenu.h"
#include "UIScene_EndPoem.h"
#include "UIScene_EULA.h"
+#include "UIScene_NewUpdateMessage.h" \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIBitmapFont.cpp b/Minecraft.Client/Common/UI/UIBitmapFont.cpp
index ec49eea3..afc2b139 100644
--- a/Minecraft.Client/Common/UI/UIBitmapFont.cpp
+++ b/Minecraft.Client/Common/UI/UIBitmapFont.cpp
@@ -39,16 +39,16 @@ UIAbstractBitmapFont::UIAbstractBitmapFont(const string &fontname)
void UIAbstractBitmapFont::registerFont()
{
- if(m_registered)
+ if (!m_registered)
{
- return;
+ // 4J-JEV: These only need registering the once when we first use this font in Iggy.
+ m_bitmapFontProvider->num_glyphs = m_numGlyphs;
+ IggyFontInstallBitmapUTF8( m_bitmapFontProvider, m_fontname.c_str(), -1, IGGY_FONTFLAG_none );
+ m_registered = true;
}
- m_bitmapFontProvider->num_glyphs = m_numGlyphs;
-
- IggyFontInstallBitmapUTF8( m_bitmapFontProvider,m_fontname.c_str(),-1,IGGY_FONTFLAG_none );
- IggyFontSetIndirectUTF8( m_fontname.c_str(),-1 ,IGGY_FONTFLAG_all ,m_fontname.c_str() ,-1 ,IGGY_FONTFLAG_none );
- m_registered = true;
+ // 4J-JEV: Reset the font redirect to these fonts (we must do this everytime in-case we switched away elsewhere).
+ IggyFontSetIndirectUTF8( m_fontname.c_str(), -1, IGGY_FONTFLAG_all, m_fontname.c_str(), -1, IGGY_FONTFLAG_none );
}
IggyFontMetrics * RADLINK UIAbstractBitmapFont::GetFontMetrics_Callback(void *user_context,IggyFontMetrics *metrics)
@@ -357,7 +357,7 @@ rrbool UIBitmapFont::GetGlyphBitmap(S32 glyph,F32 pixel_scale,IggyBitmapCharacte
}
//Callback function type for freeing a bitmap shape returned by GetGlyphBitmap
-void RADLINK UIBitmapFont::FreeGlyphBitmap(S32 glyph,F32 pixel_scale,IggyBitmapCharacter *bitmap)
+void UIBitmapFont::FreeGlyphBitmap(S32 glyph,F32 pixel_scale,IggyBitmapCharacter *bitmap)
{
// We don't need to free anything,it just comes from the archive.
//app.DebugPrintf("Free bitmap for glyph %d at scale %f\n",glyph,pixel_scale);
diff --git a/Minecraft.Client/Common/UI/UIComponent_Panorama.cpp b/Minecraft.Client/Common/UI/UIComponent_Panorama.cpp
index a418fcda..cb6443a1 100644
--- a/Minecraft.Client/Common/UI/UIComponent_Panorama.cpp
+++ b/Minecraft.Client/Common/UI/UIComponent_Panorama.cpp
@@ -51,7 +51,7 @@ void UIComponent_Panorama::tick()
// are we in the Nether? - Leave the time as 0 if we are, so we show daylight
if(pMinecraft->level->dimension->id==0)
{
- i64TimeOfDay = pMinecraft->level->getLevelData()->getTime() % 24000;
+ i64TimeOfDay = pMinecraft->level->getLevelData()->getGameTime() % 24000;
}
if(i64TimeOfDay>14000)
diff --git a/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp b/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp
index 2feb94c1..9af43df4 100644
--- a/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp
+++ b/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp
@@ -21,18 +21,15 @@ UIComponent_PressStartToPlay::UIComponent_PressStartToPlay(int iPad, void *initD
m_labelTrialTimer.init(L"");
m_labelTrialTimer.setVisible(false);
+ // 4J-JEV: This object is persistent, so this string needs to be able to handle language changes.
#ifdef __ORBIS__
- wstring text = app.GetString(IDS_PRESS_X_TO_JOIN);
- text = replaceAll(text, L"{*CONTROLLER_VK_A*}", app.GetVKReplacement(VK_PAD_A) );
-
- m_labelPressStart.init(text.c_str());
+ m_labelPressStart.init( (UIString) [] { return replaceAll(app.GetString(IDS_PRESS_X_TO_JOIN), L"{*CONTROLLER_VK_A*}", app.GetVKReplacement(VK_PAD_A) ); });
#elif defined _XBOX_ONE
- wstring text = app.GetString(IDS_PRESS_START_TO_JOIN);
- text = replaceAll(text, L"{*CONTROLLER_VK_START*}", app.GetVKReplacement(VK_PAD_START) );
- m_labelPressStart.init(text.c_str());
+ m_labelPressStart.init( (UIString) [] { return replaceAll(app.GetString(IDS_PRESS_START_TO_JOIN), L"{*CONTROLLER_VK_START*}", app.GetVKReplacement(VK_PAD_START) ); });
#else
- m_labelPressStart.init(app.GetString(IDS_PRESS_START_TO_JOIN));
+ m_labelPressStart.init(IDS_PRESS_START_TO_JOIN);
#endif
+
m_controlSaveIcon.setVisible(false);
m_controlPressStartPanel.setVisible(false);
m_playerDisplayName.setVisible(false);
diff --git a/Minecraft.Client/Common/UI/UIComponent_Tooltips.cpp b/Minecraft.Client/Common/UI/UIComponent_Tooltips.cpp
index 63eba1a5..255740c9 100644
--- a/Minecraft.Client/Common/UI/UIComponent_Tooltips.cpp
+++ b/Minecraft.Client/Common/UI/UIComponent_Tooltips.cpp
@@ -177,6 +177,18 @@ void UIComponent_Tooltips::tick()
fVal=0.01f*(float)ucAlpha;
}
setOpacity(fVal);
+
+ bool layoutChanges = false;
+ for (int i = 0; i < eToolTipNumButtons; i++)
+ {
+ if ( !ui.IsReloadingSkin() && m_tooltipValues[i].show && m_tooltipValues[i].label.needsUpdating() )
+ {
+ layoutChanges = true;
+ _SetTooltip(i, m_tooltipValues[i].label, m_tooltipValues[i].show, true);
+ m_tooltipValues[i].label.setUpdated();
+ }
+ }
+ if (layoutChanges) _Relayout();
}
void UIComponent_Tooltips::render(S32 width, S32 height, C4JRender::eViewportType viewport)
@@ -272,7 +284,7 @@ void UIComponent_Tooltips::ShowTooltip( unsigned int tooltip, bool show )
}
}
-void UIComponent_Tooltips::SetTooltips( int iA, int iB, int iX, int iY , int iLT, int iRT, int iLB, int iRB, int iLS, bool forceUpdate)
+void UIComponent_Tooltips::SetTooltips( int iA, int iB, int iX, int iY , int iLT, int iRT, int iLB, int iRB, int iLS, int iRS, int iBack, bool forceUpdate)
{
bool needsRelayout = false;
needsRelayout = _SetTooltip( eToolTipButtonA, iA ) || needsRelayout;
@@ -284,8 +296,10 @@ void UIComponent_Tooltips::SetTooltips( int iA, int iB, int iX, int iY , int iLT
needsRelayout = _SetTooltip( eToolTipButtonLB, iLB ) || needsRelayout;
needsRelayout = _SetTooltip( eToolTipButtonRB, iRB ) || needsRelayout;
needsRelayout = _SetTooltip( eToolTipButtonLS, iLS ) || needsRelayout;
-
- if(needsRelayout)_Relayout();
+ needsRelayout = _SetTooltip( eToolTipButtonRS, iRS ) || needsRelayout;
+ needsRelayout = _SetTooltip( eToolTipButtonRS, iRS ) || needsRelayout;
+ needsRelayout = _SetTooltip( eToolTipButtonBack, iBack ) || needsRelayout;
+ if (needsRelayout) _Relayout();
}
void UIComponent_Tooltips::EnableTooltip( unsigned int tooltip, bool enable )
@@ -299,20 +313,21 @@ bool UIComponent_Tooltips::_SetTooltip(unsigned int iToolTip, int iTextID)
{
m_tooltipValues[iToolTip].iString = iTextID;
changed = true;
- if(iTextID > -1) _SetTooltip(iToolTip, app.GetString(iTextID), true);
- else if(iTextID == -2) _SetTooltip(iToolTip, L"", true);
- else _SetTooltip(iToolTip, L"", false);
+ if(iTextID > -1) _SetTooltip(iToolTip, iTextID, true);
+ else if(iTextID == -2) _SetTooltip(iToolTip, L"", true);
+ else _SetTooltip(iToolTip, L"", false);
}
return changed;
}
-void UIComponent_Tooltips::_SetTooltip(unsigned int iToolTipId, const wstring &label, bool show, bool force)
+void UIComponent_Tooltips::_SetTooltip(unsigned int iToolTipId, UIString label, bool show, bool force)
{
if(!force && !show && !m_tooltipValues[iToolTipId].show)
{
return;
}
m_tooltipValues[iToolTipId].show = show;
+ m_tooltipValues[iToolTipId].label = label;
IggyDataValue result;
IggyDataValue value[3];
@@ -330,7 +345,7 @@ void UIComponent_Tooltips::_SetTooltip(unsigned int iToolTipId, const wstring &l
value[2].boolval = show;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetTooltip , 3 , value );
- app.DebugPrintf("Actual tooltip update!\n");
+ //app.DebugPrintf("Actual tooltip update!\n");
}
void UIComponent_Tooltips::_Relayout()
@@ -350,6 +365,10 @@ void UIComponent_Tooltips::handleTouchInput(unsigned int iPad, S32 x, S32 y, int
//app.DebugPrintf("ToolTip Touch ID = %i\n", iId);
bool handled = false;
+ // 4J - TomK no tooltips no touch!
+ if((!ui.GetMenuDisplayed(ProfileManager.GetPrimaryPad())) && (app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_Tooltips) == 0))
+ return;
+
// perform action on release
if(bReleased)
{
@@ -357,11 +376,17 @@ void UIComponent_Tooltips::handleTouchInput(unsigned int iPad, S32 x, S32 y, int
{
case ETouchInput_Touch_A:
app.DebugPrintf("ToolTip Map Touch to _PSV_JOY_BUTTON_X\n", iId);
- InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_X);
+ if(InputManager.IsCircleCrossSwapped())
+ InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_O);
+ else
+ InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_X);
break;
case ETouchInput_Touch_B:
app.DebugPrintf("ToolTip Map Touch to _PSV_JOY_BUTTON_O\n", iId);
- InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_O);
+ if(InputManager.IsCircleCrossSwapped())
+ InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_X);
+ else
+ InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_O);
break;
case ETouchInput_Touch_X:
app.DebugPrintf("ToolTip Map Touch to _PSV_JOY_BUTTON_SQUARE\n", iId);
@@ -376,8 +401,8 @@ void UIComponent_Tooltips::handleTouchInput(unsigned int iPad, S32 x, S32 y, int
app.DebugPrintf("ToolTip no action\n", iId);
break;
case ETouchInput_Touch_RightTrigger:
- app.DebugPrintf("ToolTip Map Touch to _PSV_JOY_BUTTON_SELECT\n", iId);
- InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_SELECT);
+ app.DebugPrintf("ToolTip no action\n", iId);
+ /* no action */
break;
case ETouchInput_Touch_LeftBumper:
app.DebugPrintf("ToolTip Map Touch to _PSV_JOY_BUTTON_L1\n", iId);
@@ -391,6 +416,14 @@ void UIComponent_Tooltips::handleTouchInput(unsigned int iPad, S32 x, S32 y, int
app.DebugPrintf("ToolTip no action\n", iId);
/* no action */
break;
+ case ETouchInput_Touch_RightStick:
+ app.DebugPrintf("ToolTip Map Touch to _PSV_JOY_BUTTON_DPAD_DOWN\n", iId);
+ InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_DPAD_DOWN);
+ break;
+ case ETouchInput_Touch_Select:
+ app.DebugPrintf("ToolTip Map Touch to _PSV_JOY_BUTTON_SELECT\n", iId);
+ InputManager.MapTouchInput(iPad, _PSV_JOY_BUTTON_SELECT);
+ break;
}
}
}
@@ -413,14 +446,14 @@ void UIComponent_Tooltips::handleReload()
for(unsigned int i = 0; i < eToolTipNumButtons; ++i)
{
- _SetTooltip(i,app.GetString(m_tooltipValues[i].iString), m_tooltipValues[i].show, true);
+ _SetTooltip(i, m_tooltipValues[i].iString, m_tooltipValues[i].show, true);
}
_Relayout();
}
void UIComponent_Tooltips::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
{
- if(m_overrideSFX[iPad][key])
+ if( (0 <= iPad) && (iPad <= 3) && m_overrideSFX[iPad][key] )
{
// don't play a sound for this action
switch(key)
diff --git a/Minecraft.Client/Common/UI/UIComponent_Tooltips.h b/Minecraft.Client/Common/UI/UIComponent_Tooltips.h
index 4b4c8268..f8db9439 100644
--- a/Minecraft.Client/Common/UI/UIComponent_Tooltips.h
+++ b/Minecraft.Client/Common/UI/UIComponent_Tooltips.h
@@ -13,6 +13,8 @@ protected:
bool show;
int iString;
+ UIString label;
+
_TooltipValues()
{
show = false;
@@ -23,7 +25,7 @@ protected:
TooltipValues m_tooltipValues[eToolTipNumButtons];
IggyName m_funcSetTooltip, m_funcSetOpacity, m_funcSetABSwap, m_funcUpdateLayout;
-
+
#ifdef __PSVITA__
enum ETouchInput
{
@@ -36,6 +38,8 @@ protected:
ETouchInput_Touch_LeftBumper,
ETouchInput_Touch_RightBumper,
ETouchInput_Touch_LeftStick,
+ ETouchInput_Touch_RightStick,
+ ETouchInput_Touch_Select,
ETouchInput_Count,
};
@@ -53,6 +57,8 @@ protected:
UI_MAP_ELEMENT( m_TouchController[ETouchInput_Touch_LeftBumper], "Touch_LeftBumper")
UI_MAP_ELEMENT( m_TouchController[ETouchInput_Touch_RightBumper], "Touch_RightBumper")
UI_MAP_ELEMENT( m_TouchController[ETouchInput_Touch_LeftStick], "Touch_LeftStick")
+ UI_MAP_ELEMENT( m_TouchController[ETouchInput_Touch_RightStick], "Touch_RightStick")
+ UI_MAP_ELEMENT( m_TouchController[ETouchInput_Touch_Select], "Touch_Select")
#endif
UI_MAP_NAME( m_funcSetTooltip, L"SetToolTip")
UI_MAP_NAME( m_funcSetOpacity, L"SetOpacity")
@@ -88,7 +94,7 @@ public:
virtual void SetTooltipText( unsigned int tooltip, int iTextID );
virtual void SetEnableTooltips( bool bVal );
virtual void ShowTooltip( unsigned int tooltip, bool show );
- virtual void SetTooltips( 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 SetTooltips( 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, int iRS=-1, int iBack=-1, bool forceUpdate = false);
virtual void EnableTooltip( unsigned int tooltip, bool enable );
virtual void handleReload();
@@ -99,7 +105,7 @@ public:
private:
bool _SetTooltip(unsigned int iToolTip, int iTextID);
- void _SetTooltip(unsigned int iToolTipId, const wstring &label, bool show, bool force = false);
+ void _SetTooltip(unsigned int iToolTipId, UIString label, bool show, bool force = false);
void _Relayout();
bool m_overrideSFX[XUSER_MAX_COUNT][ACTION_MAX_MENU];
diff --git a/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.cpp b/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.cpp
index 858a8b43..3b4eb097 100644
--- a/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.cpp
+++ b/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.cpp
@@ -21,6 +21,7 @@ UIComponent_TutorialPopup::UIComponent_TutorialPopup(int iPad, void *initData, U
m_bContainerMenuVisible = false;
m_bSplitscreenGamertagVisible = false;
+ m_iconType = e_ICON_TYPE_IGGY;
m_labelDescription.init(L"");
}
@@ -63,6 +64,8 @@ void UIComponent_TutorialPopup::handleReload()
value[0].type = IGGY_DATATYPE_boolean;
value[0].boolval = (bool)((app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_DisplaySplitscreenGamertags)!=0) && !m_bContainerMenuVisible); // 4J - TomK - Offset for splitscreen gamertag?
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcAdjustLayout, 1 , value );
+
+ setupIconHolder(m_iconType);
}
void UIComponent_TutorialPopup::SetTutorialDescription(TutorialPopupInfo *info)
@@ -317,7 +320,7 @@ wstring UIComponent_TutorialPopup::_SetIcon(int icon, int iAuxVal, bool isFoil,
}
else if(temp.find(L"{*StoneIcon*}")!=wstring::npos)
{
- m_iconItem = shared_ptr<ItemInstance>(new ItemInstance(Tile::rock_Id,1,0));
+ m_iconItem = shared_ptr<ItemInstance>(new ItemInstance(Tile::stone_Id,1,0));
}
else
{
@@ -428,6 +431,7 @@ void UIComponent_TutorialPopup::UpdateInteractScenePosition(bool visible)
bool bAllowAnim=false;
bool isCraftingScene = (m_interactScene->getSceneType() == eUIScene_Crafting2x2Menu) || (m_interactScene->getSceneType() == eUIScene_Crafting3x3Menu);
bool isCreativeScene = (m_interactScene->getSceneType() == eUIScene_CreativeMenu);
+ bool isTradingScene = (m_interactScene->getSceneType() == eUIScene_TradingMenu);
switch(Minecraft::GetInstance()->localplayers[m_iPad]->m_iScreenSection)
{
case C4JRender::VIEWPORT_TYPE_FULLSCREEN:
@@ -437,7 +441,7 @@ void UIComponent_TutorialPopup::UpdateInteractScenePosition(bool visible)
break;
default:
// anim allowed for everything except the crafting 2x2 and 3x3, and the creative menu
- if(!isCraftingScene && !isCreativeScene)
+ if(!isCraftingScene && !isCreativeScene && !isTradingScene)
{
bAllowAnim=true;
}
@@ -536,4 +540,6 @@ void UIComponent_TutorialPopup::setupIconHolder(EIcons icon)
value[0].type = IGGY_DATATYPE_number;
value[0].number = (F64)icon;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetupIconHolder , 1 , value );
+
+ m_iconType = icon;
}
diff --git a/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.h b/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.h
index 36f78300..4e5f4285 100644
--- a/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.h
+++ b/Minecraft.Client/Common/UI/UIComponent_TutorialPopup.h
@@ -39,6 +39,8 @@ private:
e_ICON_TYPE_TRANSPORT = 11,
};
+ EIcons m_iconType;
+
public:
UIComponent_TutorialPopup(int iPad, void *initData, UILayer *parentLayer);
diff --git a/Minecraft.Client/Common/UI/UIControl.h b/Minecraft.Client/Common/UI/UIControl.h
index 3b4ef050..e37f04de 100644
--- a/Minecraft.Client/Common/UI/UIControl.h
+++ b/Minecraft.Client/Common/UI/UIControl.h
@@ -20,6 +20,7 @@ public:
eLabel,
eLeaderboardList,
eMinecraftPlayer,
+ eMinecraftHorse,
ePlayerList,
ePlayerSkinPreview,
eProgress,
diff --git a/Minecraft.Client/Common/UI/UIControl_Base.cpp b/Minecraft.Client/Common/UI/UIControl_Base.cpp
index 18af2f63..7a4a24e5 100644
--- a/Minecraft.Client/Common/UI/UIControl_Base.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_Base.cpp
@@ -7,7 +7,7 @@
UIControl_Base::UIControl_Base()
{
m_bLabelChanged = false;
- m_label = L"";
+ m_label;
m_id = 0;
}
@@ -27,7 +27,7 @@ void UIControl_Base::tick()
{
UIControl::tick();
- if(m_bLabelChanged)
+ if ( m_label.needsUpdating() || m_bLabelChanged )
{
//app.DebugPrintf("Calling SetLabel - '%ls'\n", m_label.c_str());
m_bLabelChanged = false;
@@ -37,15 +37,17 @@ void UIControl_Base::tick()
value[0].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
- stringVal.string = (IggyUTF16*)m_label.c_str();
+ stringVal.string = (IggyUTF16*) m_label.c_str();
stringVal.length = m_label.length();
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_setLabelFunc , 1 , value );
+
+ m_label.setUpdated();
}
}
-void UIControl_Base::setLabel(const wstring &label, bool instant, bool force)
+void UIControl_Base::setLabel(UIString label, bool instant, bool force)
{
if( force || ((!m_label.empty() || !label.empty()) && m_label.compare(label) != 0) ) m_bLabelChanged = true;
m_label = label;
@@ -67,20 +69,14 @@ void UIControl_Base::setLabel(const wstring &label, bool instant, bool force)
}
}
-void UIControl_Base::setLabel(const string &label)
-{
- wstring wlabel = convStringToWstring(label);
- setLabel(wlabel);
-}
-
const wchar_t* UIControl_Base::getLabel()
{
IggyDataValue result;
- IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_funcGetLabel , 0 , NULL );
+ IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcGetLabel, 0, NULL);
if(result.type == IGGY_DATATYPE_string_UTF16)
{
- m_label = wstring( (wchar_t *)result.string16.string, result.string16.length);
+ m_label = wstring((wchar_t *)result.string16.string, result.string16.length);
}
return m_label.c_str();
diff --git a/Minecraft.Client/Common/UI/UIControl_Base.h b/Minecraft.Client/Common/UI/UIControl_Base.h
index e70997c3..73ecac5a 100644
--- a/Minecraft.Client/Common/UI/UIControl_Base.h
+++ b/Minecraft.Client/Common/UI/UIControl_Base.h
@@ -1,6 +1,7 @@
#pragma once
#include "UIControl.h"
+#include "UIString.h"
// This class maps to the FJ_Base class in actionscript
class UIControl_Base : public UIControl
@@ -12,7 +13,8 @@ protected:
IggyName m_funcCheckLabelWidths;
bool m_bLabelChanged;
- wstring m_label;
+ UIString m_label;
+
public:
UIControl_Base();
@@ -20,8 +22,9 @@ public:
virtual void tick();
- virtual void setLabel(const wstring &label, bool instant = false, bool force = false);
- virtual void setLabel(const string &label);
+ virtual void setLabel(UIString label, bool instant = false, bool force = false);
+ //virtual void setLabel(wstring label, bool instant = false, bool force = false) { this->setLabel(UIString::CONSTANT(label), instant, force); }
+
const wchar_t* getLabel();
virtual void setAllPossibleLabels(int labelCount, wchar_t labels[][256]);
int getId() { return m_id; }
diff --git a/Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.cpp b/Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.cpp
new file mode 100644
index 00000000..7ee79307
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.cpp
@@ -0,0 +1,121 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "UIControl_BeaconEffectButton.h"
+
+UIControl_BeaconEffectButton::UIControl_BeaconEffectButton()
+{
+ m_data = 0;
+ m_icon = 0;
+ m_selected = false;
+ m_active = false;
+ m_focus = false;
+}
+
+bool UIControl_BeaconEffectButton::setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName)
+{
+ bool success = UIControl::setupControl(scene,parent,controlName);
+
+ m_funcChangeState = registerFastName(L"ChangeState");
+ m_funcSetIcon = registerFastName(L"SetIcon");
+
+ return success;
+}
+
+void UIControl_BeaconEffectButton::SetData(int data, int icon, bool active, bool selected)
+{
+ m_data = data;
+ m_active = active;
+ m_selected = selected;
+
+ SetIcon(icon);
+ UpdateButtonState();
+}
+
+int UIControl_BeaconEffectButton::GetData()
+{
+ return m_data;
+}
+
+void UIControl_BeaconEffectButton::SetButtonSelected(bool selected)
+{
+ if(selected != m_selected)
+ {
+ m_selected = selected;
+
+ UpdateButtonState();
+ }
+}
+
+bool UIControl_BeaconEffectButton::IsButtonSelected()
+{
+ return m_selected;
+}
+
+void UIControl_BeaconEffectButton::SetButtonActive(bool active)
+{
+ if(m_active != active)
+ {
+ m_active = active;
+
+ UpdateButtonState();
+ }
+}
+
+void UIControl_BeaconEffectButton::setFocus(bool focus)
+{
+ if(m_focus != focus)
+ {
+ m_focus = focus;
+
+ UpdateButtonState();
+ }
+}
+
+void UIControl_BeaconEffectButton::SetIcon(int icon)
+{
+ if(icon != m_icon)
+ {
+ m_icon = icon;
+
+ IggyDataValue result;
+ IggyDataValue value[1];
+
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = m_icon;
+ IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_funcSetIcon , 1 , value );
+ }
+}
+
+void UIControl_BeaconEffectButton::UpdateButtonState()
+{
+ EState state = eState_Disabled;
+
+ if(!m_active)
+ {
+ state = eState_Disabled;
+ }
+ else if(m_selected)
+ {
+ state = eState_Pressed;
+ }
+ else if(m_focus)
+ {
+ state = eState_Enabled_Selected;
+ }
+ else
+ {
+ state = eState_Enabled_Unselected;
+ }
+
+ if(state != m_lastState)
+ {
+ IggyDataValue result;
+ IggyDataValue value[1];
+
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = state;
+ IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_funcChangeState , 1 , value );
+
+ if(out == IGGY_RESULT_SUCCESS) m_lastState = state;
+ }
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.h b/Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.h
new file mode 100644
index 00000000..788213da
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIControl_BeaconEffectButton.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "UIControl.h"
+
+class UIControl_BeaconEffectButton : public UIControl
+{
+private:
+ static const int BUTTON_DISABLED = 0;
+ static const int BUTTON_ENABLED_UNSELECTED = 1;
+ static const int BUTTON_ENABLED_SELECTED = 2;
+ static const int BUTTON_PRESSED = 3;
+
+ enum EState
+ {
+ eState_Disabled,
+ eState_Enabled_Unselected,
+ eState_Enabled_Selected,
+ eState_Pressed
+ };
+ EState m_lastState;
+
+ int m_data;
+ int m_icon;
+ bool m_selected;
+ bool m_active;
+ bool m_focus;
+
+ IggyName m_funcChangeState, m_funcSetIcon;
+
+public:
+ UIControl_BeaconEffectButton();
+
+ virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
+
+ void SetData(int data, int icon, bool active, bool selected);
+ int GetData();
+
+ void SetButtonSelected(bool selected);
+ bool IsButtonSelected();
+
+ void SetButtonActive(bool active);
+
+ virtual void setFocus(bool focus);
+
+ void SetIcon(int icon);
+
+private:
+ void UpdateButtonState();
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIControl_Button.cpp b/Minecraft.Client/Common/UI/UIControl_Button.cpp
index 96ddb8eb..70adb6b1 100644
--- a/Minecraft.Client/Common/UI/UIControl_Button.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_Button.cpp
@@ -17,7 +17,7 @@ bool UIControl_Button::setupControl(UIScene *scene, IggyValuePath *parent, const
return success;
}
-void UIControl_Button::init(const wstring &label, int id)
+void UIControl_Button::init(UIString label, int id)
{
m_label = label;
m_id = id;
diff --git a/Minecraft.Client/Common/UI/UIControl_Button.h b/Minecraft.Client/Common/UI/UIControl_Button.h
index 367a48d7..7369e8a0 100644
--- a/Minecraft.Client/Common/UI/UIControl_Button.h
+++ b/Minecraft.Client/Common/UI/UIControl_Button.h
@@ -12,7 +12,9 @@ public:
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
- void init(const wstring &label, int id);
+ void init(UIString label, int id);
+ //void init(const wstring &label, int id) { init(UIString::CONSTANT(label), id); }
+
virtual void ReInit();
void setEnable(bool enable);
diff --git a/Minecraft.Client/Common/UI/UIControl_ButtonList.cpp b/Minecraft.Client/Common/UI/UIControl_ButtonList.cpp
index 32db4843..68a3d655 100644
--- a/Minecraft.Client/Common/UI/UIControl_ButtonList.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_ButtonList.cpp
@@ -195,3 +195,47 @@ bool UIControl_ButtonList::CanTouchTrigger(S32 iX, S32 iY)
return bCanTouchTrigger;
}
#endif
+
+
+void UIControl_DynamicButtonList::tick()
+{
+ UIControl_ButtonList::tick();
+
+ int buttonIndex = 0;
+ vector<UIString>::iterator itr;
+ for (itr = m_labels.begin(); itr != m_labels.end(); itr++)
+ {
+ if ( itr->needsUpdating() )
+ {
+ setButtonLabel(buttonIndex, itr->getString());
+ itr->setUpdated();
+ }
+ buttonIndex++;
+ }
+}
+
+void UIControl_DynamicButtonList::addItem(UIString label, int data)
+{
+ if (data < 0) data = m_itemCount;
+
+ if (data < m_labels.size())
+ {
+ m_labels[data] = label;
+ }
+ else
+ {
+ while (data > m_labels.size())
+ {
+ m_labels.push_back(UIString());
+ }
+ m_labels.push_back(label);
+ }
+
+ UIControl_ButtonList::addItem(label.getString(), data);
+}
+
+void UIControl_DynamicButtonList::removeItem(int index)
+{
+ m_labels.erase( m_labels.begin() + index );
+ UIControl_ButtonList::removeItem(index);
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIControl_ButtonList.h b/Minecraft.Client/Common/UI/UIControl_ButtonList.h
index a3c5da3a..44484ac3 100644
--- a/Minecraft.Client/Common/UI/UIControl_ButtonList.h
+++ b/Minecraft.Client/Common/UI/UIControl_ButtonList.h
@@ -41,4 +41,18 @@ public:
void SetTouchFocus(S32 iX, S32 iY, bool bRepeat);
bool CanTouchTrigger(S32 iX, S32 iY);
#endif
+
};
+
+class UIControl_DynamicButtonList : public UIControl_ButtonList
+{
+protected:
+ vector<UIString> m_labels;
+
+public:
+ virtual void tick();
+
+ virtual void addItem(UIString label, int data = -1);
+
+ virtual void removeItem(int index);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIControl_CheckBox.cpp b/Minecraft.Client/Common/UI/UIControl_CheckBox.cpp
index d3bdf758..1c3e8afe 100644
--- a/Minecraft.Client/Common/UI/UIControl_CheckBox.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_CheckBox.cpp
@@ -21,7 +21,7 @@ bool UIControl_CheckBox::setupControl(UIScene *scene, IggyValuePath *parent, con
return success;
}
-void UIControl_CheckBox::init(const wstring &label, int id, bool checked)
+void UIControl_CheckBox::init(UIString label, int id, bool checked)
{
m_label = label;
m_id = id;
diff --git a/Minecraft.Client/Common/UI/UIControl_CheckBox.h b/Minecraft.Client/Common/UI/UIControl_CheckBox.h
index 924e9c68..f8c0284b 100644
--- a/Minecraft.Client/Common/UI/UIControl_CheckBox.h
+++ b/Minecraft.Client/Common/UI/UIControl_CheckBox.h
@@ -14,7 +14,7 @@ public:
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
- void init(const wstring &label, int id, bool checked);
+ void init(UIString label, int id, bool checked);
bool IsChecked();
bool IsEnabled();
diff --git a/Minecraft.Client/Common/UI/UIControl_EnchantmentBook.cpp b/Minecraft.Client/Common/UI/UIControl_EnchantmentBook.cpp
index ef7c0e94..9664dbf4 100644
--- a/Minecraft.Client/Common/UI/UIControl_EnchantmentBook.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_EnchantmentBook.cpp
@@ -34,9 +34,7 @@ void UIControl_EnchantmentBook::render(IggyCustomDrawCallbackRegion *region)
glTranslatef(m_width/2, m_height/2, 50.0f);
// Add a uniform scale
- glScalef(1/ssX, 1/ssX, 1.0f);
-
- glScalef(50.0f,50.0f,1.0f);
+ glScalef(-57/ssX, 57/ssX, 360.0f);
glRotatef(45 + 90, 0, 1, 0);
Lighting::turnOn();
diff --git a/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.cpp b/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.cpp
index e1490e0b..37f8fcf6 100644
--- a/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.cpp
@@ -35,6 +35,18 @@ void UIControl_EnchantmentButton::init(int index)
m_index = index;
}
+
+void UIControl_EnchantmentButton::ReInit()
+{
+ UIControl_Button::ReInit();
+
+
+ m_lastState = eState_Inactive;
+ m_lastCost = 0;
+ m_bHasFocus = false;
+ updateState();
+}
+
void UIControl_EnchantmentButton::tick()
{
updateState();
diff --git a/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.h b/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.h
index 9b8a3c8f..f7a703b3 100644
--- a/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.h
+++ b/Minecraft.Client/Common/UI/UIControl_EnchantmentButton.h
@@ -46,7 +46,7 @@ public:
virtual void tick();
void init(int index);
-
+ virtual void ReInit();
void render(IggyCustomDrawCallbackRegion *region);
void updateState();
diff --git a/Minecraft.Client/Common/UI/UIControl_Label.cpp b/Minecraft.Client/Common/UI/UIControl_Label.cpp
index 1481fea1..47374d21 100644
--- a/Minecraft.Client/Common/UI/UIControl_Label.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_Label.cpp
@@ -5,6 +5,7 @@
UIControl_Label::UIControl_Label()
{
+ m_reinitEnabled = true;
}
bool UIControl_Label::setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName)
@@ -17,7 +18,7 @@ bool UIControl_Label::setupControl(UIScene *scene, IggyValuePath *parent, const
return success;
}
-void UIControl_Label::init(const wstring &label)
+void UIControl_Label::init(UIString label)
{
m_label = label;
@@ -32,22 +33,13 @@ void UIControl_Label::init(const wstring &label)
IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_initFunc , 1 , value );
}
-void UIControl_Label::init(const string &label)
-{
- m_label = convStringToWstring(label);
- IggyDataValue result;
- IggyDataValue value[1];
- value[0].type = IGGY_DATATYPE_string_UTF8;
- IggyStringUTF8 stringVal;
-
- stringVal.string = (char *)label.c_str();
- stringVal.length = label.length();
- value[0].string8 = stringVal;
- IggyResult out = IggyPlayerCallMethodRS ( m_parentScene->getMovie() , &result, getIggyValuePath() , m_initFunc , 1 , value );
-}
-
void UIControl_Label::ReInit()
{
UIControl_Base::ReInit();
- init(m_label);
+
+ // 4J-JEV: This can't be reinitialised.
+ if (m_reinitEnabled)
+ {
+ init(m_label);
+ }
}
diff --git a/Minecraft.Client/Common/UI/UIControl_Label.h b/Minecraft.Client/Common/UI/UIControl_Label.h
index aa0f3f14..21eb35a6 100644
--- a/Minecraft.Client/Common/UI/UIControl_Label.h
+++ b/Minecraft.Client/Common/UI/UIControl_Label.h
@@ -4,12 +4,16 @@
class UIControl_Label : public UIControl_Base
{
+private:
+ bool m_reinitEnabled;
+
public:
UIControl_Label();
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
- void init(const wstring &label);
- void init(const string &label);
+ void init(UIString label);
virtual void ReInit();
+
+ void disableReinitialisation() { m_reinitEnabled = false; }
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIControl_MinecraftHorse.cpp b/Minecraft.Client/Common/UI/UIControl_MinecraftHorse.cpp
new file mode 100644
index 00000000..457e2028
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIControl_MinecraftHorse.cpp
@@ -0,0 +1,103 @@
+#include "stdafx.h"
+#include "..\..\Minecraft.h"
+#include "..\..\ScreenSizeCalculator.h"
+#include "..\..\EntityRenderDispatcher.h"
+
+#include "..\..\PlayerRenderer.h"
+#include "..\..\HorseRenderer.h"
+
+#include "..\..\HumanoidModel.h"
+#include "..\..\ModelHorse.h"
+
+#include "..\..\Lighting.h"
+#include "..\..\ModelPart.h"
+#include "..\..\Options.h"
+
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.player.h"
+//#include "..\..\..\Minecraft.World\net.minecraft.world.entity.animal.EntityHorse.h"
+
+#include "..\..\MultiplayerLocalPlayer.h"
+#include "UI.h"
+#include "UIControl_MinecraftHorse.h"
+
+UIControl_MinecraftHorse::UIControl_MinecraftHorse()
+{
+ UIControl::setControlType(UIControl::eMinecraftHorse);
+
+ 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;
+}
+
+void UIControl_MinecraftHorse::render(IggyCustomDrawCallbackRegion *region)
+{
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ glEnable(GL_RESCALE_NORMAL);
+ glEnable(GL_COLOR_MATERIAL);
+ glPushMatrix();
+
+ float width = region->x1 - region->x0;
+ float height = region->y1 - region->y0;
+ float xo = width/2;
+ float yo = height;
+
+ // dynamic y offset according to region height
+ glTranslatef(xo, yo - (height / 7.5f), 50.0f);
+
+ //UIScene_InventoryMenu *containerMenu = (UIScene_InventoryMenu *)m_parentScene;
+ UIScene_HorseInventoryMenu *containerMenu = (UIScene_HorseInventoryMenu *)m_parentScene;
+
+ shared_ptr<LivingEntity> entityHorse = containerMenu->m_horse;
+
+ // Base scale on height of this control
+ // Potentially we might want separate x & y scales here
+ float ss = width / (m_fScreenWidth / m_fScreenHeight) * 0.71f;
+
+ glScalef(-ss, ss, ss);
+ glRotatef(180, 0, 0, 1);
+
+ float oybr = entityHorse->yBodyRot;
+ float oyr = entityHorse->yRot;
+ float oxr = entityHorse->xRot;
+ float oyhr = entityHorse->yHeadRot;
+
+ //float xd = ( matrix._41 + ( (bwidth*matrix._11)/2) ) - m_pointerPos.x;
+ float xd = (m_x + m_width/2) - containerMenu->m_pointerPos.x;
+
+ // Need to base Y on head position, not centre of mass
+ //float yd = ( matrix._42 + ( (bheight*matrix._22) / 2) - 40 ) - m_pointerPos.y;
+ float yd = (m_y + m_height/2 - 40) - containerMenu->m_pointerPos.y;
+
+ glRotatef(45 + 90, 0, 1, 0);
+ Lighting::turnOn();
+ glRotatef(-45 - 90, 0, 1, 0);
+
+ glRotatef(-(float) atan(yd / 40.0f) * 20, 1, 0, 0);
+
+ entityHorse->yBodyRot = (float) atan(xd / 40.0f) * 20;
+ entityHorse->yRot = (float) atan(xd / 40.0f) * 40;
+ entityHorse->xRot = -(float) atan(yd / 40.0f) * 20;
+ entityHorse->yHeadRot = entityHorse->yRot;
+ //entityHorse->glow = 1;
+ glTranslatef(0, entityHorse->heightOffset, 0);
+ EntityRenderDispatcher::instance->playerRotY = 180;
+
+ // 4J Stu - Turning on hideGui while we do this stops the name rendering in split-screen
+ bool wasHidingGui = pMinecraft->options->hideGui;
+ pMinecraft->options->hideGui = true;
+ EntityRenderDispatcher::instance->render(entityHorse, 0, 0, 0, 0, 1, false, false);
+ pMinecraft->options->hideGui = wasHidingGui;
+ //entityHorse->glow = 0;
+
+ entityHorse->yBodyRot = oybr;
+ entityHorse->yRot = oyr;
+ entityHorse->xRot = oxr;
+ entityHorse->yHeadRot = oyhr;
+ glPopMatrix();
+ Lighting::turnOff();
+ glDisable(GL_RESCALE_NORMAL);
+}
diff --git a/Minecraft.Client/Common/UI/UIControl_MinecraftHorse.h b/Minecraft.Client/Common/UI/UIControl_MinecraftHorse.h
new file mode 100644
index 00000000..ec355527
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIControl_MinecraftHorse.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include "UIControl.h"
+
+class UIControl_MinecraftHorse : public UIControl
+{
+private:
+ float m_fScreenWidth,m_fScreenHeight;
+ float m_fRawWidth,m_fRawHeight;
+
+public:
+ UIControl_MinecraftHorse();
+
+ void render(IggyCustomDrawCallbackRegion *region);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIControl_MinecraftPlayer.cpp b/Minecraft.Client/Common/UI/UIControl_MinecraftPlayer.cpp
index 3a18ed53..d0625bce 100644
--- a/Minecraft.Client/Common/UI/UIControl_MinecraftPlayer.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_MinecraftPlayer.cpp
@@ -37,7 +37,8 @@ void UIControl_MinecraftPlayer::render(IggyCustomDrawCallbackRegion *region)
float xo = width/2;
float yo = height;
- glTranslatef(xo, yo - 7.0f, 50.0f);
+ // dynamic y offset according to region height
+ glTranslatef(xo, yo - (height / 9.0f), 50.0f);
float ss;
diff --git a/Minecraft.Client/Common/UI/UIControl_PlayerSkinPreview.cpp b/Minecraft.Client/Common/UI/UIControl_PlayerSkinPreview.cpp
index 544b4da1..2d7c0224 100644
--- a/Minecraft.Client/Common/UI/UIControl_PlayerSkinPreview.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_PlayerSkinPreview.cpp
@@ -217,7 +217,7 @@ void UIControl_PlayerSkinPreview::render(IggyCustomDrawCallbackRegion *region)
pMinecraft->options->hideGui = true;
//EntityRenderDispatcher::instance->render(pMinecraft->localplayers[0], 0, 0, 0, 0, 1);
- EntityRenderer *renderer = EntityRenderDispatcher::instance->getRenderer(eTYPE_PLAYER);
+ EntityRenderer *renderer = EntityRenderDispatcher::instance->getRenderer(eTYPE_LOCALPLAYER);
if (renderer != NULL)
{
// 4J-PB - any additional parts to turn on for this player (skin dependent)
@@ -335,7 +335,12 @@ void UIControl_PlayerSkinPreview::render(EntityRenderer *renderer, double x, dou
float s = 15 / 16.0f;
glScalef(s, s, s);
+ // 4J - TomK - pull up character a bit more to make sure extra geo around feet doesn't cause rendering problems on PSVita
+#ifdef __PSVITA__
+ glTranslatef(0, -24 * _scale - 1.0f / 16.0f, 0);
+#else
glTranslatef(0, -24 * _scale - 0.125f / 16.0f, 0);
+#endif
#ifdef SKIN_PREVIEW_WALKING_ANIM
m_walkAnimSpeedO = m_walkAnimSpeed;
diff --git a/Minecraft.Client/Common/UI/UIControl_Progress.cpp b/Minecraft.Client/Common/UI/UIControl_Progress.cpp
index e2ab817d..78e7c1d0 100644
--- a/Minecraft.Client/Common/UI/UIControl_Progress.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_Progress.cpp
@@ -23,7 +23,7 @@ bool UIControl_Progress::setupControl(UIScene *scene, IggyValuePath *parent, con
return success;
}
-void UIControl_Progress::init(const wstring &label, int id, int min, int max, int current)
+void UIControl_Progress::init(UIString label, int id, int min, int max, int current)
{
m_label = label;
m_id = id;
diff --git a/Minecraft.Client/Common/UI/UIControl_Progress.h b/Minecraft.Client/Common/UI/UIControl_Progress.h
index 8398a188..10601237 100644
--- a/Minecraft.Client/Common/UI/UIControl_Progress.h
+++ b/Minecraft.Client/Common/UI/UIControl_Progress.h
@@ -17,7 +17,7 @@ public:
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
- void init(const wstring &label, int id, int min, int max, int current);
+ void init(UIString label, int id, int min, int max, int current);
virtual void ReInit();
void setProgress(int current);
diff --git a/Minecraft.Client/Common/UI/UIControl_Slider.cpp b/Minecraft.Client/Common/UI/UIControl_Slider.cpp
index bd3b1ada..c2168002 100644
--- a/Minecraft.Client/Common/UI/UIControl_Slider.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_Slider.cpp
@@ -22,7 +22,7 @@ bool UIControl_Slider::setupControl(UIScene *scene, IggyValuePath *parent, const
return success;
}
-void UIControl_Slider::init(const wstring &label, int id, int min, int max, int current)
+void UIControl_Slider::init(UIString label, int id, int min, int max, int current)
{
m_label = label;
m_id = id;
@@ -104,6 +104,7 @@ S32 UIControl_Slider::GetRealWidth()
void UIControl_Slider::setAllPossibleLabels(int labelCount, wchar_t labels[][256])
{
+ m_allPossibleLabels.clear();
for(unsigned int i = 0; i < labelCount; ++i)
{
m_allPossibleLabels.push_back(labels[i]);
diff --git a/Minecraft.Client/Common/UI/UIControl_Slider.h b/Minecraft.Client/Common/UI/UIControl_Slider.h
index 0b57c2f1..505f6dd2 100644
--- a/Minecraft.Client/Common/UI/UIControl_Slider.h
+++ b/Minecraft.Client/Common/UI/UIControl_Slider.h
@@ -21,7 +21,7 @@ public:
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
- void init(const wstring &label, int id, int min, int max, int current);
+ void init(UIString label, int id, int min, int max, int current);
void handleSliderMove(int newValue);
void SetSliderTouchPos(float fTouchPos);
diff --git a/Minecraft.Client/Common/UI/UIControl_SlotList.cpp b/Minecraft.Client/Common/UI/UIControl_SlotList.cpp
index e2130431..01d7b9e5 100644
--- a/Minecraft.Client/Common/UI/UIControl_SlotList.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_SlotList.cpp
@@ -22,6 +22,13 @@ bool UIControl_SlotList::setupControl(UIScene *scene, IggyValuePath *parent, con
return success;
}
+void UIControl_SlotList::ReInit()
+{
+ UIControl_Base::ReInit();
+
+ m_lastHighlighted = -1;
+}
+
void UIControl_SlotList::addSlot(int id)
{
IggyDataValue result;
diff --git a/Minecraft.Client/Common/UI/UIControl_SlotList.h b/Minecraft.Client/Common/UI/UIControl_SlotList.h
index ee741c4d..5bc1dc9a 100644
--- a/Minecraft.Client/Common/UI/UIControl_SlotList.h
+++ b/Minecraft.Client/Common/UI/UIControl_SlotList.h
@@ -14,6 +14,8 @@ public:
UIControl_SlotList();
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
+
+ virtual void ReInit();
void addSlot(int id);
void addSlots(int iStartValue, int iCount);
diff --git a/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.cpp b/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.cpp
index dfdea93e..74683a62 100644
--- a/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.cpp
@@ -24,7 +24,7 @@ bool UIControl_SpaceIndicatorBar::setupControl(UIScene *scene, IggyValuePath *pa
return success;
}
-void UIControl_SpaceIndicatorBar::init(const wstring &label, int id, __int64 min, __int64 max)
+void UIControl_SpaceIndicatorBar::init(UIString label, int id, __int64 min, __int64 max)
{
m_label = label;
m_id = id;
diff --git a/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.h b/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.h
index 39f9a746..8eed3944 100644
--- a/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.h
+++ b/Minecraft.Client/Common/UI/UIControl_SpaceIndicatorBar.h
@@ -18,7 +18,7 @@ public:
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
- void init(const wstring &label, int id, __int64 min, __int64 max);
+ void init(UIString label, int id, __int64 min, __int64 max);
virtual void ReInit();
void reset();
diff --git a/Minecraft.Client/Common/UI/UIControl_TextInput.cpp b/Minecraft.Client/Common/UI/UIControl_TextInput.cpp
index 4cb78d50..dc7bc532 100644
--- a/Minecraft.Client/Common/UI/UIControl_TextInput.cpp
+++ b/Minecraft.Client/Common/UI/UIControl_TextInput.cpp
@@ -20,7 +20,7 @@ bool UIControl_TextInput::setupControl(UIScene *scene, IggyValuePath *parent, co
return success;
}
-void UIControl_TextInput::init(const wstring &label, int id)
+void UIControl_TextInput::init(UIString label, int id)
{
m_label = label;
m_id = id;
diff --git a/Minecraft.Client/Common/UI/UIControl_TextInput.h b/Minecraft.Client/Common/UI/UIControl_TextInput.h
index d4023884..98032d85 100644
--- a/Minecraft.Client/Common/UI/UIControl_TextInput.h
+++ b/Minecraft.Client/Common/UI/UIControl_TextInput.h
@@ -13,7 +13,7 @@ public:
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
- void init(const wstring &label, int id);
+ void init(UIString label, int id);
void ReInit();
virtual void setFocus(bool focus);
diff --git a/Minecraft.Client/Common/UI/UIController.cpp b/Minecraft.Client/Common/UI/UIController.cpp
index eb33b6b3..6ac2f9ba 100644
--- a/Minecraft.Client/Common/UI/UIController.cpp
+++ b/Minecraft.Client/Common/UI/UIController.cpp
@@ -163,11 +163,17 @@ UIController::UIController()
{
m_uiDebugConsole = NULL;
m_reloadSkinThread = NULL;
+
m_navigateToHomeOnReload = false;
- m_mcTTFFont= NULL;
+
+ m_bCleanupOnReload = false;
+ m_mcTTFFont = NULL;
m_moj7 = NULL;
m_moj11 = NULL;
+ // 4J-JEV: It's important that these remain the same, unless updateCurrentLanguage is going to be called.
+ m_eCurrentFont = m_eTargetFont = eFont_NotLoaded;
+
#ifdef ENABLE_IGGY_ALLOCATOR
InitializeCriticalSection(&m_Allocatorlock);
#endif
@@ -211,6 +217,7 @@ UIController::UIController()
m_bCustomRenderPosition = false;
m_winUserIndex = 0;
m_accumulatedTicks = 0;
+ m_lastUiSfx = 0;
InitializeCriticalSection(&m_navigationLock);
InitializeCriticalSection(&m_registeredCallbackScenesCS);
@@ -303,79 +310,149 @@ void UIController::postInit()
NavigateToScene(0, eUIScene_Intro);
}
-void UIController::SetupFont()
-{
- bool bBitmapFont=false;
- if(m_mcTTFFont!=NULL)
+UIController::EFont UIController::getFontForLanguage(int language)
{
- delete m_mcTTFFont;
+ switch(language)
+ {
+ case XC_LANGUAGE_JAPANESE: return eFont_Japanese;
+#ifdef _DURANGO
+ case XC_LANGUAGE_SCHINESE: return eFont_SimpChinese;
+#endif
+ case XC_LANGUAGE_TCHINESE: return eFont_TradChinese;
+ case XC_LANGUAGE_KOREAN: return eFont_Korean;
+ default: return eFont_Bitmap;
}
+}
- switch(XGetLanguage())
+UITTFFont *UIController::createFont(EFont fontLanguage)
+ {
+ switch(fontLanguage)
{
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
- case XC_LANGUAGE_JAPANESE:
- m_mcTTFFont = new UITTFFont("Common/Media/font/JPN/DF-DotDotGothic16.ttf", 0x203B); // JPN
- break;
- case XC_LANGUAGE_SCHINESE: //TODO
- case XC_LANGUAGE_TCHINESE:
- m_mcTTFFont = new UITTFFont("Common/Media/font/CHT/DFTT_R5.TTC", 0x203B); // CHT
- break;
- case XC_LANGUAGE_KOREAN:
- m_mcTTFFont = new UITTFFont("Common/Media/font/KOR/candadite2.ttf", 0x203B); // KOR
- break;
- // 4J-JEV, Cyrillic characters have been added to this font now, (4/July/14)
- //case XC_LANGUAGE_RUSSIAN:
- //case XC_LANGUAGE_GREEK:
+ case eFont_Japanese: return new UITTFFont("Mojangles_TTF_jaJP", "Common/Media/font/JPN/DF-DotDotGothic16.ttf", 0x203B); // JPN
+ // case eFont_SimpChinese: Simplified Chinese is unsupported.
+ case eFont_TradChinese: return new UITTFFont("Mojangles_TTF_cnTD", "Common/Media/font/CHT/DFTT_R5.TTC", 0x203B); // CHT
+ case eFont_Korean: return new UITTFFont("Mojangles_TTF_koKR", "Common/Media/font/KOR/candadite2.ttf", 0x203B); // KOR
#else
- case XC_LANGUAGE_JAPANESE:
- m_mcTTFFont = new UITTFFont("Common/Media/font/JPN/DFGMaruGothic-Md.ttf", 0x2022); // JPN
- break;
- case XC_LANGUAGE_SCHINESE: //TODO
- case XC_LANGUAGE_TCHINESE:
- m_mcTTFFont = new UITTFFont("Common/Media/font/CHT/DFHeiMedium-B5.ttf", 0x2022); // CHT
- break;
- case XC_LANGUAGE_KOREAN:
- m_mcTTFFont = new UITTFFont("Common/Media/font/KOR/BOKMSD.ttf", 0x2022); // KOR
- break;
+ case eFont_Japanese: return new UITTFFont("Mojangles_TTF_jaJP", "Common/Media/font/JPN/DFGMaruGothic-Md.ttf", 0x2022); // JPN
+#ifdef _DURANGO
+ case eFont_SimpChinese: return new UITTFFont("Mojangled_TTF_cnCN", "Common/Media/font/CHS/MSYH.ttf", 0x2022); // CHS
#endif
- default:
- bBitmapFont=true;
- // m_mcTTFFont = new UITTFFont("Common/Media/font/Mojangles.ttf", 0x2022); // 4J-JEV: Shouldn't be using this.
- break;
+ case eFont_TradChinese: return new UITTFFont("Mojangles_TTF_cnTD", "Common/Media/font/CHT/DFHeiMedium-B5.ttf", 0x2022); // CHT
+ case eFont_Korean: return new UITTFFont("Mojangles_TTF_koKR", "Common/Media/font/KOR/BOKMSD.ttf", 0x2022); // KOR
+#endif
+ // 4J-JEV, Cyrillic characters have been added to this font now, (4/July/14)
+ // XC_LANGUAGE_RUSSIAN and XC_LANGUAGE_GREEK:
+ default: return NULL;
+ }
+}
+
+void UIController::SetupFont()
+{
+ // 4J-JEV: Language hasn't changed or is already changing.
+ if ( (m_eCurrentFont != m_eTargetFont) || !UIString::setCurrentLanguage() ) return;
+
+ DWORD nextLanguage = UIString::getCurrentLanguage();
+ m_eTargetFont = getFontForLanguage(nextLanguage);
+
+ // flag a language change to reload the string tables in the DLC
+ app.m_dlcManager.LanguageChanged();
+
+ app.loadStringTable(); // Switch to use new string table,
+
+ if (m_eTargetFont == m_eCurrentFont)
+ {
+ // 4J-JEV: If we're ingame, reload the font to update all the text.
+ if (app.GetGameStarted()) app.SetAction(ProfileManager.GetPrimaryPad(), eAppAction_ReloadFont);
+ return;
+ }
+
+ if (m_eCurrentFont != eFont_NotLoaded) app.DebugPrintf("[UIController] Font switch required for language transition to %i.\n", nextLanguage);
+ else app.DebugPrintf("[UIController] Initialising font for language %i.\n", nextLanguage);
+
+ if (m_mcTTFFont != NULL)
+ {
+ delete m_mcTTFFont;
+ m_mcTTFFont = NULL;
}
- if(bBitmapFont)
+ if(m_eTargetFont == eFont_Bitmap)
{
// these may have been set up by a previous language being chosen
- if(m_moj7==NULL)
- {
- m_moj7 = new UIBitmapFont(SFontData::Mojangles_7);
- m_moj7->registerFont();
- }
- if(m_moj11==NULL)
- {
- m_moj11 = new UIBitmapFont(SFontData::Mojangles_11);
- m_moj11->registerFont();
- }
+ if (m_moj7 == NULL) m_moj7 = new UIBitmapFont(SFontData::Mojangles_7);
+ if (m_moj11 == NULL) m_moj11 = new UIBitmapFont(SFontData::Mojangles_11);
+
+ // 4J-JEV: Ensure we redirect to them correctly, even if the objects were previously initialised.
+ m_moj7->registerFont();
+ m_moj11->registerFont();
+ }
+ else if (m_eTargetFont != eFont_NotLoaded)
+ {
+ m_mcTTFFont = createFont(m_eTargetFont);
+
+ app.DebugPrintf("[Iggy] Set font indirect to '%hs'.\n", m_mcTTFFont->getFontName().c_str());
+ IggyFontSetIndirectUTF8( "Mojangles7", -1, IGGY_FONTFLAG_all, m_mcTTFFont->getFontName().c_str(), -1, IGGY_FONTFLAG_none );
+ IggyFontSetIndirectUTF8( "Mojangles11", -1, IGGY_FONTFLAG_all, m_mcTTFFont->getFontName().c_str(), -1, IGGY_FONTFLAG_none );
}
else
{
- app.DebugPrintf("IggyFontSetIndirectUTF8\n");
- IggyFontSetIndirectUTF8( "Mojangles7", -1, IGGY_FONTFLAG_all, "Mojangles_TTF",-1 ,IGGY_FONTFLAG_none );
- IggyFontSetIndirectUTF8( "Mojangles11", -1, IGGY_FONTFLAG_all, "Mojangles_TTF",-1 ,IGGY_FONTFLAG_none );
+ assert(false);
+ }
+
+ // Reload ui to set new font.
+ if (m_eCurrentFont != eFont_NotLoaded)
+ {
+ app.SetAction(ProfileManager.GetPrimaryPad(), eAppAction_ReloadFont);
}
+ else
+ {
+ updateCurrentFont();
+ }
+}
+
+bool UIController::PendingFontChange()
+{
+ return getFontForLanguage( XGetLanguage() ) != m_eCurrentFont;
+}
+
+void UIController::setCleanupOnReload()
+{
+ m_bCleanupOnReload = true;
+}
+
+void UIController::updateCurrentFont()
+{
+ m_eCurrentFont = m_eTargetFont;
+}
+
+bool UIController::UsingBitmapFont()
+{
+ return m_eCurrentFont == eFont_Bitmap;
}
// TICKING
void UIController::tick()
{
- if(m_navigateToHomeOnReload && !ui.IsReloadingSkin())
+ SetupFont(); // If necessary, change font.
+
+ if ( (m_navigateToHomeOnReload || m_bCleanupOnReload) && !ui.IsReloadingSkin() )
{
ui.CleanUpSkinReload();
+
+ if (m_navigateToHomeOnReload || !g_NetworkManager.IsInSession())
+ {
+ ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_MainMenu);
+ }
+ else
+ {
+ ui.CloseAllPlayersScenes();
+ }
+
+ updateCurrentFont();
+
m_navigateToHomeOnReload = false;
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_MainMenu);
+ m_bCleanupOnReload = false;
}
for(unsigned int i = 0; i < eUIGroup_COUNT; ++i)
@@ -398,9 +475,6 @@ void UIController::tick()
// TODO: May wish to skip ticking other groups here
}
- // Fix for HUD ticks so that they all tick before this reference is cleared
- EnderDragonRenderer::bossInstance = nullptr;
-
// Clear out the cached movie file data
__int64 currentTime = System::currentTimeMillis();
for(AUTO_VAR(it, m_cachedMovieData.begin()); it != m_cachedMovieData.end();)
@@ -426,7 +500,7 @@ void UIController::loadSkins()
#elif defined __PSVITA__
platformSkinPath = L"skinVita.swf";
#elif defined _WINDOWS64
- if(m_fScreenHeight>=1080.0f)
+ if(m_fScreenHeight>720.0f)
{
platformSkinPath = L"skinHDWin.swf";
}
@@ -435,7 +509,7 @@ void UIController::loadSkins()
platformSkinPath = L"skinWin.swf";
}
#elif defined _DURANGO
- if(m_fScreenHeight>=1080.0f)
+ if(m_fScreenHeight>720.0f)
{
platformSkinPath = L"skinHDDurango.swf";
}
@@ -444,7 +518,7 @@ void UIController::loadSkins()
platformSkinPath = L"skinDurango.swf";
}
#elif defined __ORBIS__
- if(m_fScreenHeight>=1080.0f)
+ if(m_fScreenHeight>720.0f)
{
platformSkinPath = L"skinHDOrbis.swf";
}
@@ -455,7 +529,7 @@ void UIController::loadSkins()
#endif
// Every platform has one of these, so nothing shared
- if(m_fScreenHeight>=1080.0f)
+ if(m_fScreenHeight>720.0f)
{
m_iggyLibraries[eLibrary_Platform] = loadSkin(platformSkinPath, L"platformskinHD.swf");
}
@@ -562,11 +636,12 @@ void UIController::ReloadSkin()
// 4J Stu - Don't load on a thread on windows. I haven't investigated this in detail, so a quick fix
reloadSkinThreadProc(this);
#else
- // Navigate to the timer scene so that we can display something while the loading is happening
- ui.NavigateToScene(0,eUIScene_Timer,(void *)1,eUILayer_Tooltips,eUIGroup_Fullscreen);
m_reloadSkinThread = new C4JThread(reloadSkinThreadProc, (void*)this, "Reload skin thread");
m_reloadSkinThread->SetProcessor(CPU_CORE_UI_SCENE);
+
+ // Navigate to the timer scene so that we can display something while the loading is happening
+ ui.NavigateToScene(0,eUIScene_Timer,(void *)1,eUILayer_Tooltips,eUIGroup_Fullscreen);
//m_reloadSkinThread->Run();
//// Load new skin
@@ -620,7 +695,7 @@ bool UIController::IsReloadingSkin()
bool UIController::IsExpectingOrReloadingSkin()
{
- return Minecraft::GetInstance()->skins->getSelected()->isLoadingData() || Minecraft::GetInstance()->skins->needsUIUpdate() || IsReloadingSkin();
+ return Minecraft::GetInstance()->skins->getSelected()->isLoadingData() || Minecraft::GetInstance()->skins->needsUIUpdate() || IsReloadingSkin() || PendingFontChange();
}
void UIController::CleanUpSkinReload()
@@ -937,6 +1012,7 @@ void UIController::handleKeyPress(unsigned int iPad, unsigned int key)
case ACTION_MENU_PAUSEMENU: kbDown = KMInput.IsKeyDown(VK_ESCAPE); kbPressed = KMInput.IsKeyPressed(VK_ESCAPE); kbReleased = KMInput.IsKeyReleased(VK_ESCAPE); break;
case ACTION_MENU_LEFT_SCROLL: kbDown = KMInput.IsKeyDown('Q'); kbPressed = KMInput.IsKeyPressed('Q'); kbReleased = KMInput.IsKeyReleased('Q'); break;
case ACTION_MENU_RIGHT_SCROLL: kbDown = KMInput.IsKeyDown('E'); kbPressed = KMInput.IsKeyPressed('E'); kbReleased = KMInput.IsKeyReleased('E'); break;
+ case ACTION_MENU_QUICK_MOVE: kbDown = KMInput.IsKeyDown(VK_SHIFT); kbPressed = KMInput.IsKeyPressed(VK_SHIFT); kbReleased = KMInput.IsKeyReleased(VK_SHIFT); break;
}
pressed = pressed || kbPressed;
released = released || kbReleased;
@@ -1369,7 +1445,7 @@ GDrawTexture * RADLINK UIController::TextureSubstitutionCreateCallback ( void *
// 4J Stu - All our flash controls that allow replacing textures use a special 64x64 symbol
// Force this size here so that our images don't get scaled wildly
- #if (defined __ORBIS__ || defined _DURANGO )
+ #if (defined __ORBIS__ || defined _DURANGO || defined _WINDOWS64 )
*width = 96;
*height = 96;
#else
@@ -1431,6 +1507,15 @@ void UIController::unregisterSubstitutionTexture(const wstring &textureName, boo
// NAVIGATION
bool UIController::NavigateToScene(int iPad, EUIScene scene, void *initData, EUILayer layer, EUIGroup group)
{
+ static bool bSeenUpdateTextThisSession = false;
+ // 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((scene==eUIScene_LoadOrJoinMenu) && (bSeenUpdateTextThisSession==false) && ( app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_DisplayUpdateMessage)!=0))
+ {
+ scene=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))
{
@@ -1451,6 +1536,8 @@ bool UIController::NavigateToScene(int iPad, EUIScene scene, void *initData, EUI
case eUIScene_BrewingStandMenu:
case eUIScene_AnvilMenu:
case eUIScene_TradingMenu:
+ case eUIScene_BeaconMenu:
+ case eUIScene_HorseMenu:
app.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, scene);
return false;
break;
@@ -1941,7 +2028,7 @@ void UIController::ShowTooltip( unsigned int iPad, unsigned int tooltip, bool sh
if(m_groups[(int)group]->getTooltips()) m_groups[(int)group]->getTooltips()->ShowTooltip(tooltip,show);
}
-void UIController::SetTooltips( unsigned int iPad, int iA, int iB, int iX, int iY, int iLT, int iRT, int iLB, int iRB, int iLS, bool forceUpdate)
+void UIController::SetTooltips( unsigned int iPad, int iA, int iB, int iX, int iY, int iLT, int iRT, int iLB, int iRB, int iLS, int iRS, int iBack, bool forceUpdate)
{
EUIGroup group;
@@ -1967,7 +2054,7 @@ void UIController::SetTooltips( unsigned int iPad, int iA, int iB, int iX, int i
{
group = eUIGroup_Fullscreen;
}
- if(m_groups[(int)group]->getTooltips()) m_groups[(int)group]->getTooltips()->SetTooltips(iA, iB, iX, iY, iLT, iRT, iLB, iRB, iLS, forceUpdate);
+ if(m_groups[(int)group]->getTooltips()) m_groups[(int)group]->getTooltips()->SetTooltips(iA, iB, iX, iY, iLT, iRT, iLB, iRB, iLS, iRS, iBack, forceUpdate);
}
void UIController::EnableTooltip( unsigned int iPad, unsigned int tooltip, bool enable )
@@ -2033,6 +2120,13 @@ void UIController::OverrideSFX(int iPad, int iAction,bool bVal)
void UIController::PlayUISFX(ESoundEffect eSound)
{
+ __uint64 time = System::currentTimeMillis();
+
+ // Don't play multiple SFX on the same tick
+ // (prevents horrible sounds when programmatically setting multiple checkboxes)
+ if (time - m_lastUiSfx < 10) { return; }
+ m_lastUiSfx = time;
+
Minecraft::GetInstance()->soundEngine->playUI(eSound,1.0f,1.0f);
}
@@ -2118,7 +2212,13 @@ void UIController::HandleTMSBanFileRetrieved(int iPad)
void UIController::HandleInventoryUpdated(int iPad)
{
- app.DebugPrintf(app.USER_SR, "UIController::HandleInventoryUpdated not implemented\n");
+ EUIGroup group = eUIGroup_Fullscreen;
+ if( app.GetGameStarted() && ( iPad != 255 ) && ( iPad >= 0 ) )
+ {
+ group = (EUIGroup)(iPad+1);
+ }
+
+ m_groups[group]->HandleMessage(eUIMessage_InventoryUpdated, NULL);
}
void UIController::HandleGameTick()
@@ -2173,16 +2273,8 @@ void UIController::SetTutorialDescription(int iPad, TutorialPopupInfo *info)
void UIController::RemoveInteractSceneReference(int iPad, UIScene *scene)
{
EUIGroup group;
- if( app.GetGameStarted() )
- {
- // If the game isn't running treat as user 0, otherwise map index directly from pad
- if( ( iPad != 255 ) && ( iPad >= 0 ) ) group = (EUIGroup)(iPad+1);
- else group = eUIGroup_Fullscreen;
- }
- else
- {
- group = eUIGroup_Fullscreen;
- }
+ if( ( iPad != 255 ) && ( iPad >= 0 ) ) group = (EUIGroup)(iPad+1);
+ else group = eUIGroup_Fullscreen;
if(m_groups[(int)group]->getTutorialPopup()) m_groups[(int)group]->getTutorialPopup()->RemoveInteractSceneReference(scene);
}
#endif
@@ -2438,14 +2530,19 @@ void UIController::ClearPressStart()
m_iPressStartQuadrantsMask = 0;
}
-// 4J Stu - For the different StringTable classes. Should really fix the libraries.
-#ifndef __PS3__
-C4JStorage::EMessageResult UIController::RequestMessageBox(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad,
- int( *Func)(LPVOID,int,const C4JStorage::EMessageResult),LPVOID lpParam, C4JStringTable *pStringTable, WCHAR *pwchFormatString,DWORD dwFocusButton, bool bIsError)
-#else
+C4JStorage::EMessageResult UIController::RequestAlertMessage(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult),LPVOID lpParam, WCHAR *pwchFormatString)
+{
+ return RequestMessageBox(uiTitle, uiText, uiOptionA, uiOptionC, dwPad, Func, lpParam, pwchFormatString, 0, false);
+}
+
+C4JStorage::EMessageResult UIController::RequestErrorMessage(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult),LPVOID lpParam, WCHAR *pwchFormatString)
+{
+ return RequestMessageBox(uiTitle, uiText, uiOptionA, uiOptionC, dwPad, Func, lpParam, pwchFormatString, 0, true);
+}
+
C4JStorage::EMessageResult UIController::RequestMessageBox(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad,
- int( *Func)(LPVOID,int,const C4JStorage::EMessageResult),LPVOID lpParam, StringTable *pStringTable, WCHAR *pwchFormatString,DWORD dwFocusButton, bool bIsError)
-#endif
+ int( *Func)(LPVOID,int,const C4JStorage::EMessageResult),LPVOID lpParam, WCHAR *pwchFormatString,DWORD dwFocusButton, bool bIsError)
+
{
MessageBoxInfo param;
param.uiTitle = uiTitle;
@@ -2453,7 +2550,7 @@ C4JStorage::EMessageResult UIController::RequestMessageBox(UINT uiTitle, UINT ui
param.uiOptionA = uiOptionA;
param.uiOptionC = uiOptionC;
param.dwPad = dwPad;
- param.Func = Func;\
+ param.Func = Func;
param.lpParam = lpParam;
param.pwchFormatString = pwchFormatString;
param.dwFocusButton = dwFocusButton;
@@ -2512,11 +2609,11 @@ C4JStorage::EMessageResult UIController::RequestUGCMessageBox(UINT title/* = -1
ProfileManager.ShowSystemMessage( SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_PSN_CHAT_RESTRICTION, iPad );
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- return ui.RequestMessageBox( title, IDS_CHAT_RESTRICTION_UGC, uiIDA, 1, iPad, Func, lpParam, app.GetStringTable(), NULL, 0, false);
+ return ui.RequestAlertMessage( title, IDS_CHAT_RESTRICTION_UGC, uiIDA, 1, iPad, Func, lpParam);
#else
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- return ui.RequestMessageBox( title, message, uiIDA, 1, iPad, Func, lpParam, app.GetStringTable(), NULL, 0, false);
+ return ui.RequestAlertMessage( title, message, uiIDA, 1, iPad, Func, lpParam);
#endif
}
@@ -2551,7 +2648,7 @@ C4JStorage::EMessageResult UIController::RequestContentRestrictedMessageBox(UINT
#else
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- return ui.RequestMessageBox( title, message, uiIDA, 1, iPad, Func, lpParam, app.GetStringTable(), NULL, 0, false);
+ return ui.RequestAlertMessage( title, message, uiIDA, 1, iPad, Func, lpParam);
#endif
}
@@ -2705,10 +2802,13 @@ void UIController::TouchBoxRebuild(UIScene *pUIScene)
control->getControlType() == UIControl::eLeaderboardList ||
control->getControlType() == UIControl::eTouchControl)
{
- // 4J-TomK update the control (it might have been moved by flash / AS)
- control->UpdateControl();
+ if(control->getVisible())
+ {
+ // 4J-TomK update the control (it might have been moved by flash / AS)
+ control->UpdateControl();
- ui.TouchBoxAdd(control,eUIGroup,eUILayer,eUIscene, pUIScene->GetMainPanel());
+ ui.TouchBoxAdd(control,eUIGroup,eUILayer,eUIscene, pUIScene->GetMainPanel());
+ }
}
}
}
@@ -2960,7 +3060,8 @@ void UIController::HandleTouchInput(unsigned int iPad, unsigned int key, bool bP
if(m_HighlightedUIElement && m_ActiveUIElement->pControl == m_HighlightedUIElement->pControl)
{
UIControl_CheckBox *pCheckbox=(UIControl_CheckBox *)m_ActiveUIElement->pControl;
- pCheckbox->TouchSetCheckbox(!pCheckbox->IsChecked());
+ if(pCheckbox->IsEnabled()) // only proceed if checkbox is enabled!
+ pCheckbox->TouchSetCheckbox(!pCheckbox->IsChecked());
}
bReleased = false;
break;
diff --git a/Minecraft.Client/Common/UI/UIController.h b/Minecraft.Client/Common/UI/UIController.h
index ef064f80..49c78032 100644
--- a/Minecraft.Client/Common/UI/UIController.h
+++ b/Minecraft.Client/Common/UI/UIController.h
@@ -38,10 +38,37 @@ private:
S32 m_tileOriginX, m_tileOriginY;
+ enum EFont
+ {
+ eFont_NotLoaded = 0,
+
+ eFont_Bitmap,
+ eFont_Japanese,
+ eFont_SimpChinese,
+ eFont_TradChinese,
+ eFont_Korean,
+
+ };
+
+ // 4J-JEV: It's important that currentFont == targetFont, unless updateCurrentLanguage is going to be called.
+ EFont m_eCurrentFont, m_eTargetFont;
+
+ // 4J-JEV: Behaves like navigateToHome when not ingame. When in-game, it closes all player scenes instead.
+ bool m_bCleanupOnReload;
+
+ EFont getFontForLanguage(int language);
+ UITTFFont *createFont(EFont fontLanguage);
+
UIAbstractBitmapFont *m_mcBitmapFont;
UITTFFont *m_mcTTFFont;
UIBitmapFont *m_moj7, *m_moj11;
+public:
+ void setCleanupOnReload();
+ void updateCurrentFont();
+
+
+private:
// 4J-PB - ui element type for PSVita touch control
#ifdef __PSVITA__
@@ -136,6 +163,7 @@ private:
C4JThread *m_reloadSkinThread;
bool m_navigateToHomeOnReload;
int m_accumulatedTicks;
+ __uint64 m_lastUiSfx; // Tracks time (ms) of last UI sound effect
D3D11_RECT m_customRenderingClearRect;
@@ -182,6 +210,9 @@ protected:
public:
CRITICAL_SECTION m_Allocatorlock;
void SetupFont();
+ bool PendingFontChange();
+ bool UsingBitmapFont();
+
public:
// TICKING
virtual void tick();
@@ -295,7 +326,7 @@ public:
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 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, int iRS=-1, int iBack=-1, bool forceUpdate = false);
virtual void EnableTooltip( unsigned int iPad, unsigned int tooltip, bool enable );
virtual void RefreshTooltips(unsigned int iPad);
@@ -341,15 +372,12 @@ public:
virtual void HidePressStart();
void ClearPressStart();
- // 4J Stu - Only because of the different StringTable type, should really fix the libraries
-#ifndef __PS3__
- 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, C4JStringTable *pStringTable=NULL, WCHAR *pwchFormatString=NULL,DWORD dwFocusButton=0, bool bIsError = true);
-#else
- 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, StringTable *pStringTable=NULL, WCHAR *pwchFormatString=NULL,DWORD dwFocusButton=0, bool bIsError = true);
-#endif
+ virtual C4JStorage::EMessageResult RequestAlertMessage(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad=XUSER_INDEX_ANY, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult)=NULL,LPVOID lpParam=NULL, WCHAR *pwchFormatString=NULL);
+ virtual C4JStorage::EMessageResult RequestErrorMessage(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad=XUSER_INDEX_ANY, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult)=NULL,LPVOID lpParam=NULL, WCHAR *pwchFormatString=NULL);
+private:
+ virtual C4JStorage::EMessageResult RequestMessageBox(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad,int( *Func)(LPVOID,int,const C4JStorage::EMessageResult),LPVOID lpParam, WCHAR *pwchFormatString,DWORD dwFocusButton, bool bIsError);
+public:
C4JStorage::EMessageResult RequestUGCMessageBox(UINT title = -1, UINT message = -1, int iPad = -1, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult) = NULL, LPVOID lpParam = NULL);
C4JStorage::EMessageResult RequestContentRestrictedMessageBox(UINT title = -1, UINT message = -1, int iPad = -1, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult) = NULL, LPVOID lpParam = NULL);
diff --git a/Minecraft.Client/Common/UI/UIEnums.h b/Minecraft.Client/Common/UI/UIEnums.h
index c68b6740..45aff87d 100644
--- a/Minecraft.Client/Common/UI/UIEnums.h
+++ b/Minecraft.Client/Common/UI/UIEnums.h
@@ -54,7 +54,7 @@ enum EUIScene
eUIScene_DebugOptions,
eUIScene_DebugTips,
eUIScene_HelpAndOptionsMenu,
- eUIScene_HowToPlay,
+ eUIScene_HowToPlay,
eUIScene_HowToPlayMenu,
eUIScene_ControlsMenu,
eUIScene_SettingsOptionsMenu,
@@ -94,13 +94,23 @@ enum EUIScene
eUIScene_TradingMenu,
eUIScene_AnvilMenu,
eUIScene_TeleportMenu,
+ eUIScene_HopperMenu,
+ eUIScene_BeaconMenu,
+ eUIScene_HorseMenu,
+ eUIScene_FireworksMenu,
#ifdef _XBOX
// eUIScene_TransferToXboxOne,
#endif
+ // ****************************************
+ // ****************************************
+ // ********** IMPORTANT ******************
+ // ****************************************
+ // ****************************************
// When adding new scenes here, you must also update the switches in CConsoleMinecraftApp::NavigateToScene
// There are quite a few so you need to check them all
+ // Also update UILayer::updateFocusState
#ifndef _XBOX
// Anything non-xbox should be added here. The ordering of scenes above is required for sentient reporting on xbox 360 to continue to be accurate
@@ -117,6 +127,7 @@ enum EUIScene
eUIScene_Timer,
eUIScene_EULA,
eUIScene_InGameSaveManagementMenu,
+ eUIScene_LanguageSelector,
#endif // ndef _XBOX
#ifdef _DEBUG_MENUS_ENABLED
@@ -154,6 +165,8 @@ enum EToolTipButton
eToolTipButtonLB,
eToolTipButtonRB,
eToolTipButtonLS,
+ eToolTipButtonRS,
+ eToolTipButtonBack,
eToolTipNumButtons
};
@@ -209,6 +222,12 @@ enum EHowToPlayPage
eHowToPlay_Breeding,
eHowToPlay_Trading,
+ eHowToPlay_Horses,
+ eHowToPlay_Beacons,
+ eHowToPlay_Fireworks,
+ eHowToPlay_Hoppers,
+ eHowToPlay_Droppers,
+
eHowToPlay_NetherPortal,
eHowToPlay_TheEnd,
#ifdef _XBOX
@@ -229,6 +248,13 @@ enum ECreditTextTypes
eNumTextTypes
};
+enum EUIMessage
+{
+ eUIMessage_InventoryUpdated,
+
+ eUIMessage_COUNT,
+};
+
#define NO_TRANSLATED_STRING ( -1 ) // String ID used to indicate that we are using non localised string.
#define CONNECTING_PROGRESS_CHECK_TIME 500
diff --git a/Minecraft.Client/Common/UI/UIGroup.cpp b/Minecraft.Client/Common/UI/UIGroup.cpp
index 1899d05b..e8bb9fe6 100644
--- a/Minecraft.Client/Common/UI/UIGroup.cpp
+++ b/Minecraft.Client/Common/UI/UIGroup.cpp
@@ -13,6 +13,8 @@ UIGroup::UIGroup(EUIGroup group, int iPad)
m_updateFocusStateCountdown = 0;
+ m_viewportType = C4JRender::VIEWPORT_TYPE_FULLSCREEN;
+
for(unsigned int i = 0; i < eUILayer_COUNT; ++i)
{
m_layers[i] = new UILayer(this);
@@ -39,8 +41,6 @@ UIGroup::UIGroup(EUIGroup group, int iPad)
m_pressStartToPlay = (UIComponent_PressStartToPlay *)m_layers[(int)eUILayer_Tooltips]->addComponent(0, eUIComponent_PressStartToPlay);
}
- m_viewportType = C4JRender::VIEWPORT_TYPE_FULLSCREEN;
-
// 4J Stu - Pre-allocate this for cached rendering in scenes. It's horribly slow to do dynamically, but we should only need one
// per group as we will only be displaying one of these types of scenes at a time
m_commandBufferList = MemoryTracker::genLists(1);
@@ -318,6 +318,16 @@ void UIGroup::HandleDLCLicenseChange()
}
#endif
+void UIGroup::HandleMessage(EUIMessage message, void *data)
+{
+ // Ignore this group if the player isn't signed in
+ if(m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return;
+ for(unsigned int i = 0; i < eUILayer_COUNT; ++i)
+ {
+ m_layers[i]->HandleMessage(message, data);
+ }
+}
+
bool UIGroup::IsFullscreenGroup()
{
return m_group == eUIGroup_Fullscreen;
diff --git a/Minecraft.Client/Common/UI/UIGroup.h b/Minecraft.Client/Common/UI/UIGroup.h
index e20fbb02..0ffee0ca 100644
--- a/Minecraft.Client/Common/UI/UIGroup.h
+++ b/Minecraft.Client/Common/UI/UIGroup.h
@@ -96,6 +96,8 @@ public:
#ifdef _XBOX_ONE
virtual void HandleDLCLicenseChange();
#endif
+ virtual void HandleMessage(EUIMessage message, void *data);
+
bool IsFullscreenGroup();
void handleUnlockFullVersion();
diff --git a/Minecraft.Client/Common/UI/UILayer.cpp b/Minecraft.Client/Common/UI/UILayer.cpp
index e6f87f81..13b26c84 100644
--- a/Minecraft.Client/Common/UI/UILayer.cpp
+++ b/Minecraft.Client/Common/UI/UILayer.cpp
@@ -189,7 +189,7 @@ void UILayer::ReloadAll(bool force)
int lowestRenderable = 0;
for(;lowestRenderable < m_sceneStack.size(); ++lowestRenderable)
{
- m_sceneStack[lowestRenderable]->reloadMovie();
+ m_sceneStack[lowestRenderable]->reloadMovie(force);
}
}
}
@@ -253,6 +253,18 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData)
case eUIScene_AnvilMenu:
newScene = new UIScene_AnvilMenu(iPad, initData, this);
break;
+ case eUIScene_HopperMenu:
+ newScene = new UIScene_HopperMenu(iPad, initData, this);
+ break;
+ case eUIScene_BeaconMenu:
+ newScene = new UIScene_BeaconMenu(iPad, initData, this);
+ break;
+ case eUIScene_HorseMenu:
+ newScene = new UIScene_HorseInventoryMenu(iPad, initData, this);
+ break;
+ case eUIScene_FireworksMenu:
+ newScene = new UIScene_FireworksMenu(iPad, initData, this);
+ break;
// Help and Options
case eUIScene_HelpAndOptionsMenu:
@@ -282,6 +294,9 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData)
case eUIScene_HowToPlayMenu:
newScene = new UIScene_HowToPlayMenu(iPad, initData, this);
break;
+ case eUIScene_LanguageSelector:
+ newScene = new UIScene_LanguageSelector(iPad, initData, this);
+ break;
case eUIScene_HowToPlay:
newScene = new UIScene_HowToPlay(iPad, initData, this);
break;
@@ -313,6 +328,10 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData)
newScene = new UIScene_InGameInfoMenu(iPad, initData, this);
break;
case eUIScene_InGameHostOptionsMenu:
+ if (IsSceneInStack(eUIScene_InGameHostOptionsMenu)) {
+ app.DebugPrintf("Skipped eUIScene_InGameHostOptionsMenu, we have already this tab!");
+ return false;
+ }
newScene = new UIScene_InGameHostOptionsMenu(iPad, initData, this);
break;
case eUIScene_InGamePlayerOptionsMenu:
@@ -382,6 +401,9 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData)
case eUIScene_EULA:
newScene = new UIScene_EULA(iPad, initData, this);
break;
+ case eUIScene_NewUpdateMessage:
+ newScene = new UIScene_NewUpdateMessage(iPad, initData, this);
+ break;
// Other
case eUIScene_Keyboard:
@@ -696,6 +718,12 @@ bool UILayer::updateFocusState(bool allowedFocus /* = false */)
m_scenesToDestroy.push_back(scene);
#endif
}
+
+ if (scene->getSceneType() == eUIScene_SettingsOptionsMenu)
+ {
+ scene->loseFocus();
+ m_scenesToDestroy.push_back(scene);
+ }
}
/// UPDATE STACK STATES
@@ -719,6 +747,12 @@ bool UILayer::updateFocusState(bool allowedFocus /* = false */)
case eUIScene_DispenserMenu:
case eUIScene_BrewingStandMenu:
case eUIScene_EnchantingMenu:
+ case eUIScene_TradingMenu:
+ case eUIScene_HopperMenu:
+ case eUIScene_HorseMenu:
+ case eUIScene_FireworksMenu:
+ case eUIScene_BeaconMenu:
+ case eUIScene_AnvilMenu:
m_bContainerMenuDisplayed=true;
// Intentional fall-through
@@ -782,7 +816,7 @@ void UILayer::handleInput(int iPad, int key, bool repeat, bool pressed, bool rel
}
// Fix for PS3 #444 - [IN GAME] If the user keeps pressing CROSS while on the 'Save Game' screen the title will crash.
- handled = handled || scene->hidesLowerScenes();
+ handled = handled || scene->hidesLowerScenes() || scene->blocksInput();
if(handled ) break;
}
@@ -819,6 +853,15 @@ void UILayer::HandleDLCLicenseChange()
}
#endif
+void UILayer::HandleMessage(EUIMessage message, void *data)
+{
+ for(AUTO_VAR(it,m_sceneStack.rbegin()); it != m_sceneStack.rend(); ++it)
+ {
+ UIScene *topScene = *it;
+ topScene->HandleMessage(message, data);
+ }
+}
+
bool UILayer::IsFullscreenGroup()
{
return m_parentGroup->IsFullscreenGroup();
diff --git a/Minecraft.Client/Common/UI/UILayer.h b/Minecraft.Client/Common/UI/UILayer.h
index 2840f23f..47c776ab 100644
--- a/Minecraft.Client/Common/UI/UILayer.h
+++ b/Minecraft.Client/Common/UI/UILayer.h
@@ -83,6 +83,8 @@ public:
#ifdef _XBOX_ONE
virtual void HandleDLCLicenseChange();
#endif
+ virtual void HandleMessage(EUIMessage message, void *data);
+
void handleUnlockFullVersion();
UIScene *FindScene(EUIScene sceneType);
diff --git a/Minecraft.Client/Common/UI/UIScene.cpp b/Minecraft.Client/Common/UI/UIScene.cpp
index e7d907ec..ba253643 100644
--- a/Minecraft.Client/Common/UI/UIScene.cpp
+++ b/Minecraft.Client/Common/UI/UIScene.cpp
@@ -93,6 +93,7 @@ void UIScene::reloadMovie(bool force)
(*it)->ReInit();
}
+ updateComponents();
handleReload();
IggyDataValue result;
@@ -740,6 +741,9 @@ void UIScene::_customDrawSlotControl(CustomDrawData *region, int iPad, shared_pt
PIXBeginNamedEvent(0,"Render and decorate");
if(m_pItemRenderer == NULL) m_pItemRenderer = new ItemRenderer();
+ RenderManager.StateSetBlendEnable(true);
+ RenderManager.StateSetBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ RenderManager.StateSetBlendFactor(0xffffffff);
m_pItemRenderer->renderAndDecorateItem(pMinecraft->font, pMinecraft->textures, item, x, y,scaleX,scaleY,fAlpha,isFoil,false, !usingCommandBuffer);
PIXEndNamedEvent();
@@ -827,7 +831,7 @@ void UIScene::gainFocus()
app.DebugPrintf("Sent gain focus event to scene\n");
*/
bHasFocus = true;
- if(app.GetGameStarted() && needsReloaded())
+ if(needsReloaded())
{
reloadMovie();
}
@@ -882,7 +886,8 @@ void UIScene::handleGainFocus(bool navBack)
void UIScene::updateTooltips()
{
- ui.SetTooltips(m_iPad, -1);
+ if(!ui.IsReloadingSkin())
+ ui.SetTooltips(m_iPad, -1);
}
void UIScene::sendInputToMovie(int key, bool repeat, bool pressed, bool released)
@@ -906,6 +911,7 @@ void UIScene::sendInputToMovie(int key, bool repeat, bool pressed, bool released
int UIScene::convertGameActionToIggyKeycode(int action)
{
+ // TODO: This action to key mapping should probably use the control mapping
int keycode = -1;
switch(action)
{
@@ -946,7 +952,16 @@ int UIScene::convertGameActionToIggyKeycode(int action)
keycode = IGGY_KEYCODE_PAGE_UP;
break;
case ACTION_MENU_PAGEDOWN:
- keycode = IGGY_KEYCODE_PAGE_DOWN;
+#ifdef __PSVITA__
+ if (!InputManager.IsVitaTV())
+ {
+ keycode = IGGY_KEYCODE_F6;
+ }
+ else
+#endif
+ {
+ keycode = IGGY_KEYCODE_PAGE_DOWN;
+ }
break;
case ACTION_MENU_RIGHT_SCROLL:
keycode = IGGY_KEYCODE_F3;
@@ -957,6 +972,7 @@ int UIScene::convertGameActionToIggyKeycode(int action)
case ACTION_MENU_STICK_PRESS:
break;
case ACTION_MENU_OTHER_STICK_PRESS:
+ keycode = IGGY_KEYCODE_F5;
break;
case ACTION_MENU_OTHER_STICK_UP:
keycode = IGGY_KEYCODE_F11;
@@ -1233,6 +1249,10 @@ void UIScene::UpdateSceneControls()
}
#endif
+void UIScene::HandleMessage(EUIMessage message, void *data)
+{
+}
+
size_t UIScene::GetCallbackUniqueId()
{
if( m_callbackUniqueId == 0)
diff --git a/Minecraft.Client/Common/UI/UIScene.h b/Minecraft.Client/Common/UI/UIScene.h
index 823c510c..8c20aaae 100644
--- a/Minecraft.Client/Common/UI/UIScene.h
+++ b/Minecraft.Client/Common/UI/UIScene.h
@@ -169,6 +169,9 @@ public:
// Returns true if lower scenes in this scenes layer, or in any layer below this scenes layers should be hidden
virtual bool hidesLowerScenes() { return m_hasTickedOnce; }
+ // Returns true if this scene should block input to lower scenes (works like hidesLowerScenes but doesn't interfere with rendering)
+ virtual bool blocksInput() { return false; }
+
// returns main panel if controls are not living in the root
virtual UIControl* GetMainPanel();
@@ -251,6 +254,9 @@ public:
#ifdef _XBOX_ONE
virtual void HandleDLCLicenseChange() {}
#endif
+
+ virtual void HandleMessage(EUIMessage message, void *data);
+
void registerSubstitutionTexture(const wstring &textureName, PBYTE pbData, DWORD dwLength, bool deleteData = false);
bool hasRegisteredSubstitutionTexture(const wstring &textureName);
@@ -260,6 +266,7 @@ public:
protected:
+
#ifdef _DURANGO
virtual long long getDefaultGtcButtons() { return _360_GTC_BACK; }
#endif
diff --git a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp
index 7823fb4e..bb56c780 100644
--- a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.cpp
@@ -30,6 +30,14 @@ UIScene_AbstractContainerMenu::UIScene_AbstractContainerMenu(int iPad, UILayer *
m_bIgnoreInput=false;
#ifdef _WINDOWS64
m_bMouseDragSlider=false;
+ m_bHasMousePosition = false;
+ m_lastMouseX = 0;
+ m_lastMouseY = 0;
+
+ for (int btn = 0; btn < 3; btn++)
+ {
+ KMInput.ConsumeMousePress(btn);
+ }
#endif
}
@@ -50,7 +58,10 @@ void UIScene_AbstractContainerMenu::handleDestroy()
// 4J Stu - Fix for #11302 - TCR 001: Network Connectivity: Host crashed after being killed by the client while accessing a chest during burst packet loss.
// We need to make sure that we call closeContainer() anytime this menu is closed, even if it is forced to close by some other reason (like the player dying)
- if(pMinecraft->localplayers[m_iPad] != NULL) pMinecraft->localplayers[m_iPad]->closeContainer();
+ if(pMinecraft->localplayers[m_iPad] != NULL && pMinecraft->localplayers[m_iPad]->containerMenu->containerId == m_menu->containerId)
+ {
+ pMinecraft->localplayers[m_iPad]->closeContainer();
+ }
ui.OverrideSFX(m_iPad,ACTION_MENU_A,false);
ui.OverrideSFX(m_iPad,ACTION_MENU_OK,false);
@@ -181,7 +192,9 @@ void UIScene_AbstractContainerMenu::tick()
#ifdef _WINDOWS64
bool mouseActive = (m_iPad == 0 && !KMInput.IsCaptured());
+ bool drivePointerFromMouse = false;
float rawMouseMovieX = 0, rawMouseMovieY = 0;
+ int scrollDelta = 0;
// Map Windows mouse position to the virtual pointer in movie coordinates
if (mouseActive)
{
@@ -193,15 +206,30 @@ void UIScene_AbstractContainerMenu::tick()
{
int mouseX = KMInput.GetMouseX();
int mouseY = KMInput.GetMouseY();
+ bool mouseMoved = !m_bHasMousePosition || mouseX != m_lastMouseX || mouseY != m_lastMouseY;
+
+ m_bHasMousePosition = true;
+ m_lastMouseX = mouseX;
+ m_lastMouseY = mouseY;
+ scrollDelta = KMInput.ConsumeScrollDelta();
// Convert mouse position to movie coordinates using the movie/client ratio
- float mx = (float)mouseX * ((float)m_movieWidth / (float)clientWidth);
- float my = (float)mouseY * ((float)m_movieHeight / (float)clientHeight);
+ float mx = (float)mouseX * ((float)m_movieWidth / (float)clientWidth) - (float)m_controlMainPanel.getXPos();
+ float my = (float)mouseY * ((float)m_movieHeight / (float)clientHeight) - (float)m_controlMainPanel.getYPos();
- m_pointerPos.x = mx;
- m_pointerPos.y = my;
rawMouseMovieX = mx;
rawMouseMovieY = my;
+
+ // Once the mouse has taken over the container cursor, keep following the OS cursor
+ // until explicit controller input takes ownership back.
+ drivePointerFromMouse = m_bPointerDrivenByMouse || mouseMoved || KMInput.IsMouseDown(0) || KMInput.IsMouseDown(1) || KMInput.IsMouseDown(2) || scrollDelta != 0;
+ if (drivePointerFromMouse)
+ {
+ m_bPointerDrivenByMouse = true;
+ m_eCurrTapState = eTapStateNoInput;
+ m_pointerPos.x = mx;
+ m_pointerPos.y = my;
+ }
}
}
#endif
@@ -248,7 +276,6 @@ void UIScene_AbstractContainerMenu::tick()
}
// Mouse scroll wheel for page scrolling
- int scrollDelta = KMInput.ConsumeScrollDelta();
if (scrollDelta > 0)
{
handleKeyDown(m_iPad, ACTION_MENU_OTHER_STICK_UP, false);
@@ -273,14 +300,19 @@ void UIScene_AbstractContainerMenu::tick()
#ifdef _WINDOWS64
S32 x, y;
- if (mouseActive)
+ if (mouseActive && m_bPointerDrivenByMouse)
{
// Send raw mouse position directly as Iggy event to avoid coordinate round-trip errors
// Scale mouse client coords to the Iggy display space (which was set to getRenderDimensions())
RECT clientRect;
GetClientRect(KMInput.GetHWnd(), &clientRect);
- x = (S32)((float)KMInput.GetMouseX() * ((float)width / (float)clientRect.right));
- y = (S32)((float)KMInput.GetMouseY() * ((float)height / (float)clientRect.bottom));
+ float mouseMovieX = (float)KMInput.GetMouseX() * ((float)m_movieWidth / (float)clientRect.right);
+ float mouseMovieY = (float)KMInput.GetMouseY() * ((float)m_movieHeight / (float)clientRect.bottom);
+ float mouseLocalX = mouseMovieX - (float)m_controlMainPanel.getXPos();
+ float mouseLocalY = mouseMovieY - (float)m_controlMainPanel.getYPos();
+
+ x = (S32)(mouseLocalX * ((float)width / m_movieWidth));
+ y = (S32)(mouseLocalY * ((float)height / m_movieHeight));
}
else
{
@@ -311,7 +343,7 @@ void UIScene_AbstractContainerMenu::render(S32 width, S32 height, C4JRender::eVi
if(m_needsCacheRendered)
{
- m_expectedCachedSlotCount = 0;
+ m_expectedCachedSlotCount = GetBaseSlotCount();
unsigned int count = m_menu->getSize();
for(unsigned int i = 0; i < count; ++i)
{
@@ -333,6 +365,7 @@ void UIScene_AbstractContainerMenu::customDraw(IggyCustomDrawCallbackRegion *reg
if(pMinecraft->localplayers[m_iPad] == NULL || pMinecraft->localgameModes[m_iPad] == NULL) return;
shared_ptr<ItemInstance> item = nullptr;
+ int slotId = -1;
if(wcscmp((wchar_t *)region->name,L"pointerIcon")==0)
{
m_cacheSlotRenders = false;
@@ -340,7 +373,6 @@ void UIScene_AbstractContainerMenu::customDraw(IggyCustomDrawCallbackRegion *reg
}
else
{
- int slotId = -1;
swscanf((wchar_t*)region->name,L"slot_%d",&slotId);
if (slotId == -1)
{
@@ -354,7 +386,7 @@ void UIScene_AbstractContainerMenu::customDraw(IggyCustomDrawCallbackRegion *reg
}
}
- if(item != NULL) customDrawSlotControl(region,m_iPad,item,1.0f,item->isFoil(),true);
+ if(item != NULL) customDrawSlotControl(region,m_iPad,item,m_menu->isValidIngredient(item, slotId)?1.0f:0.5f,item->isFoil(),true);
}
void UIScene_AbstractContainerMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
@@ -366,25 +398,29 @@ void UIScene_AbstractContainerMenu::handleInput(int iPad, int key, bool repeat,
if(pressed)
{
+ m_bPointerDrivenByMouse = false;
handled = handleKeyDown(m_iPad, key, repeat);
}
}
-void UIScene_AbstractContainerMenu::SetPointerText(const wstring &description, vector<wstring> &unformattedStrings, bool newSlot)
+void UIScene_AbstractContainerMenu::SetPointerText(vector<HtmlString> *description, bool newSlot)
{
- //app.DebugPrintf("Setting pointer text\n");
- m_cursorPath.setLabel(description,false,newSlot);
+ m_cursorPath.setLabel(HtmlString::Compose(description), false, newSlot);
}
void UIScene_AbstractContainerMenu::setSectionFocus(ESceneSection eSection, int iPad)
{
+ UIControl *newFocus = getSection(eSection);
+ if(newFocus) newFocus->setFocus(true);
+
if(m_focusSection != eSectionNone)
{
UIControl *currentFocus = getSection(m_focusSection);
- if(currentFocus) currentFocus->setFocus(false);
+ // 4J-TomK only set current focus to false if it differs from last (previously this continuously fired iggy functions when they were identical!
+ if(currentFocus != newFocus)
+ if(currentFocus) currentFocus->setFocus(false);
}
- UIControl *newFocus = getSection(eSection);
- if(newFocus) newFocus->setFocus(true);
+
m_focusSection = eSection;
}
@@ -405,6 +441,13 @@ shared_ptr<ItemInstance> UIScene_AbstractContainerMenu::getSlotItem(ESceneSectio
else return nullptr;
}
+Slot *UIScene_AbstractContainerMenu::getSlot(ESceneSection eSection, int iSlot)
+{
+ Slot *slot = m_menu->getSlot( getSectionStartOffset(eSection) + iSlot );
+ if(slot) return slot;
+ else return NULL;
+}
+
bool UIScene_AbstractContainerMenu::isSlotEmpty(ESceneSection eSection, int iSlot)
{
Slot *slot = m_menu->getSlot( getSectionStartOffset(eSection) + iSlot );
diff --git a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.h b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.h
index 26688dc5..812c5b41 100644
--- a/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.h
@@ -12,6 +12,9 @@ private:
bool m_bIgnoreInput;
#ifdef _WINDOWS64
bool m_bMouseDragSlider;
+ bool m_bHasMousePosition;
+ int m_lastMouseX;
+ int m_lastMouseY;
#endif
protected:
@@ -48,15 +51,20 @@ protected:
virtual bool doesSectionTreeHaveFocus(ESceneSection eSection) { return false; }
virtual void setSectionFocus(ESceneSection eSection, int iPad);
void setFocusToPointer(int iPad);
- void SetPointerText(const wstring &description, vector<wstring> &unformattedStrings, bool newSlot);
+ void SetPointerText(vector<HtmlString> *description, bool newSlot);
virtual shared_ptr<ItemInstance> getSlotItem(ESceneSection eSection, int iSlot);
+ virtual Slot *getSlot(ESceneSection eSection, int iSlot);
virtual bool isSlotEmpty(ESceneSection eSection, int iSlot);
virtual void adjustPointerForSafeZone();
virtual UIControl *getSection(ESceneSection eSection) { return NULL; }
+ virtual int GetBaseSlotCount() { return 0; }
public:
virtual void tick();
+
+ // 4J - TomK If update tooltips is called then make sure the correct parent is invoked! (both UIScene AND IUIScene_AbstractContainerMenu have an instance of said function!)
+ virtual void updateTooltips() { IUIScene_AbstractContainerMenu::UpdateTooltips(); }
virtual void render(S32 width, S32 height, C4JRender::eViewportType viewpBort);
virtual void customDraw(IggyCustomDrawCallbackRegion *region);
diff --git a/Minecraft.Client/Common/UI/UIScene_AnvilMenu.cpp b/Minecraft.Client/Common/UI/UIScene_AnvilMenu.cpp
index 7b9886bc..c810ad45 100644
--- a/Minecraft.Client/Common/UI/UIScene_AnvilMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_AnvilMenu.cpp
@@ -27,14 +27,14 @@ UIScene_AnvilMenu::UIScene_AnvilMenu(int iPad, void *_initData, UILayer *parentL
gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Anvil_Menu, this);
}
- m_repairMenu = new RepairMenu( initData->inventory, initData->level, initData->x, initData->y, initData->z, pMinecraft->localplayers[iPad] );
+ m_repairMenu = new AnvilMenu( initData->inventory, initData->level, initData->x, initData->y, initData->z, pMinecraft->localplayers[iPad] );
m_repairMenu->addSlotListener(this);
- Initialize( iPad, m_repairMenu, true, RepairMenu::INV_SLOT_START, eSectionAnvilUsing, eSectionAnvilMax );
+ Initialize( iPad, m_repairMenu, true, AnvilMenu::INV_SLOT_START, eSectionAnvilUsing, eSectionAnvilMax );
- m_slotListItem1.addSlots(RepairMenu::INPUT_SLOT, 1);
- m_slotListItem2.addSlots(RepairMenu::ADDITIONAL_SLOT, 1);
- m_slotListResult.addSlots(RepairMenu::RESULT_SLOT, 1);
+ m_slotListItem1.addSlots(AnvilMenu::INPUT_SLOT, 1);
+ m_slotListItem2.addSlots(AnvilMenu::ADDITIONAL_SLOT, 1);
+ m_slotListResult.addSlots(AnvilMenu::RESULT_SLOT, 1);
bool expensive = false;
wstring m_costString = L"";
@@ -46,7 +46,7 @@ UIScene_AnvilMenu::UIScene_AnvilMenu(int iPad, void *_initData, UILayer *parentL
m_costString = app.GetString(IDS_REPAIR_EXPENSIVE);
expensive = true;
}
- else if(!m_repairMenu->getSlot(RepairMenu::RESULT_SLOT)->hasItem())
+ else if(!m_repairMenu->getSlot(AnvilMenu::RESULT_SLOT)->hasItem())
{
// Do nothing
}
@@ -56,7 +56,7 @@ UIScene_AnvilMenu::UIScene_AnvilMenu(int iPad, void *_initData, UILayer *parentL
wchar_t temp[256];
swprintf(temp, 256, costString, m_repairMenu->cost);
m_costString = temp;
- if(!m_repairMenu->getSlot(RepairMenu::RESULT_SLOT)->mayPickup(dynamic_pointer_cast<Player>(m_inventory->player->shared_from_this())))
+ if(!m_repairMenu->getSlot(AnvilMenu::RESULT_SLOT)->mayPickup(dynamic_pointer_cast<Player>(m_inventory->player->shared_from_this())))
{
expensive = true;
}
@@ -85,11 +85,11 @@ wstring UIScene_AnvilMenu::getMoviePath()
void UIScene_AnvilMenu::handleReload()
{
- Initialize( m_iPad, m_menu, true, RepairMenu::INV_SLOT_START, eSectionAnvilUsing, eSectionAnvilMax );
+ Initialize( m_iPad, m_menu, true, AnvilMenu::INV_SLOT_START, eSectionAnvilUsing, eSectionAnvilMax );
- m_slotListItem1.addSlots(RepairMenu::INPUT_SLOT, 1);
- m_slotListItem2.addSlots(RepairMenu::ADDITIONAL_SLOT, 1);
- m_slotListResult.addSlots(RepairMenu::RESULT_SLOT, 1);
+ m_slotListItem1.addSlots(AnvilMenu::INPUT_SLOT, 1);
+ m_slotListItem2.addSlots(AnvilMenu::ADDITIONAL_SLOT, 1);
+ m_slotListResult.addSlots(AnvilMenu::RESULT_SLOT, 1);
}
void UIScene_AnvilMenu::tick()
diff --git a/Minecraft.Client/Common/UI/UIScene_BeaconMenu.cpp b/Minecraft.Client/Common/UI/UIScene_BeaconMenu.cpp
new file mode 100644
index 00000000..e70397d6
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_BeaconMenu.cpp
@@ -0,0 +1,519 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
+#include "..\..\Minecraft.h"
+#include "UIScene_BeaconMenu.h"
+
+UIScene_BeaconMenu::UIScene_BeaconMenu(int iPad, void *_initData, UILayer *parentLayer) : UIScene_AbstractContainerMenu(iPad, parentLayer)
+{
+ // Setup all the Iggy references we need for this scene
+ initialiseMovie();
+
+ m_labelPrimary.init(IDS_CONTAINER_BEACON_PRIMARY_POWER);
+ m_labelSecondary.init(IDS_CONTAINER_BEACON_SECONDARY_POWER);
+
+ m_buttonsPowers[eControl_Primary1].setVisible(false);
+ m_buttonsPowers[eControl_Primary2].setVisible(false);
+ m_buttonsPowers[eControl_Primary3].setVisible(false);
+ m_buttonsPowers[eControl_Primary4].setVisible(false);
+ m_buttonsPowers[eControl_Primary5].setVisible(false);
+ m_buttonsPowers[eControl_Secondary1].setVisible(false);
+ m_buttonsPowers[eControl_Secondary2].setVisible(false);
+
+ BeaconScreenInput *initData = (BeaconScreenInput *)_initData;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if( pMinecraft->localgameModes[initData->iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[initData->iPad];
+ m_previousTutorialState = gameMode->getTutorial()->getCurrentState();
+ gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Beacon_Menu, this);
+ }
+
+ m_beacon = initData->beacon;
+
+ BeaconMenu *menu = new BeaconMenu(initData->inventory, initData->beacon);
+
+ Initialize( initData->iPad, menu, true, BeaconMenu::INV_SLOT_START, eSectionBeaconUsing, eSectionBeaconMax );
+
+ m_slotListActivator.addSlots(BeaconMenu::PAYMENT_SLOT, 1);
+
+ m_slotListActivatorIcons.addSlots(m_menu->getSize(),4);
+
+ //app.SetRichPresenceContext(m_iPad,CONTEXT_GAME_STATE_BEACON);
+
+ delete initData;
+}
+
+wstring UIScene_BeaconMenu::getMoviePath()
+{
+ if(app.GetLocalPlayerCount() > 1)
+ {
+ return L"BeaconMenuSplit";
+ }
+ else
+ {
+ return L"BeaconMenu";
+ }
+}
+
+void UIScene_BeaconMenu::handleReload()
+{
+ Initialize( m_iPad, m_menu, true, BeaconMenu::INV_SLOT_START, eSectionBeaconUsing, eSectionBeaconMax );
+
+ m_slotListActivator.addSlots(BeaconMenu::PAYMENT_SLOT, 1);
+
+ m_slotListActivatorIcons.addSlots(m_menu->getSize(),4);
+}
+
+void UIScene_BeaconMenu::tick()
+{
+ UIScene_AbstractContainerMenu::tick();
+
+ handleTick();
+}
+
+int UIScene_BeaconMenu::getSectionColumns(ESceneSection eSection)
+{
+ int cols = 0;
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ cols = 1;
+ break;
+ case eSectionBeaconInventory:
+ cols = 9;
+ break;
+ case eSectionBeaconUsing:
+ cols = 9;
+ break;
+ default:
+ assert( false );
+ break;
+ };
+ return cols;
+}
+
+int UIScene_BeaconMenu::getSectionRows(ESceneSection eSection)
+{
+ int rows = 0;
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ rows = 1;
+ break;
+ case eSectionBeaconInventory:
+ rows = 3;
+ break;
+ case eSectionBeaconUsing:
+ rows = 1;
+ break;
+ default:
+ assert( false );
+ break;
+ };
+ return rows;
+}
+
+void UIScene_BeaconMenu::GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition )
+{
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ pPosition->x = m_slotListActivator.getXPos();
+ pPosition->y = m_slotListActivator.getYPos();
+ break;
+ case eSectionBeaconInventory:
+ pPosition->x = m_slotListInventory.getXPos();
+ pPosition->y = m_slotListInventory.getYPos();
+ break;
+ case eSectionBeaconUsing:
+ pPosition->x = m_slotListHotbar.getXPos();
+ pPosition->y = m_slotListHotbar.getYPos();
+ break;
+
+ case eSectionBeaconPrimaryTierOneOne:
+ pPosition->x = m_buttonsPowers[eControl_Primary1].getXPos();
+ pPosition->y = m_buttonsPowers[eControl_Primary1].getYPos();
+ break;
+ case eSectionBeaconPrimaryTierOneTwo:
+ pPosition->x = m_buttonsPowers[eControl_Primary2].getXPos();
+ pPosition->y = m_buttonsPowers[eControl_Primary2].getYPos();
+ break;
+ case eSectionBeaconPrimaryTierTwoOne:
+ pPosition->x = m_buttonsPowers[eControl_Primary3].getXPos();
+ pPosition->y = m_buttonsPowers[eControl_Primary3].getYPos();
+ break;
+ case eSectionBeaconPrimaryTierTwoTwo:
+ pPosition->x = m_buttonsPowers[eControl_Primary4].getXPos();
+ pPosition->y = m_buttonsPowers[eControl_Primary4].getYPos();
+ break;
+ case eSectionBeaconPrimaryTierThree:
+ pPosition->x = m_buttonsPowers[eControl_Primary5].getXPos();
+ pPosition->y = m_buttonsPowers[eControl_Primary5].getYPos();
+ break;
+ case eSectionBeaconSecondaryOne:
+ pPosition->x = m_buttonsPowers[eControl_Secondary1].getXPos();
+ pPosition->y = m_buttonsPowers[eControl_Secondary1].getYPos();
+ break;
+ case eSectionBeaconSecondaryTwo:
+ pPosition->x = m_buttonsPowers[eControl_Secondary2].getXPos();
+ pPosition->y = m_buttonsPowers[eControl_Secondary2].getYPos();
+ break;
+ case eSectionBeaconConfirm:
+ pPosition->x = m_buttonConfirm.getXPos();
+ pPosition->y = m_buttonConfirm.getYPos();
+ break;
+ default:
+ assert( false );
+ break;
+ };
+}
+
+void UIScene_BeaconMenu::GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize )
+{
+ UIVec2D sectionSize;
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ sectionSize.x = m_slotListActivator.getWidth();
+ sectionSize.y = m_slotListActivator.getHeight();
+ break;
+ case eSectionBeaconInventory:
+ sectionSize.x = m_slotListInventory.getWidth();
+ sectionSize.y = m_slotListInventory.getHeight();
+ break;
+ case eSectionBeaconUsing:
+ sectionSize.x = m_slotListHotbar.getWidth();
+ sectionSize.y = m_slotListHotbar.getHeight();
+ break;
+
+ case eSectionBeaconPrimaryTierOneOne:
+ sectionSize.x = m_buttonsPowers[eControl_Primary1].getWidth();
+ sectionSize.y = m_buttonsPowers[eControl_Primary1].getHeight();
+ break;
+ case eSectionBeaconPrimaryTierOneTwo:
+ sectionSize.x = m_buttonsPowers[eControl_Primary2].getWidth();
+ sectionSize.y = m_buttonsPowers[eControl_Primary2].getHeight();
+ break;
+ case eSectionBeaconPrimaryTierTwoOne:
+ sectionSize.x = m_buttonsPowers[eControl_Primary3].getWidth();
+ sectionSize.y = m_buttonsPowers[eControl_Primary3].getHeight();
+ break;
+ case eSectionBeaconPrimaryTierTwoTwo:
+ sectionSize.x = m_buttonsPowers[eControl_Primary4].getWidth();
+ sectionSize.y = m_buttonsPowers[eControl_Primary4].getHeight();
+ break;
+ case eSectionBeaconPrimaryTierThree:
+ sectionSize.x = m_buttonsPowers[eControl_Primary5].getWidth();
+ sectionSize.y = m_buttonsPowers[eControl_Primary5].getHeight();
+ break;
+ case eSectionBeaconSecondaryOne:
+ sectionSize.x = m_buttonsPowers[eControl_Secondary1].getWidth();
+ sectionSize.y = m_buttonsPowers[eControl_Secondary1].getHeight();
+ break;
+ case eSectionBeaconSecondaryTwo:
+ sectionSize.x = m_buttonsPowers[eControl_Secondary2].getWidth();
+ sectionSize.y = m_buttonsPowers[eControl_Secondary2].getHeight();
+ break;
+ case eSectionBeaconConfirm:
+ sectionSize.x = m_buttonConfirm.getWidth();
+ sectionSize.y = m_buttonConfirm.getHeight();
+ break;
+ default:
+ assert( false );
+ break;
+ };
+
+ if(IsSectionSlotList(eSection))
+ {
+ int rows = getSectionRows(eSection);
+ int cols = getSectionColumns(eSection);
+
+ pSize->x = sectionSize.x/cols;
+ pSize->y = sectionSize.y/rows;
+
+ int itemCol = iItemIndex % cols;
+ int itemRow = iItemIndex/cols;
+
+ pPosition->x = itemCol * pSize->x;
+ pPosition->y = itemRow * pSize->y;
+ }
+ else
+ {
+ GetPositionOfSection(eSection, pPosition);
+ pSize->x = sectionSize.x;
+ pSize->y = sectionSize.y;
+ }
+}
+
+void UIScene_BeaconMenu::setSectionSelectedSlot(ESceneSection eSection, int x, int y)
+{
+ int cols = getSectionColumns(eSection);
+
+ int index = (y * cols) + x;
+
+ UIControl_SlotList *slotList = NULL;
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ slotList = &m_slotListActivator;
+ break;
+ case eSectionBeaconInventory:
+ slotList = &m_slotListInventory;
+ break;
+ case eSectionBeaconUsing:
+ slotList = &m_slotListHotbar;
+ break;
+ default:
+ assert( false );
+ break;
+ };
+
+ slotList->setHighlightSlot(index);
+}
+
+UIControl *UIScene_BeaconMenu::getSection(ESceneSection eSection)
+{
+ UIControl *control = NULL;
+ switch( eSection )
+ {
+ case eSectionBeaconItem:
+ control = &m_slotListActivator;
+ break;
+ case eSectionBeaconInventory:
+ control = &m_slotListInventory;
+ break;
+ case eSectionBeaconUsing:
+ control = &m_slotListHotbar;
+ break;
+
+ case eSectionBeaconPrimaryTierOneOne:
+ control = &m_buttonsPowers[eControl_Primary1];
+ break;
+ case eSectionBeaconPrimaryTierOneTwo:
+ control = &m_buttonsPowers[eControl_Primary2];
+ break;
+ case eSectionBeaconPrimaryTierTwoOne:
+ control = &m_buttonsPowers[eControl_Primary3];
+ break;
+ case eSectionBeaconPrimaryTierTwoTwo:
+ control = &m_buttonsPowers[eControl_Primary4];
+ break;
+ case eSectionBeaconPrimaryTierThree:
+ control = &m_buttonsPowers[eControl_Primary5];
+ break;
+ case eSectionBeaconSecondaryOne:
+ control = &m_buttonsPowers[eControl_Secondary1];
+ break;
+ case eSectionBeaconSecondaryTwo:
+ control = &m_buttonsPowers[eControl_Secondary2];
+ break;
+ case eSectionBeaconConfirm:
+ control = &m_buttonConfirm;
+ break;
+
+ default:
+ assert( false );
+ break;
+ };
+ return control;
+}
+
+void UIScene_BeaconMenu::customDraw(IggyCustomDrawCallbackRegion *region)
+{
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if(pMinecraft->localplayers[m_iPad] == NULL || pMinecraft->localgameModes[m_iPad] == NULL) return;
+
+ shared_ptr<ItemInstance> item = nullptr;
+ int slotId = -1;
+ swscanf((wchar_t*)region->name,L"slot_%d",&slotId);
+
+ if(slotId >= 0 && slotId >= m_menu->getSize() )
+ {
+ int icon = slotId - m_menu->getSize();
+ switch(icon)
+ {
+ case 0:
+ item = shared_ptr<ItemInstance>(new ItemInstance(Item::emerald) );
+ break;
+ case 1:
+ item = shared_ptr<ItemInstance>(new ItemInstance(Item::diamond) );
+ break;
+ case 2:
+ item = shared_ptr<ItemInstance>(new ItemInstance(Item::goldIngot) );
+ break;
+ case 3:
+ item = shared_ptr<ItemInstance>(new ItemInstance(Item::ironIngot) );
+ break;
+ default:
+ assert(false);
+ break;
+ };
+ if(item != NULL) customDrawSlotControl(region,m_iPad,item,1.0f,item->isFoil(),true);
+ }
+ else
+ {
+ UIScene_AbstractContainerMenu::customDraw(region);
+ }
+}
+
+void UIScene_BeaconMenu::SetConfirmButtonEnabled(bool enabled)
+{
+ m_buttonConfirm.SetButtonActive(enabled);
+}
+
+void UIScene_BeaconMenu::AddPowerButton(int id, int icon, int tier, int count, bool active, bool selected)
+{
+ switch(tier)
+ {
+ case 0:
+ if(count == 0)
+ {
+ m_buttonsPowers[eControl_Primary1].SetData(id, icon,active,selected);
+ m_buttonsPowers[eControl_Primary1].setVisible(true);
+ }
+ else
+ {
+ m_buttonsPowers[eControl_Primary2].SetData(id, icon,active,selected);
+ m_buttonsPowers[eControl_Primary2].setVisible(true);
+ }
+ break;
+ case 1:
+ if(count == 0)
+ {
+ m_buttonsPowers[eControl_Primary3].SetData(id, icon,active,selected);
+ m_buttonsPowers[eControl_Primary3].setVisible(true);
+ }
+ else
+ {
+ m_buttonsPowers[eControl_Primary4].SetData(id, icon,active,selected);
+ m_buttonsPowers[eControl_Primary4].setVisible(true);
+ }
+ break;
+ case 2:
+ m_buttonsPowers[eControl_Primary5].SetData(id, icon,active,selected);
+ m_buttonsPowers[eControl_Primary5].setVisible(true);
+ break;
+ case 3:
+ if(count == 0)
+ {
+ m_buttonsPowers[eControl_Secondary1].SetData(id, icon,active,selected);
+ m_buttonsPowers[eControl_Secondary1].setVisible(true);
+ }
+ else
+ {
+ m_buttonsPowers[eControl_Secondary2].SetData(id, icon,active,selected);
+ m_buttonsPowers[eControl_Secondary2].setVisible(true);
+ }
+ break;
+ };
+}
+
+int UIScene_BeaconMenu::GetPowerButtonId(ESceneSection eSection)
+{
+ switch(eSection)
+ {
+ case eSectionBeaconPrimaryTierOneOne:
+ return m_buttonsPowers[eControl_Primary1].GetData();
+ break;
+ case eSectionBeaconPrimaryTierOneTwo:
+ return m_buttonsPowers[eControl_Primary2].GetData();
+ break;
+ case eSectionBeaconPrimaryTierTwoOne:
+ return m_buttonsPowers[eControl_Primary3].GetData();
+ break;
+ case eSectionBeaconPrimaryTierTwoTwo:
+ return m_buttonsPowers[eControl_Primary4].GetData();
+ break;
+ case eSectionBeaconPrimaryTierThree:
+ return m_buttonsPowers[eControl_Primary5].GetData();
+ break;
+ case eSectionBeaconSecondaryOne:
+ return m_buttonsPowers[eControl_Secondary1].GetData();
+ break;
+ case eSectionBeaconSecondaryTwo:
+ return m_buttonsPowers[eControl_Secondary2].GetData();
+ break;
+ };
+ return 0;
+}
+
+bool UIScene_BeaconMenu::IsPowerButtonSelected(ESceneSection eSection)
+{
+ switch(eSection)
+ {
+ case eSectionBeaconPrimaryTierOneOne:
+ return m_buttonsPowers[eControl_Primary1].IsButtonSelected();
+ break;
+ case eSectionBeaconPrimaryTierOneTwo:
+ return m_buttonsPowers[eControl_Primary2].IsButtonSelected();
+ break;
+ case eSectionBeaconPrimaryTierTwoOne:
+ return m_buttonsPowers[eControl_Primary3].IsButtonSelected();
+ break;
+ case eSectionBeaconPrimaryTierTwoTwo:
+ return m_buttonsPowers[eControl_Primary4].IsButtonSelected();
+ break;
+ case eSectionBeaconPrimaryTierThree:
+ return m_buttonsPowers[eControl_Primary5].IsButtonSelected();
+ break;
+ case eSectionBeaconSecondaryOne:
+ return m_buttonsPowers[eControl_Secondary1].IsButtonSelected();
+ break;
+ case eSectionBeaconSecondaryTwo:
+ return m_buttonsPowers[eControl_Secondary2].IsButtonSelected();
+ break;
+ };
+ return false;
+}
+
+void UIScene_BeaconMenu::SetPowerButtonSelected(ESceneSection eSection)
+{
+ switch(eSection)
+ {
+ case eSectionBeaconPrimaryTierOneOne:
+ case eSectionBeaconPrimaryTierOneTwo:
+ case eSectionBeaconPrimaryTierTwoOne:
+ case eSectionBeaconPrimaryTierTwoTwo:
+ case eSectionBeaconPrimaryTierThree:
+ m_buttonsPowers[eControl_Primary1].SetButtonSelected(false);
+ m_buttonsPowers[eControl_Primary2].SetButtonSelected(false);
+ m_buttonsPowers[eControl_Primary3].SetButtonSelected(false);
+ m_buttonsPowers[eControl_Primary4].SetButtonSelected(false);
+ m_buttonsPowers[eControl_Primary5].SetButtonSelected(false);
+ break;
+ case eSectionBeaconSecondaryOne:
+ case eSectionBeaconSecondaryTwo:
+ m_buttonsPowers[eControl_Secondary1].SetButtonSelected(false);
+ m_buttonsPowers[eControl_Secondary2].SetButtonSelected(false);
+ break;
+ };
+
+
+ switch(eSection)
+ {
+ case eSectionBeaconPrimaryTierOneOne:
+ return m_buttonsPowers[eControl_Primary1].SetButtonSelected(true);
+ break;
+ case eSectionBeaconPrimaryTierOneTwo:
+ return m_buttonsPowers[eControl_Primary2].SetButtonSelected(true);
+ break;
+ case eSectionBeaconPrimaryTierTwoOne:
+ return m_buttonsPowers[eControl_Primary3].SetButtonSelected(true);
+ break;
+ case eSectionBeaconPrimaryTierTwoTwo:
+ return m_buttonsPowers[eControl_Primary4].SetButtonSelected(true);
+ break;
+ case eSectionBeaconPrimaryTierThree:
+ return m_buttonsPowers[eControl_Primary5].SetButtonSelected(true);
+ break;
+ case eSectionBeaconSecondaryOne:
+ return m_buttonsPowers[eControl_Secondary1].SetButtonSelected(true);
+ break;
+ case eSectionBeaconSecondaryTwo:
+ return m_buttonsPowers[eControl_Secondary2].SetButtonSelected(true);
+ break;
+ };
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_BeaconMenu.h b/Minecraft.Client/Common/UI/UIScene_BeaconMenu.h
new file mode 100644
index 00000000..ccd9366f
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_BeaconMenu.h
@@ -0,0 +1,71 @@
+#pragma once
+
+#include "UIScene_AbstractContainerMenu.h"
+#include "UIControl_SlotList.h"
+#include "IUIScene_BeaconMenu.h"
+
+class UIScene_BeaconMenu : public UIScene_AbstractContainerMenu, public IUIScene_BeaconMenu
+{
+private:
+ enum EControls
+ {
+ eControl_Primary1,
+ eControl_Primary2,
+ eControl_Primary3,
+ eControl_Primary4,
+ eControl_Primary5,
+ eControl_Secondary1,
+ eControl_Secondary2,
+
+ eControl_EFFECT_COUNT,
+ };
+public:
+ UIScene_BeaconMenu(int iPad, void *initData, UILayer *parentLayer);
+
+ virtual EUIScene getSceneType() { return eUIScene_BeaconMenu;}
+
+protected:
+ UIControl_SlotList m_slotListActivator;
+ UIControl_SlotList m_slotListActivatorIcons;
+ UIControl_Label m_labelPrimary, m_labelSecondary;
+ UIControl_BeaconEffectButton m_buttonsPowers[eControl_EFFECT_COUNT];
+ UIControl_BeaconEffectButton m_buttonConfirm;
+
+ UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene_AbstractContainerMenu)
+ UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlMainPanel )
+ UI_MAP_ELEMENT( m_slotListActivator, "ActivatorSlot")
+ UI_MAP_ELEMENT( m_slotListActivatorIcons, "ActivatorList")
+ UI_MAP_ELEMENT( m_buttonsPowers[eControl_Primary1], "Primary_Slot_01")
+ UI_MAP_ELEMENT( m_buttonsPowers[eControl_Primary2], "Primary_Slot_02")
+ UI_MAP_ELEMENT( m_buttonsPowers[eControl_Primary3], "Primary_Slot_03")
+ UI_MAP_ELEMENT( m_buttonsPowers[eControl_Primary4], "Primary_Slot_04")
+ UI_MAP_ELEMENT( m_buttonsPowers[eControl_Primary5], "Primary_Slot_05")
+ UI_MAP_ELEMENT( m_buttonsPowers[eControl_Secondary1], "Secondary_Slot_01")
+ UI_MAP_ELEMENT( m_buttonsPowers[eControl_Secondary2], "Secondary_Slot_02")
+ UI_MAP_ELEMENT( m_buttonConfirm, "ConfirmButton")
+ UI_MAP_ELEMENT( m_labelPrimary, "PrimaryPowerLabel")
+ UI_MAP_ELEMENT( m_labelSecondary, "SecondaryPowerLabel")
+ UI_END_MAP_CHILD_ELEMENTS()
+ UI_END_MAP_ELEMENTS_AND_NAMES()
+
+ virtual wstring getMoviePath();
+ virtual void handleReload();
+ virtual void tick();
+ virtual int GetBaseSlotCount() { return 4; }
+
+ virtual int getSectionColumns(ESceneSection eSection);
+ virtual int getSectionRows(ESceneSection eSection);
+ virtual void GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition );
+ virtual void GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize );
+ virtual void handleSectionClick(ESceneSection eSection) {}
+ virtual void setSectionSelectedSlot(ESceneSection eSection, int x, int y);
+
+ virtual UIControl *getSection(ESceneSection eSection);
+ virtual void customDraw(IggyCustomDrawCallbackRegion *region);
+
+ virtual void SetConfirmButtonEnabled(bool enabled);
+ virtual void AddPowerButton(int id, int icon, int tier, int count, bool active, bool selected);
+ virtual int GetPowerButtonId(ESceneSection eSection);
+ virtual bool IsPowerButtonSelected(ESceneSection eSection);
+ virtual void SetPowerButtonSelected(ESceneSection eSection);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_BrewingStandMenu.cpp b/Minecraft.Client/Common/UI/UIScene_BrewingStandMenu.cpp
index cd56bd84..8563054c 100644
--- a/Minecraft.Client/Common/UI/UIScene_BrewingStandMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_BrewingStandMenu.cpp
@@ -14,11 +14,11 @@ UIScene_BrewingStandMenu::UIScene_BrewingStandMenu(int iPad, void *_initData, UI
m_progressBrewingArrow.init(L"",0,0,PotionBrewing::BREWING_TIME_SECONDS * SharedConstants::TICKS_PER_SECOND,0);
m_progressBrewingBubbles.init(L"",0,0,30,0);
- m_labelBrewingStand.init( app.GetString(IDS_BREWING_STAND) );
-
BrewingScreenInput *initData = (BrewingScreenInput *)_initData;
m_brewingStand = initData->brewingStand;
+ m_labelBrewingStand.init( m_brewingStand->getName() );
+
Minecraft *pMinecraft = Minecraft::GetInstance();
if( pMinecraft->localgameModes[initData->iPad] != NULL )
{
diff --git a/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp b/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp
index 0ea99a36..968072a8 100644
--- a/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_ConnectingProgress.cpp
@@ -188,7 +188,7 @@ void UIScene_ConnectingProgress::handleTimerComplete(int id)
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_CONNECTION_FAILED, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_CONNECTION_FAILED, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad());
exitReasonStringId = -1;
//app.NavigateToHomeMenu();
diff --git a/Minecraft.Client/Common/UI/UIScene_ContainerMenu.cpp b/Minecraft.Client/Common/UI/UIScene_ContainerMenu.cpp
index a0b25d18..9e48a57b 100644
--- a/Minecraft.Client/Common/UI/UIScene_ContainerMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_ContainerMenu.cpp
@@ -19,7 +19,7 @@ UIScene_ContainerMenu::UIScene_ContainerMenu(int iPad, void *_initData, UILayer
// Setup all the Iggy references we need for this scene
initialiseMovie();
- m_labelChest.init(app.GetString(initData->container->getName()));
+ m_labelChest.init(initData->container->getName());
ContainerMenu* menu = new ContainerMenu( initData->inventory, initData->container );
diff --git a/Minecraft.Client/Common/UI/UIScene_ControlsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_ControlsMenu.cpp
index c05b502e..57567248 100644
--- a/Minecraft.Client/Common/UI/UIScene_ControlsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_ControlsMenu.cpp
@@ -37,7 +37,7 @@ UIScene_ControlsMenu::UIScene_ControlsMenu(int iPad, void *initData, UILayer *pa
// 4J-PB - stop the label showing in the in-game controls menu
else
{
- m_labelVersion.init(" ");
+ m_labelVersion.init(L" ");
}
m_bCreativeMode = !bNotInGame && Minecraft::GetInstance()->localplayers[m_iPad] && Minecraft::GetInstance()->localplayers[m_iPad]->abilities.mayfly;
diff --git a/Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp b/Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp
index 5b729069..66d8c41e 100644
--- a/Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_CraftingMenu.cpp
@@ -197,7 +197,10 @@ void UIScene_CraftingMenu::handleDestroy()
}
// We need to make sure that we call closeContainer() anytime this menu is closed, even if it is forced to close by some other reason (like the player dying)
- if(Minecraft::GetInstance()->localplayers[m_iPad] != NULL) Minecraft::GetInstance()->localplayers[m_iPad]->closeContainer();
+ if(Minecraft::GetInstance()->localplayers[m_iPad] != NULL && Minecraft::GetInstance()->localplayers[m_iPad]->containerMenu->containerId == m_menu->containerId)
+ {
+ Minecraft::GetInstance()->localplayers[m_iPad]->closeContainer();
+ }
ui.OverrideSFX(m_iPad,ACTION_MENU_A,false);
ui.OverrideSFX(m_iPad,ACTION_MENU_OK,false);
@@ -763,6 +766,21 @@ void UIScene_CraftingMenu::updateHighlightAndScrollPositions()
}
}
+void UIScene_CraftingMenu::HandleMessage(EUIMessage message, void *data)
+{
+ switch(message)
+ {
+ case eUIMessage_InventoryUpdated:
+ handleInventoryUpdated(data);
+ break;
+ };
+}
+
+void UIScene_CraftingMenu::handleInventoryUpdated(LPVOID data)
+{
+ HandleInventoryUpdated();
+}
+
void UIScene_CraftingMenu::updateVSlotPositions(int iSlots, int i)
{
// Not needed
diff --git a/Minecraft.Client/Common/UI/UIScene_CraftingMenu.h b/Minecraft.Client/Common/UI/UIScene_CraftingMenu.h
index 44a39d61..84c9ba65 100644
--- a/Minecraft.Client/Common/UI/UIScene_CraftingMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_CraftingMenu.h
@@ -202,4 +202,10 @@ protected:
virtual void updateVSlotPositions(int iSlots, int i);
virtual void UpdateMultiPanel();
+
+ virtual void HandleMessage(EUIMessage message, void *data);
+ void handleInventoryUpdated(LPVOID data);
+
+ // 4J - TomK If update tooltips is called then make sure the correct parent is invoked! (both UIScene AND IUIScene_CraftingMenu have an instance of said function!)
+ virtual void updateTooltips() { IUIScene_CraftingMenu::UpdateTooltips(); }
};
diff --git a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp
index a9ff02f5..f2ecd0d4 100644
--- a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.cpp
@@ -45,11 +45,8 @@ UIScene_CreateWorldMenu::UIScene_CreateWorldMenu(int iPad, void *initData, UILay
m_iPad=iPad;
m_labelWorldName.init(app.GetString(IDS_WORLD_NAME));
- m_labelSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_SEED));
- m_labelRandomSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_RANDOM_SEED));
m_editWorldName.init(m_worldName, eControl_EditWorldName);
- m_editSeed.init(L"", eControl_EditSeed);
m_buttonGamemode.init(app.GetString(IDS_GAMEMODE_SURVIVAL),eControl_GameModeToggle);
m_buttonMoreOptions.init(app.GetString(IDS_MORE_OPTIONS),eControl_MoreOptions);
@@ -75,7 +72,16 @@ UIScene_CreateWorldMenu::UIScene_CreateWorldMenu(int iPad, void *initData, UILay
m_MoreOptionsParams.bTNT = TRUE;
m_MoreOptionsParams.iPad = iPad;
- m_bGameModeSurvival=true;
+ m_MoreOptionsParams.bMobGriefing = true;
+ m_MoreOptionsParams.bKeepInventory = false;
+ m_MoreOptionsParams.bDoMobSpawning = true;
+ m_MoreOptionsParams.bDoMobLoot = true;
+ m_MoreOptionsParams.bDoTileDrops = true;
+ m_MoreOptionsParams.bNaturalRegeneration = true;
+ m_MoreOptionsParams.bDoDaylightCycle = true;
+
+ m_bGameModeCreative = false;
+ m_iGameModeId = GameType::SURVIVAL->getId();
m_pDLCPack = NULL;
m_bRebuildTouchBoxes = false;
@@ -121,28 +127,23 @@ UIScene_CreateWorldMenu::UIScene_CreateWorldMenu(int iPad, void *initData, UILay
}
}
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
- {
- // Set up online game checkbox
- bool bOnlineGame = m_MoreOptionsParams.bOnlineGame;
- m_checkboxOnline.SetEnable(true);
-
- // 4J-PB - to stop an offline game being able to select the online flag
- if(ProfileManager.IsSignedInLive(m_iPad) == false)
- {
- m_checkboxOnline.SetEnable(false);
- }
+ // Set up online game checkbox
+ bool bOnlineGame = m_MoreOptionsParams.bOnlineGame;
+ m_checkboxOnline.SetEnable(true);
- if(m_MoreOptionsParams.bOnlineSettingChangedBySystem)
- {
- m_checkboxOnline.SetEnable(false);
- bOnlineGame = false;
- }
+ // 4J-PB - to stop an offline game being able to select the online flag
+ if(ProfileManager.IsSignedInLive(m_iPad) == false)
+ {
+ m_checkboxOnline.SetEnable(false);
+ }
- m_checkboxOnline.init(app.GetString(IDS_ONLINE_GAME), eControl_OnlineGame, bOnlineGame);
+ if(m_MoreOptionsParams.bOnlineSettingChangedBySystem)
+ {
+ m_checkboxOnline.SetEnable(false);
+ bOnlineGame = false;
}
-#endif
+
+ m_checkboxOnline.init(app.GetString(IDS_ONLINE_GAME), eControl_OnlineGame, bOnlineGame);
addTimer( GAME_CREATE_ONLINE_TIMER_ID,GAME_CREATE_ONLINE_TIMER_TIME );
#if TO_BE_IMPLEMENTED
@@ -176,6 +177,7 @@ UIScene_CreateWorldMenu::UIScene_CreateWorldMenu(int iPad, void *initData, UILay
swprintf(imageName,64,L"tpack%08x",tp->getId());
registerSubstitutionTexture(imageName, pbImageData, dwImageBytes);
m_texturePackList.addPack(i,imageName);
+ app.DebugPrintf("Adding texture pack %ls at %d\n",imageName,i);
}
}
@@ -323,7 +325,7 @@ void UIScene_CreateWorldMenu::tick()
uiIDA[0]=IDS_PRO_NOTONLINE_DECLINE;
// Give the player a warning about the texture pack missing
- ui.RequestMessageBox(IDS_PLAY_OFFLINE,IDS_NO_PLAYSTATIONPLUS, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_CreateWorldMenu::ContinueOffline,dynamic_cast<UIScene_CreateWorldMenu*>(this),app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_PLAY_OFFLINE,IDS_NO_PLAYSTATIONPLUS, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_CreateWorldMenu::ContinueOffline,dynamic_cast<UIScene_CreateWorldMenu*>(this));
}
}
break;
@@ -374,7 +376,7 @@ void UIScene_CreateWorldMenu::handleInput(int iPad, int key, bool repeat, bool p
if ( pressed && controlHasFocus(m_checkboxOnline.getId()) && !m_checkboxOnline.IsEnabled() )
{
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad);
}
#endif
@@ -386,22 +388,17 @@ void UIScene_CreateWorldMenu::handleInput(int iPad, int key, bool repeat, bool p
case ACTION_MENU_OTHER_STICK_DOWN:
sendInputToMovie(key, repeat, pressed, released);
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
+ bool bOnlineGame = m_checkboxOnline.IsChecked();
+ if (m_MoreOptionsParams.bOnlineGame != bOnlineGame)
{
- bool bOnlineGame = m_checkboxOnline.IsChecked();
- if (m_MoreOptionsParams.bOnlineGame != bOnlineGame)
- {
- m_MoreOptionsParams.bOnlineGame = bOnlineGame;
+ m_MoreOptionsParams.bOnlineGame = bOnlineGame;
- if (!m_MoreOptionsParams.bOnlineGame)
- {
- m_MoreOptionsParams.bInviteOnly = false;
- m_MoreOptionsParams.bAllowFriendsOfFriends = false;
- }
+ if (!m_MoreOptionsParams.bOnlineGame)
+ {
+ m_MoreOptionsParams.bInviteOnly = false;
+ m_MoreOptionsParams.bAllowFriendsOfFriends = false;
}
}
-#endif
handled = true;
break;
@@ -423,39 +420,20 @@ void UIScene_CreateWorldMenu::handlePress(F64 controlId, F64 childId)
InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD),m_editWorldName.getLabel(),(DWORD)0,25,&UIScene_CreateWorldMenu::KeyboardCompleteWorldNameCallback,this,C_4JInput::EKeyboardMode_Default);
}
break;
- case eControl_EditSeed:
- {
- m_bIgnoreInput=true;
-#ifdef __PS3__
- int language = XGetLanguage();
- switch(language)
- {
- case XC_LANGUAGE_JAPANESE:
- case XC_LANGUAGE_KOREAN:
- case XC_LANGUAGE_TCHINESE:
- InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD_SEED),m_editSeed.getLabel(),(DWORD)0,60,&UIScene_CreateWorldMenu::KeyboardCompleteSeedCallback,this,C_4JInput::EKeyboardMode_Default);
- break;
- default:
- // 4J Stu - Use a different keyboard for non-asian languages so we don't have prediction on
- InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD_SEED),m_editSeed.getLabel(),(DWORD)0,60,&UIScene_CreateWorldMenu::KeyboardCompleteSeedCallback,this,C_4JInput::EKeyboardMode_Alphabet_Extended);
- break;
- }
-#else
- InputManager.RequestKeyboard(app.GetString(IDS_CREATE_NEW_WORLD_SEED),m_editSeed.getLabel(),(DWORD)0,60,&UIScene_CreateWorldMenu::KeyboardCompleteSeedCallback,this,C_4JInput::EKeyboardMode_Default);
-#endif
- }
- break;
case eControl_GameModeToggle:
- if(m_bGameModeSurvival)
+ switch(m_iGameModeId)
{
+ case 0: // Survival
m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_CREATIVE));
- m_bGameModeSurvival=false;
- }
- else
- {
+ m_iGameModeId = GameType::CREATIVE->getId();
+ m_bGameModeCreative = true;
+ break;
+ case 1: // Creative
m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_SURVIVAL));
- m_bGameModeSurvival=true;
- }
+ m_iGameModeId = GameType::SURVIVAL->getId();
+ m_bGameModeCreative = false;
+ break;
+ };
break;
case eControl_MoreOptions:
ui.NavigateToScene(m_iPad, eUIScene_LaunchMoreOptionsMenu, &m_MoreOptionsParams);
@@ -533,7 +511,7 @@ void UIScene_CreateWorldMenu::StartSharedLaunchFlow()
uiIDA[1]=IDS_CONFIRM_CANCEL;
// Give the player a warning about the texture pack missing
- ui.RequestMessageBox(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&TexturePackDialogReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&TexturePackDialogReturned,this);
return;
}
}
@@ -603,13 +581,13 @@ void UIScene_CreateWorldMenu::StartSharedLaunchFlow()
// trial pack warning
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 1, m_iPad,&TrialTexturePackWarningReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 1, m_iPad,&TrialTexturePackWarningReturned,this);
#elif defined __PS3__ || defined __ORBIS__ || defined(__PSVITA__)
// trial pack warning
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 2, m_iPad,&TrialTexturePackWarningReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 2, m_iPad,&TrialTexturePackWarningReturned,this);
#endif
#if defined _XBOX_ONE || defined __ORBIS__
@@ -684,13 +662,9 @@ void UIScene_CreateWorldMenu::handleTimerComplete(int id)
m_MoreOptionsParams.bAllowFriendsOfFriends = FALSE;
}
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
- {
- m_checkboxOnline.SetEnable(bMultiplayerAllowed);
- m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame);
- }
-#endif
+ m_checkboxOnline.SetEnable(bMultiplayerAllowed);
+ m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame);
+
m_bMultiplayerAllowed = bMultiplayerAllowed;
}
}
@@ -742,13 +716,7 @@ void UIScene_CreateWorldMenu::handleGainFocus(bool navBack)
{
if(navBack)
{
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
- {
- m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame);
- }
- m_editSeed.setLabel(m_MoreOptionsParams.seed);
-#endif
+ m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame);
}
}
@@ -774,28 +742,6 @@ int UIScene_CreateWorldMenu::KeyboardCompleteWorldNameCallback(LPVOID lpParam,bo
return 0;
}
-int UIScene_CreateWorldMenu::KeyboardCompleteSeedCallback(LPVOID lpParam,bool bRes)
-{
- UIScene_CreateWorldMenu *pClass=(UIScene_CreateWorldMenu *)lpParam;
- pClass->m_bIgnoreInput=false;
- // 4J HEG - No reason to set value if keyboard was cancelled
- if (bRes)
- {
-#ifdef __PSVITA__
- //CD - Changed to 2048 [SCE_IME_MAX_TEXT_LENGTH]
- uint16_t pchText[2048];
- ZeroMemory(pchText, 2048 * sizeof(uint16_t) );
-#else
- uint16_t pchText[128];
- ZeroMemory(pchText, 128 * sizeof(uint16_t) );
-#endif
- InputManager.GetText(pchText);
- pClass->m_editSeed.setLabel((wchar_t *)pchText);
- pClass->m_MoreOptionsParams.seed = (wchar_t *)pchText;
- }
- return 0;
-}
-
void UIScene_CreateWorldMenu::checkStateAndStartGame()
{
int primaryPad = ProfileManager.GetPrimaryPad();
@@ -832,7 +778,7 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive if the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive);
}
else
{
@@ -840,7 +786,7 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
UINT uiIDA[2];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1] = IDS_CANCEL;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_CreateWorldMenu::MustSignInReturnedPSN, this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_CreateWorldMenu::MustSignInReturnedPSN, this);
}
return;
/* 4J-PB - Add this after release
@@ -852,21 +798,21 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
// Signed in to PSN but not connected (no internet access)
UINT uiIDA[1];
uiIDA[0] = IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_PRO_CURRENTLY_NOT_ONLINE_TITLE, IDS_PRO_PSNOFFLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_CURRENTLY_NOT_ONLINE_TITLE, IDS_PRO_PSNOFFLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad());
return;
}*/
#else
m_bIgnoreInput=false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
return;
#endif
}
@@ -894,6 +840,16 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
{
m_bIgnoreInput=false;
+ if(ProfileManager.RequestingPlaystationPlus(iPadWithNoPlaystationPlus))
+ {
+ // MGH - added this so we don't try and upsell when we don't know if the player has PS Plus yet (if it can't connect to the PS Plus server).
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_OK;
+ ui.RequestAlertMessage(IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL, NULL);
+ return;
+ }
+
+
// 4J-PB - we're not allowed to show the text Playstation Plus - have to call the upsell all the time!
// upsell psplus
int32_t iResult=sceNpCommerceDialogInitialize();
@@ -915,18 +871,18 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
}
#endif
- if(m_bGameModeSurvival != true || m_MoreOptionsParams.bHostPrivileges == TRUE)
+ if(m_bGameModeCreative == true || m_MoreOptionsParams.bHostPrivileges == TRUE)
{
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- if(m_bGameModeSurvival != true)
+ if(m_bGameModeCreative == true)
{
- ui.RequestMessageBox(IDS_TITLE_START_GAME, IDS_CONFIRM_START_CREATIVE, uiIDA, 2, m_iPad,&UIScene_CreateWorldMenu::ConfirmCreateReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TITLE_START_GAME, IDS_CONFIRM_START_CREATIVE, uiIDA, 2, m_iPad,&UIScene_CreateWorldMenu::ConfirmCreateReturned,this);
}
else
{
- ui.RequestMessageBox(IDS_TITLE_START_GAME, IDS_CONFIRM_START_HOST_PRIVILEGES, uiIDA, 2, m_iPad,&UIScene_CreateWorldMenu::ConfirmCreateReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TITLE_START_GAME, IDS_CONFIRM_START_HOST_PRIVILEGES, uiIDA, 2, m_iPad,&UIScene_CreateWorldMenu::ConfirmCreateReturned,this);
}
}
else
@@ -973,6 +929,15 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
{
m_bIgnoreInput=false;
+ if(ProfileManager.RequestingPlaystationPlus(iPadWithNoPlaystationPlus))
+ {
+ // MGH - added this so we don't try and upsell when we don't know if the player has PS Plus yet (if it can't connect to the PS Plus server).
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_OK;
+ ui.RequestAlertMessage(IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL, NULL);
+ return;
+ }
+
// 4J-PB - we're not allowed to show the text Playstation Plus - have to call the upsell all the time!
// upsell psplus
int32_t iResult=sceNpCommerceDialogInitialize();
@@ -1024,6 +989,16 @@ void UIScene_CreateWorldMenu::checkStateAndStartGame()
else if(isOnlineGame && isSignedInLive && (bPlayStationPlus==false))
{
m_bIgnoreInput=false;
+ if(ProfileManager.RequestingPlaystationPlus(iPadWithNoPlaystationPlus))
+ {
+ // MGH - added this so we don't try and upsell when we don't know if the player has PS Plus yet (if it can't connect to the PS Plus server).
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_OK;
+ ui.RequestAlertMessage(IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL, NULL);
+ return;
+ }
+
+
setVisible( true );
// 4J-PB - we're not allowed to show the text Playstation Plus - have to call the upsell all the time!
@@ -1165,7 +1140,7 @@ void UIScene_CreateWorldMenu::CreateGame(UIScene_CreateWorldMenu* pClass, DWORD
app.SetGameHostOption(eGameHostOption_BedrockFog,app.GetGameSettings(pClass->m_iPad,eGameSetting_BedrockFog)?1:0);
- app.SetGameHostOption(eGameHostOption_GameType,pClass->m_bGameModeSurvival?GameType::SURVIVAL->getId():GameType::CREATIVE->getId() );
+ app.SetGameHostOption(eGameHostOption_GameType,pClass->m_iGameModeId );
app.SetGameHostOption(eGameHostOption_LevelType,pClass->m_MoreOptionsParams.bFlatWorld );
app.SetGameHostOption(eGameHostOption_Structures,pClass->m_MoreOptionsParams.bStructures );
app.SetGameHostOption(eGameHostOption_BonusChest,pClass->m_MoreOptionsParams.bBonusChest );
@@ -1177,6 +1152,21 @@ void UIScene_CreateWorldMenu::CreateGame(UIScene_CreateWorldMenu* pClass, DWORD
app.SetGameHostOption(eGameHostOption_HostCanFly,pClass->m_MoreOptionsParams.bHostPrivileges);
app.SetGameHostOption(eGameHostOption_HostCanChangeHunger,pClass->m_MoreOptionsParams.bHostPrivileges);
app.SetGameHostOption(eGameHostOption_HostCanBeInvisible,pClass->m_MoreOptionsParams.bHostPrivileges );
+
+ app.SetGameHostOption(eGameHostOption_MobGriefing, pClass->m_MoreOptionsParams.bMobGriefing);
+ app.SetGameHostOption(eGameHostOption_KeepInventory, pClass->m_MoreOptionsParams.bKeepInventory);
+ app.SetGameHostOption(eGameHostOption_DoMobSpawning, pClass->m_MoreOptionsParams.bDoMobSpawning);
+ app.SetGameHostOption(eGameHostOption_DoMobLoot, pClass->m_MoreOptionsParams.bDoMobLoot);
+ app.SetGameHostOption(eGameHostOption_DoTileDrops, pClass->m_MoreOptionsParams.bDoTileDrops);
+ app.SetGameHostOption(eGameHostOption_NaturalRegeneration, pClass->m_MoreOptionsParams.bNaturalRegeneration);
+ app.SetGameHostOption(eGameHostOption_DoDaylightCycle, pClass->m_MoreOptionsParams.bDoDaylightCycle);
+
+ app.SetGameHostOption(eGameHostOption_WasntSaveOwner, false);
+#ifdef _LARGE_WORLDS
+ app.SetGameHostOption(eGameHostOption_WorldSize, pClass->m_MoreOptionsParams.worldSize+1 ); // 0 is GAME_HOST_OPTION_WORLDSIZE_UNKNOWN
+ pClass->m_MoreOptionsParams.currentWorldSize = (EGameHostOptionWorldSize)(pClass->m_MoreOptionsParams.worldSize+1);
+ pClass->m_MoreOptionsParams.newWorldSize = (EGameHostOptionWorldSize)(pClass->m_MoreOptionsParams.worldSize+1);
+#endif
g_NetworkManager.HostGame(dwLocalUsersMask,isClientSide,isPrivate,MINECRAFT_NET_MAX_PLAYERS,0);
@@ -1187,26 +1177,23 @@ void UIScene_CreateWorldMenu::CreateGame(UIScene_CreateWorldMenu* pClass, DWORD
{
case 0:
// Classic
- param->xzSize = 1 * 54;
- param->hellScale = 3;
+ param->xzSize = LEVEL_WIDTH_CLASSIC;
+ param->hellScale = HELL_LEVEL_SCALE_CLASSIC; // hellsize = 54/3 = 18
break;
case 1:
// Small
- param->xzSize = 1 * 64;
- param->hellScale = 3;
+ param->xzSize = LEVEL_WIDTH_SMALL;
+ param->hellScale = HELL_LEVEL_SCALE_SMALL; // hellsize = ceil(64/3) = 22
break;
case 2:
// Medium
- param->xzSize = 3 * 64;
- param->hellScale = 6;
+ param->xzSize = LEVEL_WIDTH_MEDIUM;
+ param->hellScale = HELL_LEVEL_SCALE_MEDIUM; // hellsize= ceil(3*64/6) = 32
break;
case 3:
- //param->xzSize = 5 * 64;
- //param->hellScale = 8;
-
// Large
- param->xzSize = LEVEL_MAX_WIDTH;
- param->hellScale = HELL_LEVEL_MAX_SCALE;
+ param->xzSize = LEVEL_WIDTH_LARGE;
+ param->hellScale = HELL_LEVEL_SCALE_LARGE; // hellsize = ceil(5*64/8) = 40
break;
};
#else
@@ -1284,7 +1271,7 @@ int UIScene_CreateWorldMenu::StartGame_SignInReturned(void *pParam,bool bContinu
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive if the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive);
}
else
{
@@ -1292,14 +1279,14 @@ int UIScene_CreateWorldMenu::StartGame_SignInReturned(void *pParam,bool bContinu
UINT uiIDA[2];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1] = IDS_CANCEL;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_CreateWorldMenu::MustSignInReturnedPSN, pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_CreateWorldMenu::MustSignInReturnedPSN, pClass);
}
return 0;
#else
pClass->m_bIgnoreInput=false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
return 0;
#endif
}
@@ -1319,14 +1306,14 @@ int UIScene_CreateWorldMenu::StartGame_SignInReturned(void *pParam,bool bContinu
pClass->m_bIgnoreInput = false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_FAILED_TO_CREATE_GAME_TITLE, IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_FAILED_TO_CREATE_GAME_TITLE, IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE, uiIDA,1,ProfileManager.GetPrimaryPad());
}
else
{
pClass->m_bIgnoreInput = false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
}
}
else
@@ -1390,7 +1377,7 @@ int UIScene_CreateWorldMenu::ConfirmCreateReturned(void *pParam,int iPad,C4JStor
pClass->m_bIgnoreInput = false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_FAILED_TO_CREATE_GAME_TITLE, IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_FAILED_TO_CREATE_GAME_TITLE, IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE, uiIDA,1,ProfileManager.GetPrimaryPad());
}
else
{
diff --git a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h
index ebb383e8..d6ae1c04 100644
--- a/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_CreateWorldMenu.h
@@ -8,7 +8,6 @@ private:
enum EControls
{
eControl_EditWorldName,
- eControl_EditSeed,
eControl_TexturePackList,
eControl_GameModeToggle,
eControl_Difficulty,
@@ -24,14 +23,11 @@ private:
wstring m_seed;
UIControl m_controlMainPanel;
- UIControl_Label m_labelWorldName, m_labelSeed, m_labelRandomSeed;
+ UIControl_Label m_labelWorldName;
UIControl_Button m_buttonGamemode, m_buttonMoreOptions, m_buttonCreateWorld;
- UIControl_TextInput m_editWorldName, m_editSeed;
+ UIControl_TextInput m_editWorldName;
UIControl_Slider m_sliderDifficulty;
-
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
UIControl_CheckBox m_checkboxOnline;
-#endif
UIControl_BitmapIcon m_bitmapIcon, m_bitmapComparison;
@@ -40,22 +36,17 @@ private:
UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlMainPanel )
UI_MAP_ELEMENT( m_labelWorldName, "WorldName")
UI_MAP_ELEMENT( m_editWorldName, "EditWorldName")
- UI_MAP_ELEMENT( m_labelSeed, "Seed")
- UI_MAP_ELEMENT( m_editSeed, "EditSeed")
- UI_MAP_ELEMENT( m_labelRandomSeed, "RandomSeed")
UI_MAP_ELEMENT( m_texturePackList, "TexturePackSelector")
UI_MAP_ELEMENT( m_buttonGamemode, "GameModeToggle")
-
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
UI_MAP_ELEMENT( m_checkboxOnline, "CheckboxOnline")
-#endif
UI_MAP_ELEMENT( m_buttonMoreOptions, "MoreOptions")
UI_MAP_ELEMENT( m_buttonCreateWorld, "NewWorld")
UI_MAP_ELEMENT( m_sliderDifficulty, "Difficulty")
UI_END_MAP_CHILD_ELEMENTS()
UI_END_MAP_ELEMENTS_AND_NAMES()
- bool m_bGameModeSurvival;
+ bool m_bGameModeCreative;
+ int m_iGameModeId;
bool m_bMultiplayerAllowed;
DLCPack * m_pDLCPack;
bool m_bRebuildTouchBoxes;
@@ -97,7 +88,6 @@ private:
protected:
static int KeyboardCompleteWorldNameCallback(LPVOID lpParam,const bool bRes);
- static int KeyboardCompleteSeedCallback(LPVOID lpParam,const bool bRes);
void handlePress(F64 controlId, F64 childId);
void handleSliderMove(F64 sliderId, F64 currentValue);
diff --git a/Minecraft.Client/Common/UI/UIScene_CreativeMenu.cpp b/Minecraft.Client/Common/UI/UIScene_CreativeMenu.cpp
index 569cc8ba..0895cdff 100644
--- a/Minecraft.Client/Common/UI/UIScene_CreativeMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_CreativeMenu.cpp
@@ -21,7 +21,7 @@ UIScene_CreativeMenu::UIScene_CreativeMenu(int iPad, void *_initData, UILayer *p
InventoryScreenInput *initData = (InventoryScreenInput *)_initData;
- shared_ptr<SimpleContainer> creativeContainer = shared_ptr<SimpleContainer>(new SimpleContainer( 0, TabSpec::MAX_SIZE ));
+ shared_ptr<SimpleContainer> creativeContainer = shared_ptr<SimpleContainer>(new SimpleContainer( 0, L"", false, TabSpec::MAX_SIZE ));
itemPickerMenu = new ItemPickerMenu(creativeContainer, initData->player->inventory);
Initialize( initData->iPad, itemPickerMenu, false, -1, eSectionInventoryCreativeUsing, eSectionInventoryCreativeMax, initData->bNavigateBack);
@@ -158,26 +158,6 @@ void UIScene_CreativeMenu::handleOtherClicked(int iPad, ESceneSection eSection,
}
}
-void UIScene_CreativeMenu::ScrollBar(UIVec2D pointerPos)
-{
- float fPosition = ((float)pointerPos.y - (float)m_TouchInput[ETouchInput_TouchSlider].getYPos()) / (float)m_TouchInput[ETouchInput_TouchSlider].getHeight();
-
- // clamp
- if(fPosition > 1)
- fPosition = 1.0f;
- else if(fPosition < 0)
- fPosition = 0.0f;
-
- // calculate page position according to page count
- int iCurrentPage = Math::round(fPosition * (specs[m_curTab]->getPageCount() - 1));
-
- // set tab page
- m_tabPage[m_curTab] = iCurrentPage;
-
- // update tab
- switchTab(m_curTab);
-}
-
void UIScene_CreativeMenu::handleReload()
{
Initialize( m_iPad, m_menu, false, -1, eSectionInventoryCreativeUsing, eSectionInventoryCreativeMax, m_bNavigateBack );
@@ -191,6 +171,10 @@ void UIScene_CreativeMenu::handleReload()
{
m_slotListHotbar.addSlot(i);
}
+
+ ECreativeInventoryTabs lastTab = m_curTab;
+ m_curTab = eCreativeInventoryTab_COUNT;
+ switchTab(lastTab);
}
void UIScene_CreativeMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
diff --git a/Minecraft.Client/Common/UI/UIScene_CreativeMenu.h b/Minecraft.Client/Common/UI/UIScene_CreativeMenu.h
index 6fbec2ba..530a7512 100644
--- a/Minecraft.Client/Common/UI/UIScene_CreativeMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_CreativeMenu.h
@@ -80,7 +80,6 @@ public:
virtual void handleTouchBoxRebuild();
virtual void handleTimerComplete(int id);
#endif
- virtual void ScrollBar(UIVec2D pointerPos);
private:
// IUIScene_CreativeMenu
diff --git a/Minecraft.Client/Common/UI/UIScene_Credits.cpp b/Minecraft.Client/Common/UI/UIScene_Credits.cpp
index 11558598..75ddf92f 100644
--- a/Minecraft.Client/Common/UI/UIScene_Credits.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_Credits.cpp
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "UI.h"
+#include "..\Minecraft.World\StringHelpers.h"
#include "UIScene_Credits.h"
#define CREDIT_ICON -2
@@ -50,7 +51,16 @@ SCreditTextItemDef UIScene_Credits::gs_aCreditDefs[MAX_CREDIT_STRINGS] =
{ L"Patrick Geuder", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText },
{ L"%ls", IDS_CREDITS_MUSICANDSOUNDS, NO_TRANSLATED_STRING,eLargeText },
{ L"Daniel Rosenfeld (C418)", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText },
- { L"", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText }, // extra blank line
+ { L"", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText }, // extra blank line
+
+// Added credit for horses
+ { L"Developers of Mo' Creatures:", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eExtraLargeText },
+ { L"John Olarte (DrZhark)", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText },
+ { L"Kent Christian Jensen", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText },
+ { L"Dan Roque", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText },
+ { L"", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText }, // extra blank line
+
+
{ L"4J Studios", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eExtraLargeText },
{ L"%ls", IDS_CREDITS_PROGRAMMING, NO_TRANSLATED_STRING,eLargeText },
{ L"Paddy Burns", NO_TRANSLATED_STRING, NO_TRANSLATED_STRING,eSmallText },
@@ -584,27 +594,38 @@ void UIScene_Credits::tick()
// Set up the new text element.
if(pDef->m_Text!=NULL) // 4J-PB - think the RAD logo ones aren't set up yet and are coming is as null
- {
-
+ {
if ( pDef->m_iStringID[0] == CREDIT_ICON )
{
addImage((ECreditIcons)pDef->m_iStringID[1]);
- }
- else if ( pDef->m_iStringID[0] == NO_TRANSLATED_STRING )
- {
- setNextLabel(pDef->m_Text,pDef->m_eType);
- }
+ }
else // using additional translated string.
{
+ wstring sanitisedString = wstring(pDef->m_Text);
+
+ // 4J-JEV: Some DLC credits contain copyright or registered symbols that are not rendered in some fonts.
+ if ( !ui.UsingBitmapFont() )
+ {
+ sanitisedString = replaceAll(sanitisedString, L"\u00A9", L"(C)");
+ sanitisedString = replaceAll(sanitisedString, L"\u00AE", L"(R)");
+ sanitisedString = replaceAll(sanitisedString, L"\u2013", L"-");
+ }
+
LPWSTR creditsString = new wchar_t[ 128 ];
- if(pDef->m_iStringID[1]!=NO_TRANSLATED_STRING)
+ if (pDef->m_iStringID[0]==NO_TRANSLATED_STRING)
+ {
+ ZeroMemory(creditsString, 128);
+ memcpy( creditsString, sanitisedString.c_str(), sizeof(WCHAR) * sanitisedString.length() );
+ }
+ else if(pDef->m_iStringID[1]!=NO_TRANSLATED_STRING)
{
- swprintf( creditsString, 128, pDef->m_Text, app.GetString( pDef->m_iStringID[0] ), app.GetString( pDef->m_iStringID[1] ) );
+ swprintf( creditsString, 128, sanitisedString.c_str(), app.GetString( pDef->m_iStringID[0] ), app.GetString( pDef->m_iStringID[1] ) );
}
else
{
- swprintf( creditsString, 128, pDef->m_Text, app.GetString( pDef->m_iStringID[0] ) );
+ swprintf( creditsString, 128, sanitisedString.c_str(), app.GetString( pDef->m_iStringID[0] ) );
}
+
setNextLabel(creditsString,pDef->m_eType);
delete [] creditsString;
}
diff --git a/Minecraft.Client/Common/UI/UIScene_Credits.h b/Minecraft.Client/Common/UI/UIScene_Credits.h
index 4116628d..ccb62831 100644
--- a/Minecraft.Client/Common/UI/UIScene_Credits.h
+++ b/Minecraft.Client/Common/UI/UIScene_Credits.h
@@ -2,10 +2,10 @@
#include "UIScene.h"
-#define PS3_CREDITS_COUNT 75
-#define PSVITA_CREDITS_COUNT 77
-#define PS4_CREDITS_COUNT 75
-#define XBOXONE_CREDITS_COUNT (75+318)
+#define PS3_CREDITS_COUNT 80
+#define PSVITA_CREDITS_COUNT 82
+#define PS4_CREDITS_COUNT 80
+#define XBOXONE_CREDITS_COUNT (80+318)
#define MILES_AND_IGGY_CREDITS_COUNT 8
#define DYNAMODE_FONT_CREDITS_COUNT 2
#define PS3_DOLBY_CREDIT 4
@@ -15,7 +15,7 @@
#define MAX_CREDIT_STRINGS (PS3_CREDITS_COUNT + MILES_AND_IGGY_CREDITS_COUNT + DYNAMODE_FONT_CREDITS_COUNT + PS3_DOLBY_CREDIT)
#elif defined(__ORBIS__)
#define MAX_CREDIT_STRINGS (PS4_CREDITS_COUNT + MILES_AND_IGGY_CREDITS_COUNT + DYNAMODE_FONT_CREDITS_COUNT)
-#elif defined(_DURANGO) || defined _WIN64
+#elif defined(_DURANGO) || defined _WINDOWS64
#define MAX_CREDIT_STRINGS (XBOXONE_CREDITS_COUNT + MILES_AND_IGGY_CREDITS_COUNT)
#elif defined(__PSVITA__)
#define MAX_CREDIT_STRINGS (PSVITA_CREDITS_COUNT + MILES_AND_IGGY_CREDITS_COUNT + DYNAMODE_FONT_CREDITS_COUNT)
diff --git a/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.cpp b/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.cpp
index 0d36dcdf..77ffdffd 100644
--- a/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.cpp
@@ -15,7 +15,7 @@ UIScene_DLCMainMenu::UIScene_DLCMainMenu(int iPad, void *initData, UILayer *pare
// Alert the app the we want to be informed of ethernet connections
app.SetLiveLinkRequired( true );
- m_labelOffers.init(app.GetString(IDS_DOWNLOADABLE_CONTENT_OFFERS));
+ m_labelOffers.init(IDS_DOWNLOADABLE_CONTENT_OFFERS);
m_buttonListOffers.init(eControl_OffersList);
#if defined _XBOX_ONE || defined __ORBIS__
@@ -33,7 +33,7 @@ UIScene_DLCMainMenu::UIScene_DLCMainMenu(int iPad, void *initData, UILayer *pare
if(m_loadedResolution == eSceneResolution_1080)
{
#ifdef _DURANGO
- m_labelXboxStore.init( app.GetString(IDS_XBOX_STORE) );
+ m_labelXboxStore.init(IDS_XBOX_STORE);
#else
m_labelXboxStore.init( L"" );
#endif
@@ -42,9 +42,9 @@ UIScene_DLCMainMenu::UIScene_DLCMainMenu(int iPad, void *initData, UILayer *pare
#if defined(_DURANGO)
m_Timer.setVisible(false);
- m_buttonListOffers.addItem(app.GetString(IDS_DLC_MENU_SKINPACKS),e_DLC_SkinPack);
- m_buttonListOffers.addItem(app.GetString(IDS_DLC_MENU_TEXTUREPACKS),e_DLC_TexturePacks);
- m_buttonListOffers.addItem(app.GetString(IDS_DLC_MENU_MASHUPPACKS),e_DLC_MashupPacks);
+ m_buttonListOffers.addItem(IDS_DLC_MENU_SKINPACKS,e_DLC_SkinPack);
+ m_buttonListOffers.addItem(IDS_DLC_MENU_TEXTUREPACKS,e_DLC_TexturePacks);
+ m_buttonListOffers.addItem(IDS_DLC_MENU_MASHUPPACKS,e_DLC_MashupPacks);
app.AddDLCRequest(e_Marketplace_Content); // content is skin packs, texture packs and mash-up packs
// we also need to mount the local DLC so we can tell what's been purchased
@@ -53,10 +53,8 @@ UIScene_DLCMainMenu::UIScene_DLCMainMenu(int iPad, void *initData, UILayer *pare
TelemetryManager->RecordMenuShown(iPad, eUIScene_DLCMainMenu, 0);
-#ifdef __ORBIS__
- sceNpCommerceShowPsStoreIcon(SCE_NP_COMMERCE_PS_STORE_ICON_RIGHT);
-#elif defined __PSVITA__
- sceNpCommerce2ShowPsStoreIcon(SCE_NP_COMMERCE2_ICON_DISP_RIGHT);
+#if defined __ORBIS__ || defined __PSVITA__
+ app.GetCommerce()->ShowPsStoreIcon();
#endif
#if ( defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ )
@@ -71,6 +69,11 @@ UIScene_DLCMainMenu::~UIScene_DLCMainMenu()
#if defined _XBOX_ONE || defined __ORBIS__
app.FreeLocalDLCImages();
#endif
+
+#ifdef _XBOX_ONE
+ // 4J-JEV: Have to switch back to user preferred languge now.
+ setLanguageOverride(true);
+#endif
}
wstring UIScene_DLCMainMenu::getMoviePath()
@@ -93,10 +96,8 @@ void UIScene_DLCMainMenu::handleInput(int iPad, int key, bool repeat, bool press
case ACTION_MENU_CANCEL:
if(pressed)
{
-#ifdef __ORBIS__
- sceNpCommerceHidePsStoreIcon();
-#elif defined __PSVITA__
- sceNpCommerce2HidePsStoreIcon();
+#if defined __ORBIS__ || defined __PSVITA__
+ app.GetCommerce()->HidePsStoreIcon();
#endif
navigateBack();
}
@@ -155,7 +156,7 @@ void UIScene_DLCMainMenu::handleTimerComplete(int id)
// If they have, bring up the PSN warning and exit from the leaderboards
unsigned int uiIDA[1];
uiIDA[0]=IDS_OK;
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad(),UIScene_DLCMainMenu::ExitDLCMainMenu,this, app.GetStringTable());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad(),UIScene_DLCMainMenu::ExitDLCMainMenu,this);
}
#endif
break;
@@ -167,10 +168,8 @@ int UIScene_DLCMainMenu::ExitDLCMainMenu(void *pParam,int iPad,C4JStorage::EMess
{
UIScene_DLCMainMenu* pClass = (UIScene_DLCMainMenu*)pParam;
-#ifdef __ORBIS__
- sceNpCommerceHidePsStoreIcon();
-#elif defined __PSVITA__
- sceNpCommerce2HidePsStoreIcon();
+#if defined __ORBIS__ || defined __PSVITA__
+ app.GetCommerce()->HidePsStoreIcon();
#endif
pClass->navigateBack();
diff --git a/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.h b/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.h
index 15272fe1..f23ee4b0 100644
--- a/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_DLCMainMenu.h
@@ -10,7 +10,7 @@ private:
eControl_OffersList,
};
- UIControl_ButtonList m_buttonListOffers;
+ UIControl_DynamicButtonList m_buttonListOffers;
UIControl_Label m_labelOffers, m_labelXboxStore;
UIControl m_Timer;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
diff --git a/Minecraft.Client/Common/UI/UIScene_DLCOffersMenu.cpp b/Minecraft.Client/Common/UI/UIScene_DLCOffersMenu.cpp
index 9dbdc3d4..65c1b6fc 100644
--- a/Minecraft.Client/Common/UI/UIScene_DLCOffersMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_DLCOffersMenu.cpp
@@ -34,8 +34,8 @@ UIScene_DLCOffersMenu::UIScene_DLCOffersMenu(int iPad, void *initData, UILayer *
m_labelOffers.init(app.GetString(IDS_DOWNLOADABLE_CONTENT_OFFERS));
m_buttonListOffers.init(eControl_OffersList);
- m_labelHTMLSellText.init(" ");
- m_labelPriceTag.init(" ");
+ m_labelHTMLSellText.init(L" ");
+ m_labelPriceTag.init(L" ");
TelemetryManager->RecordMenuShown(m_iPad, eUIScene_DLCOffersMenu, 0);
m_bHasPurchased = false;
@@ -93,7 +93,7 @@ void UIScene_DLCOffersMenu::handleTimerComplete(int id)
// If they have, bring up the PSN warning and exit from the DLC menu
unsigned int uiIDA[1];
uiIDA[0]=IDS_OK;
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad(),UIScene_DLCOffersMenu::ExitDLCOffersMenu,this, app.GetStringTable());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad(),UIScene_DLCOffersMenu::ExitDLCOffersMenu,this);
}
#endif
break;
@@ -105,10 +105,8 @@ int UIScene_DLCOffersMenu::ExitDLCOffersMenu(void *pParam,int iPad,C4JStorage::E
{
UIScene_DLCOffersMenu* pClass = (UIScene_DLCOffersMenu*)pParam;
-#ifdef __ORBIS__
- sceNpCommerceHidePsStoreIcon();
-#elif defined __PSVITA__
- sceNpCommerce2HidePsStoreIcon();
+#if defined __ORBIS__ || defined __PSVITA__
+ app.GetCommerce()->HidePsStoreIcon();
#endif
ui.NavigateToHomeMenu();//iPad,eUIScene_MainMenu);
@@ -446,7 +444,7 @@ void UIScene_DLCOffersMenu::tick()
SONYDLC *pSONYDLCInfo=app.GetSONYDLCInfoFromKeyname(info.productId);
// does the DLC info have an image?
- if(pSONYDLCInfo->dwImageBytes!=0)
+ if(pSONYDLCInfo && pSONYDLCInfo->dwImageBytes!=0)
{
pbImageData=pSONYDLCInfo->pbImageData;
iImageDataBytes=pSONYDLCInfo->dwImageBytes;
@@ -645,6 +643,16 @@ void UIScene_DLCOffersMenu::tick()
int iIndex = getControlChildFocus();
MARKETPLACE_CONTENTOFFER_INFO xOffer = StorageManager.GetOffer(iIndex);
+ if (!ui.UsingBitmapFont()) // 4J-JEV: Replace characters we don't have.
+ {
+ for (int i=0; xOffer.wszCurrencyPrice[i]!=0; i++)
+ {
+ WCHAR *c = &xOffer.wszCurrencyPrice[i];
+ if (*c == L'\u20A9') *c = L'\uFFE6'; // Korean Won.
+ else if (*c == L'\u00A5') *c = L'\uFFE5'; // Japanese Yen.
+ }
+ }
+
if(UpdateDisplay(xOffer))
{
// image was available
diff --git a/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp b/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp
index 2026bfca..8f0f4c11 100644
--- a/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp
@@ -117,13 +117,13 @@ void UIScene_DeathMenu::handlePress(F64 controlId, F64 childId)
uiIDA[1]=IDS_EXIT_GAME_SAVE;
uiIDA[2]=IDS_EXIT_GAME_NO_SAVE;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&IUIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&IUIScene_PauseMenu::ExitGameSaveDialogReturned,(LPVOID)GetCallbackUniqueId());
}
else
{
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,(LPVOID)GetCallbackUniqueId());
}
#else
@@ -131,7 +131,7 @@ void UIScene_DeathMenu::handlePress(F64 controlId, F64 childId)
{
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,(LPVOID)GetCallbackUniqueId());
}
else
{
@@ -141,14 +141,14 @@ void UIScene_DeathMenu::handlePress(F64 controlId, F64 childId)
uiIDA[1]=IDS_EXIT_GAME_SAVE;
uiIDA[2]=IDS_EXIT_GAME_NO_SAVE;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&IUIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&IUIScene_PauseMenu::ExitGameSaveDialogReturned,(LPVOID)GetCallbackUniqueId());
}
else
{
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,(LPVOID)GetCallbackUniqueId());
}
}
#endif
@@ -175,7 +175,7 @@ void UIScene_DeathMenu::handlePress(F64 controlId, F64 childId)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,(LPVOID)GetCallbackUniqueId());
}
else
{
diff --git a/Minecraft.Client/Common/UI/UIScene_DebugOptions.cpp b/Minecraft.Client/Common/UI/UIScene_DebugOptions.cpp
index 658a8517..c7db8db9 100644
--- a/Minecraft.Client/Common/UI/UIScene_DebugOptions.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_DebugOptions.cpp
@@ -14,15 +14,15 @@ LPCWSTR UIScene_DebugOptionsMenu::m_DebugCheckboxTextA[eDebugSetting_Max+1]=
L"Craft Anything",
L"Use DPad for debug",
L"Mobs don't tick",
- L"Instant Mine",
+ L"Art tools", //L"Instant Mine",
L"Show UI Console",
L"Distributable Save",
L"Debug Leaderboards",
- L"Height-Water-Biome Maps",
+ L"Height-Water Maps",
L"Superflat Nether",
//L"Light/Dark background",
L"More lightning when thundering",
- L"Go To Nether",
+ L"Biome override",
//L"Go To End",
L"Go To Overworld",
L"Unlock All DLC", //L"Toggle Font",
diff --git a/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp b/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp
index 44a7e6c5..8e45c324 100644
--- a/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_DebugOverlay.cpp
@@ -26,7 +26,7 @@ UIScene_DebugOverlay::UIScene_DebugOverlay(int iPad, void *initData, UILayer *pa
swprintf( (WCHAR *)TempString, 256, L"Set fov (%d)", (int)pMinecraft->gameRenderer->GetFovVal());
m_sliderFov.init(TempString,eControl_FOV,0,100,(int)pMinecraft->gameRenderer->GetFovVal());
- float currentTime = pMinecraft->level->getLevelData()->getTime() % 24000;
+ float currentTime = pMinecraft->level->getLevelData()->getGameTime() % 24000;
swprintf( (WCHAR *)TempString, 256, L"Set time (unsafe) (%d)", (int)currentTime);
m_sliderTime.init(TempString,eControl_Time,0,240,currentTime/100);
@@ -242,7 +242,7 @@ void UIScene_DebugOverlay::handleSliderMove(F64 sliderId, F64 currentValue)
// tries to predict the time
// Only works if we are on the host machine, but shouldn't break if not
MinecraftServer::SetTime(currentValue * 100);
- pMinecraft->level->getLevelData()->setTime(currentValue * 100);
+ pMinecraft->level->getLevelData()->setGameTime(currentValue * 100);
WCHAR TempString[256];
float currentTime = currentValue * 100;
diff --git a/Minecraft.Client/Common/UI/UIScene_DispenserMenu.cpp b/Minecraft.Client/Common/UI/UIScene_DispenserMenu.cpp
index 1eda1660..97cf842a 100644
--- a/Minecraft.Client/Common/UI/UIScene_DispenserMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_DispenserMenu.cpp
@@ -10,10 +10,10 @@ UIScene_DispenserMenu::UIScene_DispenserMenu(int iPad, void *_initData, UILayer
// Setup all the Iggy references we need for this scene
initialiseMovie();
- m_labelDispenser.init(app.GetString(IDS_DISPENSER));
-
TrapScreenInput *initData = (TrapScreenInput *)_initData;
+ m_labelDispenser.init(initData->trap->getName());
+
Minecraft *pMinecraft = Minecraft::GetInstance();
if( pMinecraft->localgameModes[initData->iPad] != NULL )
{
diff --git a/Minecraft.Client/Common/UI/UIScene_EnchantingMenu.cpp b/Minecraft.Client/Common/UI/UIScene_EnchantingMenu.cpp
index 8a4f1c6d..27459ccc 100644
--- a/Minecraft.Client/Common/UI/UIScene_EnchantingMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_EnchantingMenu.cpp
@@ -10,13 +10,13 @@ UIScene_EnchantingMenu::UIScene_EnchantingMenu(int iPad, void *_initData, UILaye
// Setup all the Iggy references we need for this scene
initialiseMovie();
- m_labelEnchant.init(app.GetString(IDS_ENCHANT));
-
m_enchantButton[0].init(0);
m_enchantButton[1].init(1);
m_enchantButton[2].init(2);
EnchantingScreenInput *initData = (EnchantingScreenInput *)_initData;
+
+ m_labelEnchant.init( initData->name.empty() ? app.GetString(IDS_ENCHANT) : initData->name );
Minecraft *pMinecraft = Minecraft::GetInstance();
if( pMinecraft->localgameModes[initData->iPad] != NULL )
diff --git a/Minecraft.Client/Common/UI/UIScene_EndPoem.cpp b/Minecraft.Client/Common/UI/UIScene_EndPoem.cpp
index f825efd0..c5a8e61a 100644
--- a/Minecraft.Client/Common/UI/UIScene_EndPoem.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_EndPoem.cpp
@@ -219,7 +219,16 @@ void UIScene_EndPoem::updateNoise()
replaceString = L"";
for(int i = 0; i < length; ++i)
{
- randomChar = SharedConstants::acceptableLetters[random->nextInt((int)SharedConstants::acceptableLetters.length())];
+ if (ui.UsingBitmapFont())
+ {
+ randomChar = SharedConstants::acceptableLetters[random->nextInt((int)SharedConstants::acceptableLetters.length())];
+ }
+ else
+ {
+ // 4J-JEV: It'd be nice to avoid null characters when using asian languages.
+ static wstring acceptableLetters = L"!\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_'|}~";
+ randomChar = acceptableLetters[ random->nextInt((int)acceptableLetters.length()) ];
+ }
wstring randomCharStr = L"";
randomCharStr.push_back(randomChar);
diff --git a/Minecraft.Client/Common/UI/UIScene_FireworksMenu.cpp b/Minecraft.Client/Common/UI/UIScene_FireworksMenu.cpp
new file mode 100644
index 00000000..1d24f989
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_FireworksMenu.cpp
@@ -0,0 +1,233 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
+#include "..\..\Minecraft.h"
+#include "..\..\LocalPlayer.h"
+#include "UIScene_FireworksMenu.h"
+
+UIScene_FireworksMenu::UIScene_FireworksMenu(int iPad, void *_initData, UILayer *parentLayer) : UIScene_AbstractContainerMenu(iPad, parentLayer)
+{
+ // Setup all the Iggy references we need for this scene
+ initialiseMovie();
+
+ FireworksScreenInput *initData = (FireworksScreenInput *)_initData;
+
+ m_labelFireworks.init(app.GetString(IDS_HOW_TO_PLAY_MENU_FIREWORKS));
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if( pMinecraft->localgameModes[initData->iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[initData->iPad];
+ m_previousTutorialState = gameMode->getTutorial()->getCurrentState();
+ gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Fireworks_Menu, this);
+ }
+
+ FireworksMenu* menu = new FireworksMenu( initData->player->inventory, initData->player->level, initData->x, initData->y, initData->z );
+
+ Initialize( initData->iPad, menu, true, FireworksMenu::INV_SLOT_START, eSectionFireworksUsing, eSectionFireworksMax );
+
+ m_slotListResult.addSlots(FireworksMenu::RESULT_SLOT,1);
+ m_slotList3x3.addSlots(FireworksMenu::CRAFT_SLOT_START, 9);
+ ShowLargeCraftingGrid(true);
+
+ delete initData;
+}
+
+wstring UIScene_FireworksMenu::getMoviePath()
+{
+ if(app.GetLocalPlayerCount() > 1)
+ {
+ return L"FireworksMenuSplit";
+ }
+ else
+ {
+ return L"FireworksMenu";
+ }
+}
+
+void UIScene_FireworksMenu::handleReload()
+{
+ Initialize( m_iPad, m_menu, true, FireworksMenu::INV_SLOT_START, eSectionFireworksUsing, eSectionFireworksMax );
+
+ m_slotListResult.addSlots(FireworksMenu::RESULT_SLOT,1);
+ m_slotList3x3.addSlots(FireworksMenu::CRAFT_SLOT_START, 9);
+ ShowLargeCraftingGrid(true);
+}
+
+int UIScene_FireworksMenu::getSectionColumns(ESceneSection eSection)
+{
+ int cols = 0;
+ switch( eSection )
+ {
+ case eSectionFireworksIngredients:
+ cols = 3;
+ break;
+ case eSectionFireworksResult:
+ cols = 1;
+ break;
+ case eSectionFireworksInventory:
+ cols = 9;
+ break;
+ case eSectionFireworksUsing:
+ cols = 9;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return cols;
+}
+
+int UIScene_FireworksMenu::getSectionRows(ESceneSection eSection)
+{
+ int rows = 0;
+ switch( eSection )
+ {
+ case eSectionFireworksIngredients:
+ rows = 3;
+ break;
+ case eSectionFireworksResult:
+ rows = 1;
+ break;
+ case eSectionFireworksInventory:
+ rows = 3;
+ break;
+ case eSectionFireworksUsing:
+ rows = 1;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return rows;
+}
+
+void UIScene_FireworksMenu::GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition )
+{
+ switch( eSection )
+ {
+ case eSectionFireworksIngredients:
+ pPosition->x = m_slotList3x3.getXPos();
+ pPosition->y = m_slotList3x3.getYPos();
+ break;
+ case eSectionFireworksResult:
+ pPosition->x = m_slotListResult.getXPos();
+ pPosition->y = m_slotListResult.getYPos();
+ break;
+ case eSectionFireworksInventory:
+ pPosition->x = m_slotListInventory.getXPos();
+ pPosition->y = m_slotListInventory.getYPos();
+ break;
+ case eSectionFireworksUsing:
+ pPosition->x = m_slotListHotbar.getXPos();
+ pPosition->y = m_slotListHotbar.getYPos();
+ break;
+ default:
+ assert( false );
+ break;
+ }
+}
+
+void UIScene_FireworksMenu::GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize )
+{
+ UIVec2D sectionSize;
+ switch( eSection )
+ {
+ case eSectionFireworksIngredients:
+ sectionSize.x = m_slotList3x3.getWidth();
+ sectionSize.y = m_slotList3x3.getHeight();
+ break;
+ case eSectionFireworksResult:
+ sectionSize.x = m_slotListResult.getWidth();
+ sectionSize.y = m_slotListResult.getHeight();
+ break;
+ case eSectionFireworksInventory:
+ sectionSize.x = m_slotListInventory.getWidth();
+ sectionSize.y = m_slotListInventory.getHeight();
+ break;
+ case eSectionFireworksUsing:
+ sectionSize.x = m_slotListHotbar.getWidth();
+ sectionSize.y = m_slotListHotbar.getHeight();
+ break;
+ default:
+ assert( false );
+ break;
+ }
+
+ int rows = getSectionRows(eSection);
+ int cols = getSectionColumns(eSection);
+
+ pSize->x = sectionSize.x/cols;
+ pSize->y = sectionSize.y/rows;
+
+ int itemCol = iItemIndex % cols;
+ int itemRow = iItemIndex/cols;
+
+ pPosition->x = itemCol * pSize->x;
+ pPosition->y = itemRow * pSize->y;
+}
+
+void UIScene_FireworksMenu::setSectionSelectedSlot(ESceneSection eSection, int x, int y)
+{
+ int cols = getSectionColumns(eSection);
+
+ int index = (y * cols) + x;
+
+ UIControl_SlotList *slotList = NULL;
+ switch( eSection )
+ {
+ case eSectionFireworksIngredients:
+ slotList = &m_slotList3x3;
+ break;
+ case eSectionFireworksResult:
+ slotList = &m_slotListResult;
+ break;
+ case eSectionFireworksInventory:
+ slotList = &m_slotListInventory;
+ break;
+ case eSectionFireworksUsing:
+ slotList = &m_slotListHotbar;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ slotList->setHighlightSlot(index);
+}
+
+UIControl *UIScene_FireworksMenu::getSection(ESceneSection eSection)
+{
+ UIControl *control = NULL;
+ switch( eSection )
+ {
+ case eSectionFireworksIngredients:
+ control = &m_slotList3x3;
+ break;
+ case eSectionFireworksResult:
+ control = &m_slotListResult;
+ break;
+ case eSectionFireworksInventory:
+ control = &m_slotListInventory;
+ break;
+ case eSectionFireworksUsing:
+ control = &m_slotListHotbar;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return control;
+}
+
+// bShow == true removes the 2x2 crafting grid and bShow == false removes the 3x3 crafting grid
+void UIScene_FireworksMenu::ShowLargeCraftingGrid(boolean bShow)
+{
+ app.DebugPrintf("ShowLargeCraftingGrid to %d\n", bShow);
+
+ IggyDataValue result;
+ IggyDataValue value[1];
+ value[0].type = IGGY_DATATYPE_boolean;
+ value[0].boolval = bShow;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcShowLargeCraftingGrid , 1 , value );
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_FireworksMenu.h b/Minecraft.Client/Common/UI/UIScene_FireworksMenu.h
new file mode 100644
index 00000000..b56443b9
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_FireworksMenu.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "UIScene_AbstractContainerMenu.h"
+#include "IUIScene_FireworksMenu.h"
+
+class InventoryMenu;
+
+class UIScene_FireworksMenu : public UIScene_AbstractContainerMenu, public IUIScene_FireworksMenu
+{
+public:
+ UIScene_FireworksMenu(int iPad, void *initData, UILayer *parentLayer);
+
+ virtual EUIScene getSceneType() { return eUIScene_FireworksMenu;}
+
+protected:
+ UIControl_SlotList m_slotListResult, m_slotList3x3, m_slotList2x2;
+ UIControl_Label m_labelFireworks;
+ IggyName m_funcShowLargeCraftingGrid;
+
+ UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene_AbstractContainerMenu)
+ UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlMainPanel )
+ UI_MAP_ELEMENT( m_slotListResult, "Result")
+ UI_MAP_ELEMENT( m_slotList3x3, "Fireworks3x3")
+ UI_MAP_ELEMENT( m_slotList2x2, "Fireworks2x2")
+ UI_MAP_ELEMENT( m_labelFireworks, "FireworksLabel")
+
+ UI_MAP_NAME( m_funcShowLargeCraftingGrid, L"ShowLargeCraftingGrid")
+ UI_END_MAP_CHILD_ELEMENTS()
+ UI_END_MAP_ELEMENTS_AND_NAMES()
+
+ virtual wstring getMoviePath();
+ virtual void handleReload();
+
+ virtual int getSectionColumns(ESceneSection eSection);
+ virtual int getSectionRows(ESceneSection eSection);
+ virtual void GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition );
+ virtual void GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize );
+ virtual void handleSectionClick(ESceneSection eSection) {}
+ virtual void setSectionSelectedSlot(ESceneSection eSection, int x, int y);
+
+ virtual UIControl *getSection(ESceneSection eSection);
+
+ void ShowLargeCraftingGrid(boolean bShow);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_FullscreenProgress.cpp b/Minecraft.Client/Common/UI/UIScene_FullscreenProgress.cpp
index ed31cfaf..fb17bda4 100644
--- a/Minecraft.Client/Common/UI/UIScene_FullscreenProgress.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_FullscreenProgress.cpp
@@ -187,7 +187,7 @@ void UIScene_FullscreenProgress::tick()
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_FAILED), g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_SERVER), uiIDA,1, XUSER_INDEX_ANY,NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_FAILED), g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_SERVER), uiIDA,1, XUSER_INDEX_ANY);
ui.NavigateToHomeMenu();
ui.UpdatePlayerBasePositions();
@@ -199,6 +199,10 @@ void UIScene_FullscreenProgress::tick()
{
m_threadCompleted = true;
m_buttonConfirm.setVisible( true );
+ // 4J-TomK - rebuild touch after confirm button made visible again
+#ifdef __PSVITA__
+ ui.TouchBoxRebuild(this);
+#endif
updateTooltips();
}
else
diff --git a/Minecraft.Client/Common/UI/UIScene_FurnaceMenu.cpp b/Minecraft.Client/Common/UI/UIScene_FurnaceMenu.cpp
index 1ba4053d..392221a6 100644
--- a/Minecraft.Client/Common/UI/UIScene_FurnaceMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_FurnaceMenu.cpp
@@ -10,16 +10,16 @@ UIScene_FurnaceMenu::UIScene_FurnaceMenu(int iPad, void *_initData, UILayer *par
// Setup all the Iggy references we need for this scene
initialiseMovie();
- m_labelFurnace.init(app.GetString(IDS_FURNACE));
+ FurnaceScreenInput *initData = (FurnaceScreenInput *)_initData;
+ m_furnace = initData->furnace;
+
+ m_labelFurnace.init(m_furnace->getName());
m_labelIngredient.init(app.GetString(IDS_INGREDIENT));
m_labelFuel.init(app.GetString(IDS_FUEL));
m_progressFurnaceFire.init(L"",0,0,12,0);
m_progressFurnaceArrow.init(L"",0,0,24,0);
- FurnaceScreenInput *initData = (FurnaceScreenInput *)_initData;
- m_furnace = initData->furnace;
-
Minecraft *pMinecraft = Minecraft::GetInstance();
if( pMinecraft->localgameModes[initData->iPad] != NULL )
{
diff --git a/Minecraft.Client/Common/UI/UIScene_HUD.cpp b/Minecraft.Client/Common/UI/UIScene_HUD.cpp
index 27eeb76b..c3d52cf9 100644
--- a/Minecraft.Client/Common/UI/UIScene_HUD.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_HUD.cpp
@@ -1,13 +1,12 @@
#include "stdafx.h"
#include "UI.h"
#include "UIScene_HUD.h"
+#include "BossMobGuiInfo.h"
#include "..\..\Minecraft.h"
#include "..\..\MultiplayerLocalPlayer.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.entity.boss.enderdragon.h"
#include "..\..\EnderDragonRenderer.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
-#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"
-#include "..\..\..\Minecraft.World\net.minecraft.world.effect.h"
#include "..\..\..\Minecraft.World\StringHelpers.h"
UIScene_HUD::UIScene_HUD(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
@@ -17,32 +16,6 @@ UIScene_HUD::UIScene_HUD(int iPad, void *initData, UILayer *parentLayer) : UISce
// Setup all the Iggy references we need for this scene
initialiseMovie();
- m_lastActiveSlot = 0;
- m_lastScale = 1;
- m_bToolTipsVisible = true;
- m_lastExpProgress = 0.0f;
- m_lastExpLevel = 0;
- m_lastMaxHealth = 20;
- m_lastHealthBlink = false;
- m_lastHealthPoison = false;
- m_lastMaxFood = 20;
- m_lastFoodPoison = false;
- m_lastAir = 10;
- m_lastArmour = 0;
- m_showHealth = true;
- m_showFood = true;
- m_showAir = true;
- m_showArmour = true;
- m_showExpBar = true;
- m_lastRegenEffect = false;
- m_lastSaturation = 0;
- m_lastDragonHealth = 0.0f;
- m_showDragonHealth = false;
- m_ticksWithNoBoss = 0;
- m_uiSelectedItemOpacityCountDown = 0;
- m_displayName = L"";
- m_lastShowDisplayName = true;
-
SetDragonLabel( app.GetString( IDS_BOSS_ENDERDRAGON_HEALTH ) );
SetSelectedLabel(L"");
@@ -146,33 +119,35 @@ void UIScene_HUD::tick()
return;
}
- if(pMinecraft->localplayers[m_iPad]->dimension == 1)
+ // Is boss present?
+ bool noBoss = BossMobGuiInfo::name.empty() || BossMobGuiInfo::displayTicks <= 0;
+ if (noBoss)
{
- if (EnderDragonRenderer::bossInstance == NULL)
+ if (m_showDragonHealth)
{
- if(m_ticksWithNoBoss<=20)
+ // No boss and health is visible
+ if(m_ticksWithNoBoss <= 20)
{
++m_ticksWithNoBoss;
}
- if( m_ticksWithNoBoss > 20 )
+ else
{
ShowDragonHealth(false);
}
}
- else
- {
- shared_ptr<EnderDragon> boss = EnderDragonRenderer::bossInstance;
- // 4J Stu - Don't clear this here as it's wiped for other players
- //EnderDragonRenderer::bossInstance = nullptr;
- m_ticksWithNoBoss = 0;
-
- ShowDragonHealth(true);
- SetDragonHealth( (float)boss->getSynchedHealth()/boss->getMaxHealth());
- }
}
else
{
- ShowDragonHealth(false);
+ BossMobGuiInfo::displayTicks--;
+
+ m_ticksWithNoBoss = 0;
+ SetDragonHealth(BossMobGuiInfo::healthProgress);
+
+ if (!m_showDragonHealth)
+ {
+ SetDragonLabel(BossMobGuiInfo::name);
+ ShowDragonHealth(true);
+ }
}
}
}
@@ -229,34 +204,46 @@ void UIScene_HUD::customDraw(IggyCustomDrawCallbackRegion *region)
void UIScene_HUD::handleReload()
{
- m_lastActiveSlot = 0;
- m_lastScale = 1;
+ m_lastActiveSlot = -1;
+ m_iGuiScale = -1;
m_bToolTipsVisible = true;
m_lastExpProgress = 0.0f;
m_lastExpLevel = 0;
+ m_iCurrentHealth = 0;
m_lastMaxHealth = 20;
m_lastHealthBlink = false;
m_lastHealthPoison = false;
- m_lastMaxFood = 20;
+ m_iCurrentFood = -1;
m_lastFoodPoison = false;
m_lastAir = 10;
+ m_currentExtraAir = 0;
m_lastArmour = 0;
m_showHealth = true;
+ m_showHorseHealth = true;
m_showFood = true;
- m_showAir = true;
+ m_showAir = false; // get's initialised invisible anyways, by setting it to false we ensure it will remain visible when switching in and out of split screen!
m_showArmour = true;
m_showExpBar = true;
- m_lastRegenEffect = false;
- m_lastSaturation = 0;
+ m_bRegenEffectEnabled = false;
+ m_iFoodSaturation = 0;
m_lastDragonHealth = 0.0f;
m_showDragonHealth = false;
m_ticksWithNoBoss = 0;
m_uiSelectedItemOpacityCountDown = 0;
m_displayName = L"";
+ m_lastShowDisplayName = true;
+ m_bRidingHorse = true;
+ m_horseHealth = 1;
+ m_lastHealthWither = true;
+ m_iCurrentHealthAbsorb = -1;
+ m_horseJumpProgress = 1.0f;
+ m_iHeartOffsetIndex = -1;
+ m_bHealthAbsorbActive = false;
+ m_iHorseMaxHealth = -1;
m_labelDisplayName.setVisible(m_lastShowDisplayName);
- SetDragonLabel( app.GetString( IDS_BOSS_ENDERDRAGON_HEALTH ) );
+ SetDragonLabel(BossMobGuiInfo::name);
SetSelectedLabel(L"");
for(unsigned int i = 0; i < CHAT_LINES_COUNT; ++i)
@@ -284,11 +271,26 @@ void UIScene_HUD::handleReload()
SetTooltipsEnabled(((ui.GetMenuDisplayed(ProfileManager.GetPrimaryPad())) || (app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_Tooltips) != 0)));
}
+int UIScene_HUD::getPad()
+{
+ return m_iPad;
+}
+
+void UIScene_HUD::SetOpacity(float opacity)
+{
+ setOpacity(opacity);
+}
+
+void UIScene_HUD::SetVisible(bool visible)
+{
+ setVisible(visible);
+}
+
void UIScene_HUD::SetHudSize(int scale)
{
- if(scale != m_lastScale)
+ if(scale != m_iGuiScale)
{
- m_lastScale = scale;
+ m_iGuiScale = scale;
IggyDataValue result;
IggyDataValue value[1];
@@ -298,7 +300,7 @@ void UIScene_HUD::SetHudSize(int scale)
}
}
-void UIScene_HUD::SetExpBarProgress(float progress)
+void UIScene_HUD::SetExpBarProgress(float progress, int xpNeededForNextLevel)
{
if(progress != m_lastExpProgress)
{
@@ -340,24 +342,27 @@ void UIScene_HUD::SetActiveSlot(int slot)
}
}
-void UIScene_HUD::SetHealth(int iHealth, int iLastHealth, bool bBlink, bool bPoison)
+void UIScene_HUD::SetHealth(int iHealth, int iLastHealth, bool bBlink, bool bPoison, bool bWither)
{
int maxHealth = max(iHealth, iLastHealth);
- if(maxHealth != m_lastMaxHealth || bBlink != m_lastHealthBlink || bPoison != m_lastHealthPoison)
+ if(maxHealth != m_lastMaxHealth || bBlink != m_lastHealthBlink || bPoison != m_lastHealthPoison || bWither != m_lastHealthWither)
{
m_lastMaxHealth = maxHealth;
m_lastHealthBlink = bBlink;
m_lastHealthPoison = bPoison;
+ m_lastHealthWither = bWither;
IggyDataValue result;
- IggyDataValue value[3];
+ IggyDataValue value[4];
value[0].type = IGGY_DATATYPE_number;
value[0].number = maxHealth;
value[1].type = IGGY_DATATYPE_boolean;
value[1].boolval = bBlink;
value[2].type = IGGY_DATATYPE_boolean;
value[2].boolval = bPoison;
- IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetHealth , 3 , value );
+ value[3].type = IGGY_DATATYPE_boolean;
+ value[3].boolval = bWither;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetHealth , 4 , value );
}
}
@@ -365,9 +370,9 @@ void UIScene_HUD::SetFood(int iFood, int iLastFood, bool bPoison)
{
// Ignore iLastFood as food doesn't flash
int maxFood = iFood; //, iLastFood);
- if(maxFood != m_lastMaxFood || bPoison != m_lastFoodPoison)
+ if(maxFood != m_iCurrentFood || bPoison != m_lastFoodPoison)
{
- m_lastMaxFood = maxFood;
+ m_iCurrentFood = maxFood;
m_lastFoodPoison = bPoison;
IggyDataValue result;
@@ -380,7 +385,7 @@ void UIScene_HUD::SetFood(int iFood, int iLastFood, bool bPoison)
}
}
-void UIScene_HUD::SetAir(int iAir)
+void UIScene_HUD::SetAir(int iAir, int extra)
{
if(iAir != m_lastAir)
{
@@ -425,6 +430,21 @@ void UIScene_HUD::ShowHealth(bool show)
}
}
+void UIScene_HUD::ShowHorseHealth(bool show)
+{
+ if(show != m_showHorseHealth)
+ {
+ app.DebugPrintf("ShowHorseHealth to %s\n", show?"TRUE":"FALSE");
+ m_showHorseHealth = show;
+
+ IggyDataValue result;
+ IggyDataValue value[1];
+ value[0].type = IGGY_DATATYPE_boolean;
+ value[0].boolval = show;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcShowHorseHealth , 1 , value );
+ }
+}
+
void UIScene_HUD::ShowFood(bool show)
{
if(show != m_showFood)
@@ -487,10 +507,10 @@ void UIScene_HUD::ShowExpBar(bool show)
void UIScene_HUD::SetRegenerationEffect(bool bEnabled)
{
- if(bEnabled != m_lastRegenEffect)
+ if(bEnabled != m_bRegenEffectEnabled)
{
app.DebugPrintf("SetRegenerationEffect to %s\n", bEnabled?"TRUE":"FALSE");
- m_lastRegenEffect = bEnabled;
+ m_bRegenEffectEnabled = bEnabled;
IggyDataValue result;
IggyDataValue value[1];
@@ -502,10 +522,10 @@ void UIScene_HUD::SetRegenerationEffect(bool bEnabled)
void UIScene_HUD::SetFoodSaturationLevel(int iSaturation)
{
- if(iSaturation != m_lastSaturation)
+ if(iSaturation != m_iFoodSaturation)
{
app.DebugPrintf("Set saturation to %d\n", iSaturation);
- m_lastSaturation = iSaturation;
+ m_iFoodSaturation = iSaturation;
IggyDataValue result;
IggyDataValue value[1];
@@ -578,6 +598,77 @@ void UIScene_HUD::HideSelectedLabel()
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcHideSelectedLabel , 0 , NULL );
}
+
+void UIScene_HUD::SetRidingHorse(bool ridingHorse, bool bIsJumpable, int maxHorseHealth)
+{
+ if(m_bRidingHorse != ridingHorse || maxHorseHealth != m_iHorseMaxHealth)
+ {
+ app.DebugPrintf("SetRidingHorse to %s\n", ridingHorse?"TRUE":"FALSE");
+ m_bRidingHorse = ridingHorse;
+ m_bIsJumpable = bIsJumpable;
+ m_iHorseMaxHealth = maxHorseHealth;
+
+ IggyDataValue result;
+ IggyDataValue value[3];
+ value[0].type = IGGY_DATATYPE_boolean;
+ value[0].boolval = ridingHorse;
+ value[1].type = IGGY_DATATYPE_boolean;
+ value[1].boolval = bIsJumpable;
+ value[2].type = IGGY_DATATYPE_number;
+ value[2].number = maxHorseHealth;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetRidingHorse , 3 , value );
+ }
+}
+
+void UIScene_HUD::SetHorseHealth(int health, bool blink /*= false*/)
+{
+ if(m_bRidingHorse && m_horseHealth != health)
+ {
+ app.DebugPrintf("SetHorseHealth to %d\n", health);
+ m_horseHealth = health;
+
+ IggyDataValue result;
+ IggyDataValue value[2];
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = health;
+ value[1].type = IGGY_DATATYPE_boolean;
+ value[1].boolval = blink;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetHorseHealth , 2 , value );
+ }
+}
+
+void UIScene_HUD::SetHorseJumpBarProgress(float progress)
+{
+ if(m_bRidingHorse && m_horseJumpProgress != progress)
+ {
+ app.DebugPrintf("SetHorseJumpBarProgress to %f\n", progress);
+ m_horseJumpProgress = progress;
+
+ IggyDataValue result;
+ IggyDataValue value[1];
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = progress;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetHorseJumpBarProgress , 1 , value );
+ }
+}
+
+void UIScene_HUD::SetHealthAbsorb(int healthAbsorb)
+{
+ if(m_iCurrentHealthAbsorb != healthAbsorb)
+ {
+ app.DebugPrintf("SetHealthAbsorb to %d\n", healthAbsorb);
+ m_iCurrentHealthAbsorb = healthAbsorb;
+
+ IggyDataValue result;
+ IggyDataValue value[2];
+ value[0].type = IGGY_DATATYPE_boolean;
+ value[0].boolval = healthAbsorb > 0;
+ value[1].type = IGGY_DATATYPE_number;
+ value[1].number = healthAbsorb;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetHealthAbsorb , 2 , value );
+ }
+}
+
void UIScene_HUD::render(S32 width, S32 height, C4JRender::eViewportType viewport)
{
if(m_bSplitscreen)
@@ -775,223 +866,6 @@ void UIScene_HUD::handleGameTick()
}
m_parentLayer->showComponent(m_iPad, eUIScene_HUD,true);
- int iGuiScale;
-
- if(pMinecraft->localplayers[m_iPad]->m_iScreenSection == C4JRender::VIEWPORT_TYPE_FULLSCREEN)
- {
- iGuiScale=app.GetGameSettings(m_iPad,eGameSetting_UISize);
- }
- else
- {
- iGuiScale=app.GetGameSettings(m_iPad,eGameSetting_UISizeSplitscreen);
- }
- SetHudSize(iGuiScale);
-
- SetDisplayName(ProfileManager.GetDisplayName(m_iPad));
-
- SetTooltipsEnabled(((ui.GetMenuDisplayed(ProfileManager.GetPrimaryPad())) || (app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_Tooltips) != 0)));
-
-#if TO_BE_IMPLEMENTED
- // Move the whole hud group if we are not in fullscreen
- if(pMinecraft->localplayers[m_iPad]->m_iScreenSection != C4JRender::VIEWPORT_TYPE_FULLSCREEN)
- {
- int iTooltipsYOffset = 0;
- // if tooltips are off, set the y offset to zero
- if(app.GetGameSettings(m_iPad,eGameSetting_Tooltips)==0)
- {
- switch(iGuiScale)
- {
- case 0:
- iTooltipsYOffset=28;//screenHeight/10;
- break;
- case 2:
- iTooltipsYOffset=28;//screenHeight/10;
- break;
- case 1:
- default:
- iTooltipsYOffset=28;//screenHeight/10;
- break;
- }
- }
-
- float fHeight, fWidth;
- GetBounds(&fWidth, &fHeight);
-
- int iSafezoneYHalf = 0;
- switch(pMinecraft->localplayers[m_iPad]->m_iScreenSection)
- {
- case C4JRender::VIEWPORT_TYPE_SPLIT_TOP:
- break;
- case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM:
- iSafezoneYHalf = -fHeight/10;// 5% (need to treat the whole screen is 2x this screen)
- break;
- case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT:
- iSafezoneYHalf = (fHeight/2)-(fHeight/10);// 5% (need to treat the whole screen is 2x this screen)
- break;
- case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT:
- iSafezoneYHalf = (fHeight/2)-(fHeight/10);// 5% (need to treat the whole screen is 2x this screen)
- break;
- case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT:
- break;
- case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT:
- break;
- case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT:
- iSafezoneYHalf = -fHeight/10; // 5% (the whole screen is 2x this screen)
- break;
- case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT:
- iSafezoneYHalf = -fHeight/10; // 5% (the whole screen is 2x this screen)
- break;
- };
-
- D3DXVECTOR3 pos;
- m_hudGroup.GetPosition(&pos);
- pos.y = iTooltipsYOffset + iSafezoneYHalf;
- m_hudGroup.SetPosition(&pos);
- }
-#endif
- SetActiveSlot(pMinecraft->localplayers[m_iPad]->inventory->selected);
-
- // Update xp progress
- if (pMinecraft->localgameModes[m_iPad]->canHurtPlayer())
- {
- ShowExpBar(true);
- int xpNeededForNextLevel = pMinecraft->localplayers[m_iPad]->getXpNeededForNextLevel();
- int progress = (int)(pMinecraft->localplayers[m_iPad]->experienceProgress *xpNeededForNextLevel);
- SetExpBarProgress((float)progress/xpNeededForNextLevel);
- }
- else
- {
- ShowExpBar(false);
- }
-
- // Update xp level
- if (pMinecraft->localgameModes[m_iPad]->hasExperience() && pMinecraft->localplayers[m_iPad]->experienceLevel > 0)
- {
- SetExpLevel(pMinecraft->localplayers[m_iPad]->experienceLevel);
- }
- else
- {
- SetExpLevel(0);
- }
-
- if (pMinecraft->localgameModes[m_iPad]->canHurtPlayer())
- {
- ShowHealth(true);
- ShowFood(true);
-
- SetRegenerationEffect(pMinecraft->localplayers[m_iPad]->hasEffect(MobEffect::regeneration));
-
- // Update health
- bool blink = pMinecraft->localplayers[m_iPad]->invulnerableTime / 3 % 2 == 1;
- if (pMinecraft->localplayers[m_iPad]->invulnerableTime < 10) blink = false;
- int iHealth = pMinecraft->localplayers[m_iPad]->getHealth();
- int iLastHealth = pMinecraft->localplayers[m_iPad]->lastHealth;
- bool bHasPoison = pMinecraft->localplayers[m_iPad]->hasEffect(MobEffect::poison);
- SetHealth(iHealth, iLastHealth, blink, bHasPoison);
-
- // Update food
- //bool foodBlink = false;
- FoodData *foodData = pMinecraft->localplayers[m_iPad]->getFoodData();
- int food = foodData->getFoodLevel();
- int oldFood = foodData->getLastFoodLevel();
- bool hasHungerEffect = pMinecraft->localplayers[m_iPad]->hasEffect(MobEffect::hunger);
- int saturationLevel = pMinecraft->localplayers[m_iPad]->getFoodData()->getSaturationLevel();
- SetFood(food, oldFood, hasHungerEffect);
- SetFoodSaturationLevel(saturationLevel);
-
- // Update armour
- int armor = pMinecraft->localplayers[m_iPad]->getArmorValue();
- if(armor > 0)
- {
- ShowArmour(true);
- SetArmour(armor);
- }
- else
- {
- ShowArmour(false);
- }
-
- // Update air
- if (pMinecraft->localplayers[m_iPad]->isUnderLiquid(Material::water))
- {
- ShowAir(true);
- int count = (int) ceil((pMinecraft->localplayers[m_iPad]->getAirSupply() - 2) * 10.0f / Player::TOTAL_AIR_SUPPLY);
- SetAir(count);
- }
- else
- {
- ShowAir(false);
- }
- }
- else
- {
- ShowHealth(false);
- ShowFood(false);
- ShowAir(false);
- ShowArmour(false);
- }
-
- if(m_uiSelectedItemOpacityCountDown>0)
- {
- --m_uiSelectedItemOpacityCountDown;
-
- // 4J Stu - Timing here is kept the same as on Xbox360, even though we do it differently now and do the fade out in Flash rather than directly setting opacity
- if(m_uiSelectedItemOpacityCountDown < (SharedConstants::TICKS_PER_SECOND * 1) )
- {
- HideSelectedLabel();
- m_uiSelectedItemOpacityCountDown = 0;
- }
- }
-
- unsigned char ucAlpha=app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_InterfaceOpacity);
- float fVal;
-
- if(ucAlpha<80)
- {
- // if we are in a menu, set the minimum opacity for tooltips to 15%
- if(ui.GetMenuDisplayed(m_iPad) && (ucAlpha<15))
- {
- ucAlpha=15;
- }
-
- // check if we have the timer running for the opacity
- unsigned int uiOpacityTimer=app.GetOpacityTimer(m_iPad);
- if(uiOpacityTimer!=0)
- {
- if(uiOpacityTimer<10)
- {
- float fStep=(80.0f-(float)ucAlpha)/10.0f;
- fVal=0.01f*(80.0f-((10.0f-(float)uiOpacityTimer)*fStep));
- }
- else
- {
- fVal=0.01f*80.0f;
- }
- }
- else
- {
- fVal=0.01f*(float)ucAlpha;
- }
- }
- else
- {
- // if we are in a menu, set the minimum opacity for tooltips to 15%
- if(ui.GetMenuDisplayed(m_iPad) && (ucAlpha<15))
- {
- ucAlpha=15;
- }
- fVal=0.01f*(float)ucAlpha;
- }
- setOpacity(fVal);
-
- bool bDisplayGui=app.GetGameStarted() && !ui.GetMenuDisplayed(m_iPad) && !(app.GetXuiAction(m_iPad)==eAppAction_AutosaveSaveGameCapturedThumbnail) && app.GetGameSettings(m_iPad,eGameSetting_DisplayHUD)!=0;
- if(bDisplayGui && pMinecraft->localplayers[m_iPad] != NULL)
- {
- setVisible(true);
- }
- else
- {
- setVisible(false);
- }
+ updateFrameTick();
}
-}
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_HUD.h b/Minecraft.Client/Common/UI/UIScene_HUD.h
index cd0d8806..9d58ba4b 100644
--- a/Minecraft.Client/Common/UI/UIScene_HUD.h
+++ b/Minecraft.Client/Common/UI/UIScene_HUD.h
@@ -1,38 +1,15 @@
#pragma once
#include "UIScene.h"
+#include "IUIScene_HUD.h"
#define CHAT_LINES_COUNT 10
-class UIScene_HUD : public UIScene
+class UIScene_HUD : public UIScene, public IUIScene_HUD
{
private:
bool m_bSplitscreen;
- int m_lastActiveSlot;
- int m_lastScale;
- bool m_bToolTipsVisible;
- float m_lastExpProgress;
- int m_lastExpLevel;
- int m_lastMaxHealth;
- bool m_lastHealthBlink, m_lastHealthPoison;
- int m_lastMaxFood;
- bool m_lastFoodPoison;
- int m_lastAir;
- int m_lastArmour;
- float m_lastDragonHealth;
- bool m_showDragonHealth;
- int m_ticksWithNoBoss;
- bool m_lastShowDisplayName;
-
- bool m_showHealth, m_showFood, m_showAir, m_showArmour, m_showExpBar;
- bool m_lastRegenEffect;
- int m_lastSaturation;
-
- unsigned int m_uiSelectedItemOpacityCountDown;
-
- wstring m_displayName;
-
protected:
UIControl_Label m_labelChatText[CHAT_LINES_COUNT];
UIControl_Label m_labelJukebox;
@@ -41,11 +18,13 @@ protected:
IggyName m_funcLoadHud, m_funcSetExpBarProgress, m_funcSetPlayerLevel, m_funcSetActiveSlot;
IggyName m_funcSetHealth, m_funcSetFood, m_funcSetAir, m_funcSetArmour;
- IggyName m_funcShowHealth, m_funcShowFood, m_funcShowAir, m_funcShowArmour, m_funcShowExpbar;
+ IggyName m_funcShowHealth, m_funcShowHorseHealth, m_funcShowFood, m_funcShowAir, m_funcShowArmour, m_funcShowExpbar;
IggyName m_funcSetRegenerationEffect, m_funcSetFoodSaturationLevel;
IggyName m_funcSetDragonHealth, m_funcSetDragonLabel, m_funcShowDragonHealth;
IggyName m_funcSetSelectedLabel, m_funcHideSelectedLabel;
IggyName m_funcRepositionHud, m_funcSetDisplayName, m_funcSetTooltipsEnabled;
+ IggyName m_funcSetRidingHorse, m_funcSetHorseHealth, m_funcSetHorseJumpBarProgress;
+ IggyName m_funcSetHealthAbsorb;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT(m_labelChatText[0],"Label1")
UI_MAP_ELEMENT(m_labelChatText[1],"Label2")
@@ -84,6 +63,7 @@ protected:
UI_MAP_NAME(m_funcSetArmour, L"SetArmour")
UI_MAP_NAME(m_funcShowHealth, L"ShowHealth")
+ UI_MAP_NAME(m_funcShowHorseHealth, L"ShowHorseHealth")
UI_MAP_NAME(m_funcShowFood, L"ShowFood")
UI_MAP_NAME(m_funcShowAir, L"ShowAir")
UI_MAP_NAME(m_funcShowArmour, L"ShowArmour")
@@ -103,6 +83,12 @@ protected:
UI_MAP_NAME(m_funcSetDisplayName, L"SetGamertag")
UI_MAP_NAME(m_funcSetTooltipsEnabled, L"SetTooltipsEnabled")
+
+ UI_MAP_NAME(m_funcSetRidingHorse, L"SetRidingHorse")
+ UI_MAP_NAME(m_funcSetHorseHealth, L"SetHorseHealth")
+ UI_MAP_NAME(m_funcSetHorseJumpBarProgress, L"SetHorseJumpBarProgress")
+
+ UI_MAP_NAME(m_funcSetHealthAbsorb, L"SetHealthAbsorb")
UI_END_MAP_ELEMENTS_AND_NAMES()
public:
@@ -133,17 +119,22 @@ public:
virtual void handleReload();
private:
+ virtual int getPad();
+ virtual void SetOpacity(float opacity);
+ virtual void SetVisible(bool visible);
+
void SetHudSize(int scale);
- void SetExpBarProgress(float progress);
+ void SetExpBarProgress(float progress, int xpNeededForNextLevel);
void SetExpLevel(int level);
void SetActiveSlot(int slot);
- void SetHealth(int iHealth, int iLastHealth, bool bBlink, bool bPoison);
+ void SetHealth(int iHealth, int iLastHealth, bool bBlink, bool bPoison, bool bWither);
void SetFood(int iFood, int iLastFood, bool bPoison);
- void SetAir(int iAir);
+ void SetAir(int iAir, int extra);
void SetArmour(int iArmour);
void ShowHealth(bool show);
+ void ShowHorseHealth(bool show);
void ShowFood(bool show);
void ShowAir(bool show);
void ShowArmour(bool show);
@@ -162,6 +153,12 @@ private:
void SetTooltipsEnabled(bool bEnabled);
+ void SetRidingHorse(bool ridingHorse, bool bIsJumpable, int maxHorseHealth);
+ void SetHorseHealth(int health, bool blink = false);
+ void SetHorseJumpBarProgress(float progress);
+
+ void SetHealthAbsorb(int healthAbsorb);
+
public:
void SetSelectedLabel(const wstring &label);
void ShowDisplayName(bool show);
diff --git a/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp
index 3fe03325..a0d63172 100644
--- a/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_HelpAndOptionsMenu.cpp
@@ -10,21 +10,19 @@ UIScene_HelpAndOptionsMenu::UIScene_HelpAndOptionsMenu(int iPad, void *initData,
m_bNotInGame=(Minecraft::GetInstance()->level==NULL);
- m_buttons[BUTTON_HAO_CHANGESKIN].init(app.GetString(IDS_CHANGE_SKIN),BUTTON_HAO_CHANGESKIN);
- m_buttons[BUTTON_HAO_HOWTOPLAY].init(app.GetString(IDS_HOW_TO_PLAY),BUTTON_HAO_HOWTOPLAY);
- m_buttons[BUTTON_HAO_CONTROLS].init(app.GetString(IDS_CONTROLS),BUTTON_HAO_CONTROLS);
- m_buttons[BUTTON_HAO_SETTINGS].init(app.GetString(IDS_SETTINGS),BUTTON_HAO_SETTINGS);
- m_buttons[BUTTON_HAO_CREDITS].init(app.GetString(IDS_CREDITS),BUTTON_HAO_CREDITS);
+ m_buttons[BUTTON_HAO_CHANGESKIN].init(IDS_CHANGE_SKIN,BUTTON_HAO_CHANGESKIN);
+ m_buttons[BUTTON_HAO_HOWTOPLAY].init(IDS_HOW_TO_PLAY,BUTTON_HAO_HOWTOPLAY);
+ m_buttons[BUTTON_HAO_CONTROLS].init(IDS_CONTROLS,BUTTON_HAO_CONTROLS);
+ m_buttons[BUTTON_HAO_SETTINGS].init(IDS_SETTINGS,BUTTON_HAO_SETTINGS);
+ m_buttons[BUTTON_HAO_CREDITS].init(IDS_CREDITS,BUTTON_HAO_CREDITS);
//m_buttons[BUTTON_HAO_REINSTALL].init(app.GetString(IDS_REINSTALL_CONTENT),BUTTON_HAO_REINSTALL);
- m_buttons[BUTTON_HAO_DEBUG].init(app.GetString(IDS_DEBUG_SETTINGS),BUTTON_HAO_DEBUG);
+ m_buttons[BUTTON_HAO_DEBUG].init(IDS_DEBUG_SETTINGS,BUTTON_HAO_DEBUG);
/* 4J-TomK - we should never remove a control before the other buttons controls are initialised!
(because vita touchboxes are rebuilt on remove since the remaining positions might change) */
// We don't have a reinstall content, so remove the button
removeControl( &m_buttons[BUTTON_HAO_REINSTALL], false );
- doHorizontalResizeCheck();
-
#ifdef _FINAL_BUILD
removeControl( &m_buttons[BUTTON_HAO_DEBUG], false);
#else
@@ -75,6 +73,9 @@ UIScene_HelpAndOptionsMenu::UIScene_HelpAndOptionsMenu(int iPad, void *initData,
removeControl( &m_buttons[BUTTON_HAO_CHANGESKIN], false);
}
+ // 4J-TomK Moved horizontal resize check to the end to prevent horizontal scaling for buttons that might get removed anyways (debug options for example)
+ doHorizontalResizeCheck();
+
//StorageManager.TMSPP_GetUserQuotaInfo(C4JStorage::eGlobalStorage_TitleUser,iPad);
//StorageManager.WebServiceRequestGetFriends(iPad);
}
diff --git a/Minecraft.Client/Common/UI/UIScene_HopperMenu.cpp b/Minecraft.Client/Common/UI/UIScene_HopperMenu.cpp
new file mode 100644
index 00000000..f0f6db18
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_HopperMenu.cpp
@@ -0,0 +1,197 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
+#include "..\..\Minecraft.h"
+#include "UIScene_HopperMenu.h"
+
+UIScene_HopperMenu::UIScene_HopperMenu(int iPad, void *_initData, UILayer *parentLayer) : UIScene_AbstractContainerMenu(iPad, parentLayer)
+{
+ // Setup all the Iggy references we need for this scene
+ initialiseMovie();
+
+ HopperScreenInput *initData = (HopperScreenInput *)_initData;
+
+ m_labelDispenser.init(initData->hopper->getName());
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if( pMinecraft->localgameModes[initData->iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[initData->iPad];
+ m_previousTutorialState = gameMode->getTutorial()->getCurrentState();
+ gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Hopper_Menu, this);
+ }
+
+ HopperMenu* menu = new HopperMenu( initData->inventory, initData->hopper );
+
+ m_containerSize = initData->hopper->getContainerSize();
+ Initialize( initData->iPad, menu, true, m_containerSize, eSectionHopperUsing, eSectionHopperMax );
+
+ m_slotListTrap.addSlots(0, 9);
+
+ delete initData;
+}
+
+wstring UIScene_HopperMenu::getMoviePath()
+{
+ if(app.GetLocalPlayerCount() > 1)
+ {
+ return L"HopperMenuSplit";
+ }
+ else
+ {
+ return L"HopperMenu";
+ }
+}
+
+void UIScene_HopperMenu::handleReload()
+{
+ Initialize( m_iPad, m_menu, true, m_containerSize, eSectionHopperUsing, eSectionHopperMax );
+
+ m_slotListTrap.addSlots(0, 9);
+}
+
+int UIScene_HopperMenu::getSectionColumns(ESceneSection eSection)
+{
+ int cols = 0;
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ cols = 5;
+ break;
+ case eSectionHopperInventory:
+ cols = 9;
+ break;
+ case eSectionHopperUsing:
+ cols = 9;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return cols;
+}
+
+int UIScene_HopperMenu::getSectionRows(ESceneSection eSection)
+{
+ int rows = 0;
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ rows = 1;
+ break;
+ case eSectionHopperInventory:
+ rows = 3;
+ break;
+ case eSectionHopperUsing:
+ rows = 1;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return rows;
+}
+
+void UIScene_HopperMenu::GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition )
+{
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ pPosition->x = m_slotListTrap.getXPos();
+ pPosition->y = m_slotListTrap.getYPos();
+ break;
+ case eSectionHopperInventory:
+ pPosition->x = m_slotListInventory.getXPos();
+ pPosition->y = m_slotListInventory.getYPos();
+ break;
+ case eSectionHopperUsing:
+ pPosition->x = m_slotListHotbar.getXPos();
+ pPosition->y = m_slotListHotbar.getYPos();
+ break;
+ default:
+ assert( false );
+ break;
+ }
+}
+
+void UIScene_HopperMenu::GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize )
+{
+ UIVec2D sectionSize;
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ sectionSize.x = m_slotListTrap.getWidth();
+ sectionSize.y = m_slotListTrap.getHeight();
+ break;
+ case eSectionHopperInventory:
+ sectionSize.x = m_slotListInventory.getWidth();
+ sectionSize.y = m_slotListInventory.getHeight();
+ break;
+ case eSectionHopperUsing:
+ sectionSize.x = m_slotListHotbar.getWidth();
+ sectionSize.y = m_slotListHotbar.getHeight();
+ break;
+ default:
+ assert( false );
+ break;
+ }
+
+ int rows = getSectionRows(eSection);
+ int cols = getSectionColumns(eSection);
+
+ pSize->x = sectionSize.x/cols;
+ pSize->y = sectionSize.y/rows;
+
+ int itemCol = iItemIndex % cols;
+ int itemRow = iItemIndex/cols;
+
+ pPosition->x = itemCol * pSize->x;
+ pPosition->y = itemRow * pSize->y;
+}
+
+void UIScene_HopperMenu::setSectionSelectedSlot(ESceneSection eSection, int x, int y)
+{
+ int cols = getSectionColumns(eSection);
+
+ int index = (y * cols) + x;
+
+ UIControl_SlotList *slotList = NULL;
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ slotList = &m_slotListTrap;
+ break;
+ case eSectionHopperInventory:
+ slotList = &m_slotListInventory;
+ break;
+ case eSectionHopperUsing:
+ slotList = &m_slotListHotbar;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ slotList->setHighlightSlot(index);
+}
+
+UIControl *UIScene_HopperMenu::getSection(ESceneSection eSection)
+{
+ UIControl *control = NULL;
+ switch( eSection )
+ {
+ case eSectionHopperContents:
+ control = &m_slotListTrap;
+ break;
+ case eSectionHopperInventory:
+ control = &m_slotListInventory;
+ break;
+ case eSectionHopperUsing:
+ control = &m_slotListHotbar;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return control;
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_HopperMenu.h b/Minecraft.Client/Common/UI/UIScene_HopperMenu.h
new file mode 100644
index 00000000..ff058fe8
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_HopperMenu.h
@@ -0,0 +1,40 @@
+#pragma once
+
+#include "UIScene_AbstractContainerMenu.h"
+#include "IUIScene_HopperMenu.h"
+
+class InventoryMenu;
+
+class UIScene_HopperMenu : public UIScene_AbstractContainerMenu, public IUIScene_HopperMenu
+{
+private:
+ int m_containerSize;
+
+public:
+ UIScene_HopperMenu(int iPad, void *initData, UILayer *parentLayer);
+
+ virtual EUIScene getSceneType() { return eUIScene_HopperMenu;}
+
+protected:
+ UIControl_SlotList m_slotListTrap;
+ UIControl_Label m_labelDispenser;
+
+ UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene_AbstractContainerMenu)
+ UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlMainPanel )
+ UI_MAP_ELEMENT( m_slotListTrap, "Trap")
+ UI_MAP_ELEMENT( m_labelDispenser, "dispenserLabel")
+ UI_END_MAP_CHILD_ELEMENTS()
+ UI_END_MAP_ELEMENTS_AND_NAMES()
+
+ virtual wstring getMoviePath();
+ virtual void handleReload();
+
+ virtual int getSectionColumns(ESceneSection eSection);
+ virtual int getSectionRows(ESceneSection eSection);
+ virtual void GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition );
+ virtual void GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize );
+ virtual void handleSectionClick(ESceneSection eSection) {}
+ virtual void setSectionSelectedSlot(ESceneSection eSection, int x, int y);
+
+ virtual UIControl *getSection(ESceneSection eSection);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.cpp b/Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.cpp
new file mode 100644
index 00000000..ab98e30f
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.cpp
@@ -0,0 +1,338 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.animal.h"
+#include "MultiPlayerLocalPlayer.h"
+#include "..\..\Minecraft.h"
+#include "UIScene_HorseInventoryMenu.h"
+
+UIScene_HorseInventoryMenu::UIScene_HorseInventoryMenu(int iPad, void *_initData, UILayer *parentLayer) : UIScene_AbstractContainerMenu(iPad, parentLayer)
+{
+ // Setup all the Iggy references we need for this scene
+ initialiseMovie();
+
+ HorseScreenInput *initData = (HorseScreenInput *)_initData;
+
+ m_labelHorse.init( initData->container->getName() );
+ m_inventory = initData->inventory;
+ m_horse = initData->horse;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if( pMinecraft->localgameModes[iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[iPad];
+ m_previousTutorialState = gameMode->getTutorial()->getCurrentState();
+ gameMode->getTutorial()->changeTutorialState(e_Tutorial_State_Horse_Menu, this);
+ }
+
+ HorseInventoryMenu *horseMenu = new HorseInventoryMenu(initData->inventory, initData->container, initData->horse);
+
+ int startSlot = EntityHorse::INV_BASE_COUNT;
+ if(m_horse->isChestedHorse())
+ {
+ startSlot += EntityHorse::INV_DONKEY_CHEST_COUNT;
+ }
+ Initialize( iPad, horseMenu, true, startSlot, eSectionHorseUsing, eSectionHorseMax );
+
+ m_slotSaddle.addSlots(EntityHorse::INV_SLOT_SADDLE,1);
+ m_slotArmor.addSlots(EntityHorse::INV_SLOT_ARMOR,1);
+
+ if(m_horse->isChestedHorse())
+ {
+ // also starts at one, because a donkey can't wear armor!
+ m_slotListChest.addSlots(EntityHorse::INV_BASE_COUNT, EntityHorse::INV_DONKEY_CHEST_COUNT);
+ }
+
+ // remove horse inventory
+ if(!m_horse->isChestedHorse())
+ SetHasInventory(false);
+
+ // cannot wear armor? remove armor slot!
+ if(!m_horse->canWearArmor())
+ SetIsDonkey(true);
+
+ if(initData) delete initData;
+
+ setIgnoreInput(false);
+
+ //app.SetRichPresenceContext(iPad, CONTEXT_GAME_STATE_HORSE);
+}
+
+wstring UIScene_HorseInventoryMenu::getMoviePath()
+{
+ if(app.GetLocalPlayerCount() > 1)
+ {
+ return L"HorseInventoryMenuSplit";
+ }
+ else
+ {
+ return L"HorseInventoryMenu";
+ }
+}
+
+void UIScene_HorseInventoryMenu::handleReload()
+{
+ int startSlot = EntityHorse::INV_BASE_COUNT;
+ if(m_horse->isChestedHorse())
+ {
+ startSlot += EntityHorse::INV_DONKEY_CHEST_COUNT;
+ }
+ Initialize( m_iPad, m_menu, true, startSlot, eSectionHorseUsing, eSectionHorseMax );
+
+ m_slotSaddle.addSlots(EntityHorse::INV_SLOT_SADDLE,1);
+ m_slotArmor.addSlots(EntityHorse::INV_SLOT_ARMOR,1);
+
+ if(m_horse->isChestedHorse())
+ {
+ // also starts at one, because a donkey can't wear armor!
+ m_slotListChest.addSlots(EntityHorse::INV_BASE_COUNT, EntityHorse::INV_DONKEY_CHEST_COUNT);
+ }
+
+ // remove horse inventory
+ if(!m_horse->isChestedHorse())
+ SetHasInventory(false);
+
+ // cannot wear armor? remove armor slot!
+ if(!m_horse->canWearArmor())
+ SetIsDonkey(true);
+}
+
+int UIScene_HorseInventoryMenu::getSectionColumns(ESceneSection eSection)
+{
+ int cols = 0;
+ switch( eSection )
+ {
+ case eSectionHorseArmor:
+ cols = 1;
+ break;
+ case eSectionHorseSaddle:
+ cols = 1;
+ break;
+ case eSectionHorseChest:
+ cols = 5;
+ break;
+ case eSectionHorseInventory:
+ cols = 9;
+ break;
+ case eSectionHorseUsing:
+ cols = 9;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return cols;
+}
+
+int UIScene_HorseInventoryMenu::getSectionRows(ESceneSection eSection)
+{
+ int rows = 0;
+ switch( eSection )
+ {
+ case eSectionHorseArmor:
+ rows = 1;
+ break;
+ case eSectionHorseSaddle:
+ rows = 1;
+ break;
+ case eSectionHorseChest:
+ rows = 3;
+ break;
+ case eSectionHorseInventory:
+ rows = 3;
+ break;
+ case eSectionHorseUsing:
+ rows = 1;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return rows;
+}
+
+void UIScene_HorseInventoryMenu::GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition )
+{
+ switch( eSection )
+ {
+ case eSectionHorseArmor:
+ pPosition->x = m_slotArmor.getXPos();
+ pPosition->y = m_slotArmor.getYPos();
+ break;
+ case eSectionHorseSaddle:
+ pPosition->x = m_slotSaddle.getXPos();
+ pPosition->y = m_slotSaddle.getYPos();
+ break;
+ case eSectionHorseChest:
+ pPosition->x = m_slotListChest.getXPos();
+ pPosition->y = m_slotListChest.getYPos();
+ break;
+ case eSectionHorseInventory:
+ pPosition->x = m_slotListInventory.getXPos();
+ pPosition->y = m_slotListInventory.getYPos();
+ break;
+ case eSectionHorseUsing:
+ pPosition->x = m_slotListHotbar.getXPos();
+ pPosition->y = m_slotListHotbar.getYPos();
+ break;
+ default:
+ assert( false );
+ break;
+ }
+}
+
+void UIScene_HorseInventoryMenu::GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize )
+{
+ UIVec2D sectionSize;
+
+ switch( eSection )
+ {
+ case eSectionHorseArmor:
+ sectionSize.x = m_slotArmor.getWidth();
+ sectionSize.y = m_slotArmor.getHeight();
+ break;
+ case eSectionHorseSaddle:
+ sectionSize.x = m_slotSaddle.getWidth();
+ sectionSize.y = m_slotSaddle.getHeight();
+ break;
+ case eSectionHorseChest:
+ sectionSize.x = m_slotListChest.getWidth();
+ sectionSize.y = m_slotListChest.getHeight();
+ break;
+ case eSectionHorseInventory:
+ sectionSize.x = m_slotListInventory.getWidth();
+ sectionSize.y = m_slotListInventory.getHeight();
+ break;
+ case eSectionHorseUsing:
+ sectionSize.x = m_slotListHotbar.getWidth();
+ sectionSize.y = m_slotListHotbar.getHeight();
+ break;
+ default:
+ assert( false );
+ break;
+ }
+
+ if(IsSectionSlotList(eSection))
+ {
+ int rows = getSectionRows(eSection);
+ int cols = getSectionColumns(eSection);
+
+ pSize->x = sectionSize.x/cols;
+ pSize->y = sectionSize.y/rows;
+
+ int itemCol = iItemIndex % cols;
+ int itemRow = iItemIndex/cols;
+
+ pPosition->x = itemCol * pSize->x;
+ pPosition->y = itemRow * pSize->y;
+ }
+ else
+ {
+ GetPositionOfSection(eSection, pPosition);
+ pSize->x = sectionSize.x;
+ pSize->y = sectionSize.y;
+ }
+}
+
+void UIScene_HorseInventoryMenu::setSectionSelectedSlot(ESceneSection eSection, int x, int y)
+{
+ int cols = getSectionColumns(eSection);
+
+ int index = (y * cols) + x;
+
+ UIControl_SlotList *slotList = NULL;
+ switch( eSection )
+ {
+ case eSectionHorseArmor:
+ slotList = &m_slotArmor;
+ break;
+ case eSectionHorseSaddle:
+ slotList = &m_slotSaddle;
+ break;
+ case eSectionHorseChest:
+ slotList = &m_slotListChest;
+ break;
+ case eSectionHorseInventory:
+ slotList = &m_slotListInventory;
+ break;
+ case eSectionHorseUsing:
+ slotList = &m_slotListHotbar;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+
+ slotList->setHighlightSlot(index);
+}
+
+UIControl *UIScene_HorseInventoryMenu::getSection(ESceneSection eSection)
+{
+ UIControl *control = NULL;
+ switch( eSection )
+ {
+ case eSectionHorseArmor:
+ control = &m_slotArmor;
+ break;
+ case eSectionHorseSaddle:
+ control = &m_slotSaddle;
+ break;
+ case eSectionHorseChest:
+ control = &m_slotListChest;
+ break;
+ case eSectionHorseInventory:
+ control = &m_slotListInventory;
+ break;
+ case eSectionHorseUsing:
+ control = &m_slotListHotbar;
+ break;
+ default:
+ assert( false );
+ break;
+ }
+ return control;
+}
+
+void UIScene_HorseInventoryMenu::customDraw(IggyCustomDrawCallbackRegion *region)
+{
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if(pMinecraft->localplayers[m_iPad] == NULL || pMinecraft->localgameModes[m_iPad] == NULL) return;
+
+ if(wcscmp((wchar_t *)region->name,L"horse")==0)
+ {
+ // Setup GDraw, normal game render states and matrices
+ CustomDrawData *customDrawRegion = ui.setupCustomDraw(this,region);
+ delete customDrawRegion;
+
+ m_horsePreview.render(region);
+
+ // Finish GDraw and anything else that needs to be finalised
+ ui.endCustomDraw(region);
+ }
+ else
+ {
+ UIScene_AbstractContainerMenu::customDraw(region);
+ }
+}
+
+void UIScene_HorseInventoryMenu::SetHasInventory(bool bHasInventory)
+{
+ app.DebugPrintf("SetHasInventory to %d\n", bHasInventory);
+
+ IggyDataValue result;
+ IggyDataValue value[1];
+ value[0].type = IGGY_DATATYPE_boolean;
+ value[0].boolval = bHasInventory;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetHasInventory , 1 , value );
+}
+
+void UIScene_HorseInventoryMenu::SetIsDonkey(bool bSetIsDonkey)
+{
+ app.DebugPrintf("SetIsDonkey to %d\n", bSetIsDonkey);
+
+ IggyDataValue result;
+ IggyDataValue value[1];
+ value[0].type = IGGY_DATATYPE_boolean;
+ value[0].boolval = bSetIsDonkey;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetIsDonkey , 1 , value );
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.h b/Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.h
new file mode 100644
index 00000000..063e1128
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_HorseInventoryMenu.h
@@ -0,0 +1,54 @@
+#pragma once
+
+#include "UIScene_AbstractContainerMenu.h"
+#include "IUIScene_HorseInventoryMenu.h"
+
+class InventoryMenu;
+
+class UIScene_HorseInventoryMenu : public UIScene_AbstractContainerMenu, public IUIScene_HorseInventoryMenu
+{
+ friend class UIControl_MinecraftHorse;
+public:
+ UIScene_HorseInventoryMenu(int iPad, void *initData, UILayer *parentLayer);
+
+ virtual EUIScene getSceneType() { return eUIScene_HorseMenu;}
+
+protected:
+ UIControl_SlotList m_slotSaddle, m_slotArmor, m_slotListChest;
+ UIControl_Label m_labelHorse;
+
+ IggyName m_funcSetIsDonkey, m_funcSetHasInventory;
+
+ UIControl_MinecraftHorse m_horsePreview;
+
+ UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene_AbstractContainerMenu)
+ UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlMainPanel )
+ UI_MAP_ELEMENT( m_slotSaddle, "SlotSaddle")
+ UI_MAP_ELEMENT( m_slotArmor, "SlotArmor")
+ UI_MAP_ELEMENT( m_slotListChest, "DonkeyInventoryList")
+ UI_MAP_ELEMENT( m_labelHorse, "horseinventoryText")
+
+ UI_MAP_ELEMENT( m_horsePreview, "iggy_horse")
+ UI_END_MAP_CHILD_ELEMENTS()
+
+ UI_MAP_NAME(m_funcSetIsDonkey, L"SetIsDonkey")
+ UI_MAP_NAME(m_funcSetHasInventory, L"SetHasInventory")
+ UI_END_MAP_ELEMENTS_AND_NAMES()
+
+ virtual wstring getMoviePath();
+ virtual void handleReload();
+
+ virtual int getSectionColumns(ESceneSection eSection);
+ virtual int getSectionRows(ESceneSection eSection);
+ virtual void GetPositionOfSection( ESceneSection eSection, UIVec2D* pPosition );
+ virtual void GetItemScreenData( ESceneSection eSection, int iItemIndex, UIVec2D* pPosition, UIVec2D* pSize );
+ virtual void handleSectionClick(ESceneSection eSection) {}
+ virtual void setSectionSelectedSlot(ESceneSection eSection, int x, int y);
+
+ virtual UIControl *getSection(ESceneSection eSection);
+
+ virtual void customDraw(IggyCustomDrawCallbackRegion *region);
+
+ void SetHasInventory(bool bHasInventory);
+ void SetIsDonkey(bool bSetIsDonkey);
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_HowToPlay.cpp b/Minecraft.Client/Common/UI/UIScene_HowToPlay.cpp
index 68c7591f..e33e24fe 100644
--- a/Minecraft.Client/Common/UI/UIScene_HowToPlay.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_HowToPlay.cpp
@@ -24,6 +24,11 @@ static UIScene_HowToPlay::SHowToPlayPageDef gs_aPageDefs[ eHowToPlay_NumPages ]
{ IDS_HOW_TO_PLAY_FARMANIMALS, 0, 0}, // eHowToPlay_Breeding
{ IDS_HOW_TO_PLAY_BREEDANIMALS, 0, 0}, // eHowToPlay_Breeding
{ IDS_HOW_TO_PLAY_TRADING, UIScene_HowToPlay::eHowToPlay_LabelTrading_Inventory, 5}, // eHowToPlay_Trading
+ { IDS_HOW_TO_PLAY_HORSES, 0, 0}, // eHowToPlay_Horses
+ { IDS_HOW_TO_PLAY_BEACONS, 0, 0}, // eHowToPlay_Beacons
+ { IDS_HOW_TO_PLAY_FIREWORKS, 0, 0}, // eHowToPlay_Fireworks
+ { IDS_HOW_TO_PLAY_HOPPERS, 0, 0}, // eHowToPlay_Hoppers
+ { IDS_HOW_TO_PLAY_DROPPERS, 0, 0}, // eHowToPlay_Droppers
{ IDS_HOW_TO_PLAY_NETHERPORTAL, 0, 0}, // eHowToPlay_NetherPortal
{ IDS_HOW_TO_PLAY_THEEND, 0, 0}, // eHowToPlay_NetherPortal
#ifdef _XBOX
@@ -56,6 +61,12 @@ int gs_pageToFlashMapping[eHowToPlay_NumPages] =
15, //eHowToPlay_Breeding,
22, //eHowToPlay_Trading,
+ 24, //eHowToPlay_Horses
+ 25, //eHowToPlay_Beacons
+ 26, //eHowToPlay_Fireworks
+ 27, //eHowToPlay_Hoppers
+ 28, //eHowToPlay_Droppers
+
16, //eHowToPlay_NetherPortal,
17, //eHowToPlay_TheEnd,
#ifdef _XBOX
@@ -83,7 +94,7 @@ UIScene_HowToPlay::UIScene_HowToPlay(int iPad, void *initData, UILayer *parentLa
m_labels[ eHowToPlay_LabelFChest].init(app.GetString(IDS_FURNACE));
m_labels[ eHowToPlay_LabelLCInventory].init(inventoryString);
m_labels[ eHowToPlay_LabelCreativeInventory].init(app.GetString(IDS_GROUPNAME_BUILDING_BLOCKS));
- m_labels[ eHowToPlay_LabelLCChest].init(app.GetString(IDS_CHEST));
+ m_labels[ eHowToPlay_LabelLCChest].init(app.GetString(IDS_CHEST_LARGE));
m_labels[ eHowToPlay_LabelSCInventory].init(inventoryString);
m_labels[ eHowToPlay_LabelSCChest].init(app.GetString(IDS_CHEST));
m_labels[ eHowToPlay_LabelIInventory].init(inventoryString);
@@ -105,6 +116,18 @@ UIScene_HowToPlay::UIScene_HowToPlay(int iPad, void *initData, UILayer *parentLa
m_labels[ eHowToPlay_LabelTrading_Offer1].init(app.GetString(IDS_ITEM_EMERALD));
m_labels[ eHowToPlay_LabelTrading_NeededForTrade].init(app.GetString(IDS_REQUIRED_ITEMS_FOR_TRADE));
+ m_labels[ eHowToPlay_LabelBeacon_PrimaryPower].init(app.GetString(IDS_CONTAINER_BEACON_PRIMARY_POWER));
+ m_labels[ eHowToPlay_LabelBeacon_SecondaryPower].init(app.GetString(IDS_CONTAINER_BEACON_SECONDARY_POWER));
+
+ m_labels[ eHowToPlay_LabelFireworksText].init(app.GetString(IDS_HOW_TO_PLAY_MENU_FIREWORKS));
+ m_labels[ eHowToPlay_LabelFireworksInventory].init(inventoryString.c_str());
+
+ m_labels[ eHowToPlay_LabelHopperText].init(app.GetString(IDS_TILE_HOPPER));
+ m_labels[ eHowToPlay_LabelHopperInventory].init(inventoryString.c_str());
+
+ m_labels[ eHowToPlay_LabelDropperText].init(app.GetString(IDS_TILE_DROPPER));
+ m_labels[ eHowToPlay_LabelDropperInventory].init(inventoryString.c_str());
+
wsTemp = app.GetString(IDS_VILLAGER_OFFERS_ITEM);
wsTemp = replaceAll(wsTemp,L"{*VILLAGER_TYPE*}",app.GetString(IDS_VILLAGER_PRIEST));
wsTemp.replace(wsTemp.find(L"%s"),2, app.GetString(IDS_TILE_LIGHT_GEM));
@@ -138,13 +161,9 @@ void UIScene_HowToPlay::updateTooltips()
int iPage = ( int )( m_eCurrPage );
int firstPage = eHowToPlay_WhatsNew;
-#ifdef __PS3__
- // If it's the blu ray, or the first Japanese digital game, there's no What's New until the first patch, which will take this line out
- if(StorageManager.GetBootTypeDisc() || (app.GetProductSKU()==e_sku_SCEJ))
- {
- ++firstPage;
- }
-#elif defined(__ORBIS__) || defined(_DURANGO) || defined(__PSVITA__)
+
+ // 4J Stu - Add back for future platforms
+#if 0
// No What's New for the first PS4 and Xbox One builds
if(true)
{
@@ -212,18 +231,8 @@ void UIScene_HowToPlay::handleInput(int iPad, int key, bool repeat, bool pressed
// Previous page
int iPrevPage = ( int )( m_eCurrPage ) - 1;
-#ifdef __PS3__
- // If it's the blu ray, or the first Japanese digital game, there's no What's New until the first patch, which will take this line out
- if(StorageManager.GetBootTypeDisc() || (app.GetProductSKU()==e_sku_SCEJ))
- {
- if ( iPrevPage >= 0 && !((iPrevPage==eHowToPlay_WhatsNew)))
- {
- StartPage( ( EHowToPlayPage )( iPrevPage ) );
- ui.PlayUISFX(eSFX_Press);
- }
- }
- else
-#elif defined(__ORBIS__) || defined(_DURANGO) || defined(__PSVITA__)
+ // 4J Stu - Add back for future platforms
+#if 0
// No What's New for the first PS4 and Xbox One builds
if(true)
{
@@ -266,15 +275,21 @@ void UIScene_HowToPlay::StartPage( EHowToPlayPage ePage )
wstring replacedText = app.FormatHTMLString(m_iPad, app.GetString( pDef->m_iTextStringID ));
// 4J-PB - replace the title with the platform specific title, and the platform name
// replacedText = replaceAll(replacedText,L"{*TITLE_UPDATE_NAME*}",app.GetString(IDS_TITLE_UPDATE_NAME));
-#ifndef _WINDOWS64
replacedText = replaceAll(replacedText,L"{*KICK_PLAYER_DESCRIPTION*}",app.GetString(IDS_KICK_PLAYER_DESCRIPTION));
-#endif
#ifdef _XBOX_ONE
replacedText = replaceAll(replacedText,L"{*PLATFORM_NAME*}",app.GetString(IDS_PLATFORM_NAME));
#endif
replacedText = replaceAll(replacedText,L"{*BACK_BUTTON*}",app.GetString(IDS_BACK_BUTTON));
replacedText = replaceAll(replacedText,L"{*DISABLES_ACHIEVEMENTS*}",app.GetString(IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS));
+ // 4J-JEV: Temporary fix: LOC: Minecraft: XB1: KO: Font: Uncategorized: Squares appear instead of hyphens in FIREWORKS description
+ if (!ui.UsingBitmapFont())
+ {
+ replacedText = replaceAll(replacedText, L"\u00A9", L"(C)");
+ replacedText = replaceAll(replacedText, L"\u00AE", L"(R)");
+ replacedText = replaceAll(replacedText, L"\u2013", L"-");
+ }
+
// strip out any tab characters and repeated spaces
stripWhitespaceForHtml( replacedText, true );
diff --git a/Minecraft.Client/Common/UI/UIScene_HowToPlay.h b/Minecraft.Client/Common/UI/UIScene_HowToPlay.h
index cff07256..fe845896 100644
--- a/Minecraft.Client/Common/UI/UIScene_HowToPlay.h
+++ b/Minecraft.Client/Common/UI/UIScene_HowToPlay.h
@@ -39,6 +39,14 @@ public:
eHowToPlay_LabelTrading_Offer1,
eHowToPlay_LabelTrading_NeededForTrade,
eHowToPlay_LabelTrading_VillagerOffers,
+ eHowToPlay_LabelBeacon_PrimaryPower,
+ eHowToPlay_LabelBeacon_SecondaryPower,
+ eHowToPlay_LabelFireworksText,
+ eHowToPlay_LabelFireworksInventory,
+ eHowToPlay_LabelHopperText,
+ eHowToPlay_LabelHopperInventory,
+ eHowToPlay_LabelDropperText,
+ eHowToPlay_LabelDropperInventory,
eHowToPlay_NumLabels
};
@@ -99,6 +107,18 @@ private:
UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelAnvil_ARepairAndName ] , "Label1_21" )
UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelAnvil_Cost ] , "Label2_21" )
UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelAnvil_Inventory ] , "Label3_21" )
+
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelBeacon_PrimaryPower ] , "Label1_25" )
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelBeacon_SecondaryPower ] , "Label2_25" )
+
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelFireworksText ] , "Label1_26" )
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelFireworksInventory ] , "Label2_26" )
+
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelHopperText ] , "Label1_27" )
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelHopperInventory ] , "Label2_27" )
+
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelDropperText ] , "Label1_28" )
+ UI_MAP_ELEMENT( m_labels[ eHowToPlay_LabelDropperInventory ] , "Label2_28" )
UI_MAP_NAME(m_funcLoadPage, L"LoadHowToPlayPage")
UI_END_MAP_ELEMENTS_AND_NAMES()
diff --git a/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.cpp b/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.cpp
index 5fc6e02b..92e8bdef 100644
--- a/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.cpp
@@ -23,6 +23,12 @@ unsigned int UIScene_HowToPlayMenu::m_uiHTPButtonNameA[]=
IDS_HOW_TO_PLAY_MENU_BREEDANIMALS, // eHTPButton_Breeding,
IDS_HOW_TO_PLAY_MENU_TRADING,
+ IDS_HOW_TO_PLAY_MENU_HORSES,
+ IDS_HOW_TO_PLAY_MENU_BEACONS,
+ IDS_HOW_TO_PLAY_MENU_FIREWORKS,
+ IDS_HOW_TO_PLAY_MENU_HOPPERS,
+ IDS_HOW_TO_PLAY_MENU_DROPPERS,
+
IDS_HOW_TO_PLAY_MENU_NETHERPORTAL, // eHTPButton_NetherPortal,
IDS_HOW_TO_PLAY_MENU_THEEND, // eHTPButton_TheEnd,
#ifdef _XBOX
@@ -53,6 +59,12 @@ unsigned int UIScene_HowToPlayMenu::m_uiHTPSceneA[]=
eHowToPlay_Breeding,
eHowToPlay_Trading,
+ eHowToPlay_Horses,
+ eHowToPlay_Beacons,
+ eHowToPlay_Fireworks,
+ eHowToPlay_Hoppers,
+ eHowToPlay_Droppers,
+
eHowToPlay_NetherPortal,
eHowToPlay_TheEnd,
#ifdef _XBOX
@@ -71,18 +83,9 @@ UIScene_HowToPlayMenu::UIScene_HowToPlayMenu(int iPad, void *initData, UILayer *
for(unsigned int i = 0; i < eHTPButton_Max; ++i)
{
-#ifdef __PS3__
- // If it's the blu ray, or the first Japanese digital game, there's no What's New until the first patch, which will take this line out
- if(StorageManager.GetBootTypeDisc() || (app.GetProductSKU()==e_sku_SCEJ))
- {
- if(!(i==eHTPButton_WhatsNew) )
- {
- m_buttonListHowTo.addItem( app.GetString(m_uiHTPButtonNameA[i]) , i);//iCount++);
- }
- }
- else
-#elif defined(__ORBIS__) || defined(_DURANGO) || defined(__PSVITA__)
- // No What's New for the first PS4 and Xbox One builds
+ // 4J Stu - Re-add for future platforms
+#if 0
+ // No What's New
if(true)
{
if(!(i==eHTPButton_WhatsNew) )
@@ -96,6 +99,8 @@ UIScene_HowToPlayMenu::UIScene_HowToPlayMenu(int iPad, void *initData, UILayer *
m_buttonListHowTo.addItem( app.GetString(m_uiHTPButtonNameA[i]) , i);//iCount++);
}
}
+
+ doHorizontalResizeCheck();
}
wstring UIScene_HowToPlayMenu::getMoviePath()
@@ -136,18 +141,9 @@ void UIScene_HowToPlayMenu::handleReload()
{
for(unsigned int i = 0; i < eHTPButton_Max; ++i)
{
-#ifdef __PS3__
- // If it's the blu ray, or the first Japanese digital game, there's no What's New until the first patch, which will take this line out
- if(StorageManager.GetBootTypeDisc() || (app.GetProductSKU()==e_sku_SCEJ))
- {
- if(!(i==eHTPButton_WhatsNew) )
- {
- m_buttonListHowTo.addItem( app.GetString(m_uiHTPButtonNameA[i]) , i);
- }
- }
- else
-#elif defined(__ORBIS__) || defined(_DURANGO) || defined(__PSVITA__)
- // No What's New for the first PS4 and Xbox One builds
+ // 4J Stu - Re-add for future platforms
+#if 0
+ // No What's New
if(true)
{
if(!(i==eHTPButton_WhatsNew) )
@@ -161,6 +157,8 @@ void UIScene_HowToPlayMenu::handleReload()
m_buttonListHowTo.addItem( app.GetString(m_uiHTPButtonNameA[i]) , i);
}
}
+
+ doHorizontalResizeCheck();
}
void UIScene_HowToPlayMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
diff --git a/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.h b/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.h
index 5a60cdd0..1afcec38 100644
--- a/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_HowToPlayMenu.h
@@ -28,6 +28,11 @@ private:
eHTPButton_FarmingAnimals,
eHTPButton_Breeding,
eHTPButton_Trading,
+ eHTPButton_Horses,
+ eHTPButton_Beacons,
+ eHTPButton_Fireworks,
+ eHTPButton_Hoppers,
+ eHTPButton_Droppers,
eHTPButton_NetherPortal,
eHTPButton_TheEnd,
#ifdef _XBOX
diff --git a/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp
index de8af0ac..68ac537e 100644
--- a/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp
@@ -15,6 +15,24 @@ UIScene_InGameHostOptionsMenu::UIScene_InGameHostOptionsMenu(int iPad, void *ini
m_checkboxFireSpreads.init(app.GetString(IDS_FIRE_SPREADS), eControl_FireSpreads, app.GetGameHostOption(eGameHostOption_FireSpreads)!=0);
m_checkboxTNT.init(app.GetString(IDS_TNT_EXPLODES), eControl_TNT, app.GetGameHostOption(eGameHostOption_TNT)!=0);
+ m_checkboxDoMobLoot.init(app.GetString(IDS_MOB_LOOT), eControl_DoMobLoot, app.GetGameHostOption(eGameHostOption_DoMobLoot));
+ m_checkboxDoTileDrops.init(app.GetString(IDS_TILE_DROPS), eControl_DoTileDrops, app.GetGameHostOption(eGameHostOption_DoTileDrops));
+ m_checkboxNaturalRegeneration.init(app.GetString(IDS_NATURAL_REGEN), eControl_NaturalRegeneration, app.GetGameHostOption(eGameHostOption_NaturalRegeneration));
+
+ // If cheats are disabled, remove checkboxes
+ if (!app.GetGameHostOption(eGameHostOption_CheatsEnabled))
+ {
+ removeControl(&m_checkboxMobGriefing, true);
+ removeControl(&m_checkboxKeepInventory, true);
+ removeControl(&m_checkboxDoMobSpawning, true);
+ removeControl(&m_checkboxDoDaylightCycle, true);
+ }
+
+ m_checkboxMobGriefing.init(app.GetString(IDS_MOB_GRIEFING), eControl_MobGriefing, app.GetGameHostOption(eGameHostOption_MobGriefing));
+ m_checkboxKeepInventory.init(app.GetString(IDS_KEEP_INVENTORY), eControl_KeepInventory, app.GetGameHostOption(eGameHostOption_KeepInventory));
+ m_checkboxDoMobSpawning.init(app.GetString(IDS_MOB_SPAWNING), eControl_DoMobSpawning, app.GetGameHostOption(eGameHostOption_DoMobSpawning));
+ m_checkboxDoDaylightCycle.init(app.GetString(IDS_DAYLIGHT_CYCLE), eControl_DoDaylightCycle, app.GetGameHostOption(eGameHostOption_DoDaylightCycle));
+
INetworkPlayer *localPlayer = g_NetworkManager.GetLocalPlayerByUserIndex( m_iPad );
unsigned int privs = app.GetPlayerPrivileges(localPlayer->GetSmallId());
if(app.GetGameHostOption(eGameHostOption_CheatsEnabled)
@@ -48,6 +66,33 @@ void UIScene_InGameHostOptionsMenu::updateTooltips()
ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK);
}
+void UIScene_InGameHostOptionsMenu::handleReload()
+{
+ UIScene::handleReload();
+
+ // If cheats are disabled, remove checkboxes
+ if (!app.GetGameHostOption(eGameHostOption_CheatsEnabled))
+ {
+ removeControl(&m_checkboxMobGriefing, true);
+ removeControl(&m_checkboxKeepInventory, true);
+ removeControl(&m_checkboxDoMobSpawning, true);
+ removeControl(&m_checkboxDoDaylightCycle, true);
+ }
+
+ INetworkPlayer *localPlayer = g_NetworkManager.GetLocalPlayerByUserIndex( m_iPad );
+ unsigned int privs = app.GetPlayerPrivileges(localPlayer->GetSmallId());
+ if(app.GetGameHostOption(eGameHostOption_CheatsEnabled)
+ && Player::getPlayerGamePrivilege(privs,Player::ePlayerGamePrivilege_CanTeleport)
+ && g_NetworkManager.GetPlayerCount() > 1)
+ {
+ }
+ else
+ {
+ removeControl(&m_buttonTeleportToPlayer, true);
+ removeControl(&m_buttonTeleportToMe, true);
+ }
+}
+
void UIScene_InGameHostOptionsMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
{
//app.DebugPrintf("UIScene_DebugOverlay handling input for pad %d, key %d, down- %s, pressed- %s, released- %s\n", iPad, key, down?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE");
@@ -59,8 +104,20 @@ void UIScene_InGameHostOptionsMenu::handleInput(int iPad, int key, bool repeat,
if(pressed)
{
unsigned int hostOptions = app.GetGameHostOption(eGameHostOption_All);
- app.SetGameHostOption(hostOptions,eGameHostOption_FireSpreads,m_checkboxFireSpreads.IsChecked());
- app.SetGameHostOption(hostOptions,eGameHostOption_TNT,m_checkboxTNT.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_FireSpreads, m_checkboxFireSpreads.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_TNT, m_checkboxTNT.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_DoMobLoot, m_checkboxDoMobLoot.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_DoTileDrops, m_checkboxDoTileDrops.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_NaturalRegeneration, m_checkboxNaturalRegeneration.IsChecked());
+
+ // If cheats are enabled, set cheat values
+ if (app.GetGameHostOption(eGameHostOption_CheatsEnabled))
+ {
+ app.SetGameHostOption(hostOptions, eGameHostOption_MobGriefing, m_checkboxMobGriefing.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_KeepInventory, m_checkboxKeepInventory.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_DoMobSpawning, m_checkboxDoMobSpawning.IsChecked());
+ app.SetGameHostOption(hostOptions, eGameHostOption_DoDaylightCycle, m_checkboxDoDaylightCycle.IsChecked());
+ }
// Send update settings packet to server
if(hostOptions != app.GetGameHostOption(eGameHostOption_All) )
diff --git a/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.h b/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.h
index 24711412..b198974f 100644
--- a/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.h
@@ -9,15 +9,29 @@ private:
{
eControl_FireSpreads,
eControl_TNT,
+ eControl_MobGriefing,
+ eControl_KeepInventory,
+ eControl_DoMobSpawning,
+ eControl_DoMobLoot,
+ eControl_DoTileDrops,
+ eControl_NaturalRegeneration,
+ eControl_DoDaylightCycle,
eControl_TeleportToPlayer,
eControl_TeleportToMe,
};
- UIControl_CheckBox m_checkboxFireSpreads, m_checkboxTNT;
+ UIControl_CheckBox m_checkboxFireSpreads, m_checkboxTNT, m_checkboxMobGriefing, m_checkboxKeepInventory, m_checkboxDoMobSpawning, m_checkboxDoMobLoot, m_checkboxDoTileDrops, m_checkboxNaturalRegeneration, m_checkboxDoDaylightCycle;
UIControl_Button m_buttonTeleportToPlayer, m_buttonTeleportToMe;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_checkboxFireSpreads, "CheckboxFireSpreads")
UI_MAP_ELEMENT( m_checkboxTNT, "CheckboxTNT")
+ UI_MAP_ELEMENT( m_checkboxMobGriefing, "CheckboxMobGriefing")
+ UI_MAP_ELEMENT( m_checkboxKeepInventory, "CheckboxKeepInventory")
+ UI_MAP_ELEMENT( m_checkboxDoMobSpawning, "CheckboxMobSpawning")
+ UI_MAP_ELEMENT( m_checkboxDoMobLoot, "CheckboxMobLoot")
+ UI_MAP_ELEMENT( m_checkboxDoTileDrops, "CheckboxTileDrops")
+ UI_MAP_ELEMENT( m_checkboxNaturalRegeneration, "CheckboxNaturalRegeneration")
+ UI_MAP_ELEMENT( m_checkboxDoDaylightCycle, "CheckboxDayLightCycle")
UI_MAP_ELEMENT( m_buttonTeleportToPlayer, "TeleportToPlayer")
UI_MAP_ELEMENT( m_buttonTeleportToMe, "TeleportPlayerToMe")
UI_END_MAP_ELEMENTS_AND_NAMES()
@@ -27,6 +41,8 @@ public:
virtual EUIScene getSceneType() { return eUIScene_InGameHostOptionsMenu;}
virtual void updateTooltips();
+ virtual void handleReload();
+
protected:
// TODO: This should be pure virtual in this class
virtual wstring getMoviePath();
diff --git a/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp b/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp
index 5c3f73f6..57acf345 100644
--- a/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp
@@ -15,59 +15,20 @@ UIScene_InGameInfoMenu::UIScene_InGameInfoMenu(int iPad, void *initData, UILayer
m_labelTitle.init(app.GetString(IDS_PLAYERS_INVITE));
m_playerList.init(eControl_GamePlayers);
- for(unsigned int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i)
- {
- m_playerNames[i] = L"";
- }
+ m_players = vector<PlayerInfo *>();
DWORD playerCount = g_NetworkManager.GetPlayerCount();
- m_playersCount = 0;
for(DWORD i = 0; i < playerCount; ++i)
{
INetworkPlayer *player = g_NetworkManager.GetPlayerByIndex( i );
if( player != NULL )
{
- m_players[i] = player->GetSmallId();
- ++m_playersCount;
-
- wstring playerName = L"";
-#ifndef _CONTENT_PACKAGE
- if(app.DebugSettingsOn() && (app.GetGameSettingsDebugMask()&(1L<<eDebugSetting_DebugLeaderboards)))
- {
- playerName = L"WWWWWWWWWWWWWWWW";
- }
- else
-#endif
- {
- playerName = player->GetDisplayName();
- }
+ PlayerInfo *info = BuildPlayerInfo(player);
- int voiceStatus = 0;
- if(player != NULL && player->HasVoice() )
- {
- if( player->IsMutedByLocalUser(m_iPad) )
- {
- // Muted image
- voiceStatus = 3;
- }
- else if( player->IsTalking() )
- {
- // Talking image
- voiceStatus = 2;
- }
- else
- {
- // Not talking image
- voiceStatus = 1;
- }
- }
-
- m_playersVoiceState[i] = voiceStatus;
- m_playersColourState[i] = app.GetPlayerColour( m_players[i] );
- m_playerNames[i] = playerName;
- m_playerList.addItem( playerName, app.GetPlayerColour( m_players[i] ), voiceStatus);
+ m_players.push_back(info);
+ m_playerList.addItem(info->m_name, info->m_colorState, info->m_voiceStatus);
}
}
@@ -98,6 +59,12 @@ UIScene_InGameInfoMenu::UIScene_InGameInfoMenu(int iPad, void *initData, UILayer
#endif
}
+UIScene_InGameInfoMenu::~UIScene_InGameInfoMenu()
+{
+ // Delete player infos
+ for (int i = 0; i < m_players.size(); i++) { delete m_players[i]; }
+}
+
wstring UIScene_InGameInfoMenu::getMoviePath()
{
if(app.GetLocalPlayerCount() > 1)
@@ -126,8 +93,7 @@ void UIScene_InGameInfoMenu::updateTooltips()
if(CGameNetworkManager::usingAdhocMode()) keyX = -1;
#endif
-
- INetworkPlayer *selectedPlayer = g_NetworkManager.GetPlayerBySmallId( m_players[ m_playerList.getCurrentSelection() ] );
+ INetworkPlayer *selectedPlayer = g_NetworkManager.GetPlayerBySmallId(m_players[m_playerList.getCurrentSelection()]->m_smallId);
int keyA = -1;
Minecraft *pMinecraft = Minecraft::GetInstance();
@@ -198,52 +164,20 @@ void UIScene_InGameInfoMenu::handleReload()
{
DWORD playerCount = g_NetworkManager.GetPlayerCount();
- m_playersCount = 0;
+ // Remove all player info
+ for (int i = 0; i < m_players.size(); i++) { delete m_players[i]; }
+ m_players.clear();
+
for(DWORD i = 0; i < playerCount; ++i)
{
INetworkPlayer *player = g_NetworkManager.GetPlayerByIndex( i );
if( player != NULL )
{
- m_players[i] = player->GetSmallId();
- ++m_playersCount;
-
- wstring playerName = L"";
-#ifndef _CONTENT_PACKAGE
- if(app.DebugSettingsOn() && (app.GetGameSettingsDebugMask()&(1L<<eDebugSetting_DebugLeaderboards)))
- {
- playerName = L"WWWWWWWWWWWWWWWW";
- }
- else
-#endif
- {
- playerName = player->GetDisplayName();
- }
-
- int voiceStatus = 0;
- if(player != NULL && player->HasVoice() )
- {
- if( player->IsMutedByLocalUser(m_iPad) )
- {
- // Muted image
- voiceStatus = 3;
- }
- else if( player->IsTalking() )
- {
- // Talking image
- voiceStatus = 2;
- }
- else
- {
- // Not talking image
- voiceStatus = 1;
- }
- }
+ PlayerInfo *info = BuildPlayerInfo(player);
- m_playersVoiceState[i] = voiceStatus;
- m_playersColourState[i] = app.GetPlayerColour( m_players[i] );
- m_playerNames[i] = playerName;
- m_playerList.addItem( playerName, app.GetPlayerColour( m_players[i] ), voiceStatus);
+ m_players.push_back(info);
+ m_playerList.addItem(info->m_name, info->m_colorState, info->m_voiceStatus);
}
}
@@ -270,63 +204,36 @@ void UIScene_InGameInfoMenu::tick()
{
UIScene::tick();
- for(DWORD i = 0; i < m_playersCount; ++i)
+ // Update players by index
+ for(DWORD i = 0; i < m_players.size(); ++i)
{
INetworkPlayer *player = g_NetworkManager.GetPlayerByIndex( i );
- if( player != NULL )
+ if(player != NULL)
{
- m_players[i] = player->GetSmallId();
- int voiceStatus = 0;
- if(player != NULL && player->HasVoice() )
- {
- if( player->IsMutedByLocalUser(m_iPad) )
- {
- // Muted image
- voiceStatus = 3;
- }
- else if( player->IsTalking() )
- {
- // Talking image
- voiceStatus = 2;
- }
- else
- {
- // Not talking image
- voiceStatus = 1;
- }
- }
-
- if(voiceStatus != m_playersVoiceState[i])
- {
- m_playersVoiceState[i] = voiceStatus;
- m_playerList.setVOIPIcon( i, voiceStatus );
- }
+ PlayerInfo *info = BuildPlayerInfo(player);
- short icon = app.GetPlayerColour( m_players[i] );
+ m_players[i]->m_smallId = info->m_smallId;
- if(icon != m_playersColourState[i])
+ if(info->m_voiceStatus != m_players[i]->m_voiceStatus)
{
- m_playersColourState[i] = icon;
- m_playerList.setPlayerIcon( i, (int)app.GetPlayerColour( m_players[i] ) );
+ m_players[i]->m_voiceStatus = info->m_voiceStatus;
+ m_playerList.setVOIPIcon(i, info->m_voiceStatus);
}
-
- wstring playerName = L"";
-#ifndef _CONTENT_PACKAGE
- if(app.DebugSettingsOn() && (app.GetGameSettingsDebugMask()&(1L<<eDebugSetting_DebugLeaderboards)))
+
+ if(info->m_colorState != m_players[i]->m_colorState)
{
- playerName = L"WWWWWWWWWWWWWWWW";
+ m_players[i]->m_colorState = info->m_colorState;
+ m_playerList.setPlayerIcon(i, info->m_colorState);
}
- else
-#endif
- {
- playerName = player->GetDisplayName();
- }
- if(playerName.compare( m_playerNames[i] ) != 0 )
+
+ if(info->m_name.compare( m_players[i]->m_name ) != 0 )
{
- m_playerList.setButtonLabel(i, playerName);
- m_playerNames[i] = playerName;
+ m_playerList.setButtonLabel(i, info->m_name);
+ m_players[i]->m_name = info->m_name;
}
+
+ delete info;
}
}
}
@@ -357,7 +264,7 @@ void UIScene_InGameInfoMenu::handleInput(int iPad, int key, bool repeat, bool pr
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_InGameInfoMenu::MustSignInReturnedPSN,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_InGameInfoMenu::MustSignInReturnedPSN,this);
}
else
#endif
@@ -373,9 +280,9 @@ void UIScene_InGameInfoMenu::handleInput(int iPad, int key, bool repeat, bool pr
#else
- if(pressed && m_playerList.hasFocus() && (m_playerList.getItemCount() > 0) && (m_playerList.getCurrentSelection() < m_playersCount) )
+ if(pressed && m_playerList.hasFocus() && (m_playerList.getItemCount() > 0) && (m_playerList.getCurrentSelection() < m_players.size()) )
{
- INetworkPlayer *player = g_NetworkManager.GetPlayerBySmallId(m_players[m_playerList.getCurrentSelection()]);
+ INetworkPlayer *player = g_NetworkManager.GetPlayerBySmallId(m_players[m_playerList.getCurrentSelection()]->m_smallId);
if( player != NULL )
{
PlayerUID uid = player->GetUID();
@@ -428,7 +335,7 @@ void UIScene_InGameInfoMenu::handlePress(F64 controlId, F64 childId)
break;
case eControl_GamePlayers:
int currentSelection = (int)childId;
- INetworkPlayer *selectedPlayer = g_NetworkManager.GetPlayerBySmallId( m_players[ currentSelection ] );
+ INetworkPlayer *selectedPlayer = g_NetworkManager.GetPlayerBySmallId(m_players[currentSelection]->m_smallId);
Minecraft *pMinecraft = Minecraft::GetInstance();
shared_ptr<MultiplayerLocalPlayer> localPlayer = pMinecraft->localplayers[m_iPad];
@@ -448,20 +355,20 @@ void UIScene_InGameInfoMenu::handlePress(F64 controlId, F64 childId)
{
InGamePlayerOptionsInitData *pInitData = new InGamePlayerOptionsInitData();
pInitData->iPad = m_iPad;
- pInitData->networkSmallId = m_players[ currentSelection ];
- pInitData->playerPrivileges = app.GetPlayerPrivileges(m_players[ currentSelection ] );
+ pInitData->networkSmallId = m_players[currentSelection]->m_smallId;
+ pInitData->playerPrivileges = app.GetPlayerPrivileges(m_players[currentSelection]->m_smallId);
ui.NavigateToScene(m_iPad,eUIScene_InGamePlayerOptionsMenu,pInitData);
}
else if(selectedPlayer->IsLocal() != TRUE && selectedPlayer->IsSameSystem(g_NetworkManager.GetHostPlayer()) != TRUE)
{
// Only ops will hit this, can kick anyone not local and not local to the host
BYTE *smallId = new BYTE();
- *smallId = m_players[currentSelection];
+ *smallId = m_players[currentSelection]->m_smallId;
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_UNLOCK_KICK_PLAYER_TITLE, IDS_UNLOCK_KICK_PLAYER, uiIDA, 2, m_iPad,&UIScene_InGameInfoMenu::KickPlayerReturned,smallId,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_UNLOCK_KICK_PLAYER_TITLE, IDS_UNLOCK_KICK_PLAYER, uiIDA, 2, m_iPad,&UIScene_InGameInfoMenu::KickPlayerReturned,smallId);
}
}
break;
@@ -480,71 +387,53 @@ void UIScene_InGameInfoMenu::handleFocusChange(F64 controlId, F64 childId)
void UIScene_InGameInfoMenu::OnPlayerChanged(void *callbackParam, INetworkPlayer *pPlayer, bool leaving)
{
+ app.DebugPrintf("<UIScene_InGameInfoMenu::OnPlayerChanged> Player \"%ls\" %s (smallId: %d)\n", pPlayer->GetOnlineName(), leaving ? "leaving" : "joining", pPlayer->GetSmallId());
+
UIScene_InGameInfoMenu *scene = (UIScene_InGameInfoMenu *)callbackParam;
bool playerFound = false;
int foundIndex = 0;
- for(int i = 0; i < scene->m_playersCount; ++i)
+ for(int i = 0; i < scene->m_players.size(); ++i)
{
- if(!playerFound && scene->m_players[i] == pPlayer->GetSmallId() )
+ if(!playerFound && scene->m_players[i]->m_smallId == pPlayer->GetSmallId() )
{
if( scene->m_playerList.getCurrentSelection() == scene->m_playerList.getItemCount() - 1 )
{
scene->m_playerList.setCurrentSelection( scene->m_playerList.getItemCount() - 2 );
}
- // Player removed
+
+ // Player found
playerFound = true;
foundIndex = i;
}
}
- if( playerFound )
- {
- --scene->m_playersCount;
- scene->m_playersVoiceState[scene->m_playersCount] = 0;
- scene->m_playersColourState[scene->m_playersCount] = 0;
- scene->m_playerNames[scene->m_playersCount] = L"";
- scene->m_playerList.removeItem(scene->m_playersCount);
- }
+ if (leaving && !playerFound) app.DebugPrintf("<UIScene_InGameInfoMenu::OnPlayerChanged> Error: Player \"%ls\" leaving but not found in list\n", pPlayer->GetOnlineName());
+ if (!leaving && playerFound) app.DebugPrintf("<UIScene_InGameInfoMenu::OnPlayerChanged> Error: Player \"%ls\" joining but already in list\n", pPlayer->GetOnlineName());
- if( !playerFound )
+ // If the player was found remove them (even if they're joining, they'll be added again later)
+ if(playerFound)
{
- // Player added
- scene->m_players[scene->m_playersCount] = pPlayer->GetSmallId();
- ++scene->m_playersCount;
+ app.DebugPrintf("<UIScene_InGameInfoMenu::OnPlayerChanged> Player \"%ls\" found, removing\n", pPlayer->GetOnlineName());
- wstring playerName = L"";
-#ifndef _CONTENT_PACKAGE
- if(app.DebugSettingsOn() && (app.GetGameSettingsDebugMask()&(1L<<eDebugSetting_DebugLeaderboards)))
- {
- playerName = L"WWWWWWWWWWWWWWWW";
- }
- else
-#endif
- {
- playerName = pPlayer->GetDisplayName();
- }
+ // Remove player info
+ delete scene->m_players[foundIndex];
+ scene->m_players.erase(scene->m_players.begin() + foundIndex);
- int voiceStatus = 0;
- if(pPlayer != NULL && pPlayer->HasVoice() )
- {
- if( pPlayer->IsMutedByLocalUser(scene->m_iPad) )
- {
- // Muted image
- voiceStatus = 3;
- }
- else if( pPlayer->IsTalking() )
- {
- // Talking image
- voiceStatus = 2;
- }
- else
- {
- // Not talking image
- voiceStatus = 1;
- }
- }
+ // Remove player from list
+ scene->m_playerList.removeItem(foundIndex);
+ }
- scene->m_playerList.addItem( playerName, app.GetPlayerColour( scene->m_players[scene->m_playersCount - 1] ), voiceStatus);
+ // If the player is joining
+ if(!leaving)
+ {
+ app.DebugPrintf("<UIScene_InGameInfoMenu::OnPlayerChanged> Player \"%ls\" not found, adding\n", pPlayer->GetOnlineName());
+
+ PlayerInfo *info = scene->BuildPlayerInfo(pPlayer);
+ scene->m_players.push_back(info);
+
+ // Note that the tick updates buttons every tick so it's only really important that we
+ // add the button (not the order or content)
+ scene->m_playerList.addItem(info->m_name, info->m_colorState, info->m_voiceStatus);
}
}
@@ -566,6 +455,50 @@ int UIScene_InGameInfoMenu::KickPlayerReturned(void *pParam,int iPad,C4JStorage:
return 0;
}
+UIScene_InGameInfoMenu::PlayerInfo *UIScene_InGameInfoMenu::BuildPlayerInfo(INetworkPlayer *player)
+{
+ PlayerInfo *info = new PlayerInfo();
+ info->m_smallId = player->GetSmallId();
+
+ wstring playerName = L"";
+#ifndef _CONTENT_PACKAGE
+ if(app.DebugSettingsOn() && (app.GetGameSettingsDebugMask()&(1L<<eDebugSetting_DebugLeaderboards)))
+ {
+ playerName = L"WWWWWWWWWWWWWWWW";
+ }
+ else
+#endif
+ {
+ playerName = player->GetDisplayName();
+ }
+
+ int voiceStatus = 0;
+ if(player != NULL && player->HasVoice() )
+ {
+ if( player->IsMutedByLocalUser(m_iPad) )
+ {
+ // Muted image
+ voiceStatus = 3;
+ }
+ else if( player->IsTalking() )
+ {
+ // Talking image
+ voiceStatus = 2;
+ }
+ else
+ {
+ // Not talking image
+ voiceStatus = 1;
+ }
+ }
+
+ info->m_voiceStatus = voiceStatus;
+ info->m_colorState = app.GetPlayerColour(info->m_smallId);
+ info->m_name = playerName;
+
+ return info;
+}
+
#if defined __PS3__ || defined __PSVITA__
int UIScene_InGameInfoMenu::MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
@@ -596,10 +529,10 @@ int UIScene_InGameInfoMenu::ViewInvites_SignInReturned(void *pParam,bool bContin
int ret = sceNpBasicRecvMessageCustom(SCE_NP_BASIC_MESSAGE_MAIN_TYPE_INVITE, SCE_NP_BASIC_RECV_MESSAGE_OPTIONS_INCLUDE_BOOTABLE, SYS_MEMORY_CONTAINER_ID_INVALID);
app.DebugPrintf("sceNpBasicRecvMessageCustom return %d ( %08x )\n", ret, ret);
#else // __PSVITA__
- PSVITA_STUBBED;
+ SQRNetworkManager_Vita::RecvInviteGUI();
#endif
}
}
return 0;
}
-#endif
+#endif \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.h b/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.h
index 94966fa3..464c83a0 100644
--- a/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.h
@@ -10,13 +10,22 @@ private:
eControl_GameOptions,
eControl_GamePlayers,
};
+
+ typedef struct _PlayerInfo
+ {
+ byte m_smallId;
+ char m_voiceStatus;
+ short m_colorState;
+ wstring m_name;
+
+ } PlayerInfo;
bool m_isHostPlayer;
- int m_playersCount;
- BYTE m_players[MINECRAFT_NET_MAX_PLAYERS]; // An array of QNet small-id's
- char m_playersVoiceState[MINECRAFT_NET_MAX_PLAYERS];
- short m_playersColourState[MINECRAFT_NET_MAX_PLAYERS];
- wstring m_playerNames[MINECRAFT_NET_MAX_PLAYERS];
+ //int m_playersCount;
+ vector<PlayerInfo *> m_players; // A vector of player info structs
+ //char m_playersVoiceState[MINECRAFT_NET_MAX_PLAYERS];
+ //short m_playersColourState[MINECRAFT_NET_MAX_PLAYERS];
+ //wstring m_playerNames[MINECRAFT_NET_MAX_PLAYERS];
UIControl_Button m_buttonGameOptions;
UIControl_PlayerList m_playerList;
@@ -28,6 +37,7 @@ private:
UI_END_MAP_ELEMENTS_AND_NAMES()
public:
UIScene_InGameInfoMenu(int iPad, void *initData, UILayer *parentLayer);
+ virtual ~UIScene_InGameInfoMenu();
virtual EUIScene getSceneType() { return eUIScene_InGameInfoMenu;}
virtual void updateTooltips();
@@ -55,6 +65,8 @@ public:
static void OnPlayerChanged(void *callbackParam, INetworkPlayer *pPlayer, bool leaving);
private:
+ PlayerInfo *BuildPlayerInfo(INetworkPlayer *player);
+
#if defined(__PS3__) || defined (__PSVITA__) || defined(__ORBIS__)
static int MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::EMessageResult result);
static int ViewInvites_SignInReturned(void *pParam,bool bContinue, int iPad);
diff --git a/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp
index 6eb22b09..d7196849 100644
--- a/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.cpp
@@ -232,6 +232,92 @@ void UIScene_InGamePlayerOptionsMenu::updateTooltips()
ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK);
}
+void UIScene_InGamePlayerOptionsMenu::handleReload()
+{
+ UIScene::handleReload();
+
+ INetworkPlayer *localPlayer = g_NetworkManager.GetLocalPlayerByUserIndex( m_iPad );
+ INetworkPlayer *editingPlayer = g_NetworkManager.GetPlayerBySmallId(m_networkSmallId);
+
+ bool trustPlayers = app.GetGameHostOption(eGameHostOption_TrustPlayers) != 0;
+ bool cheats = app.GetGameHostOption(eGameHostOption_CheatsEnabled) != 0;
+ m_editingSelf = (localPlayer != NULL && localPlayer == editingPlayer);
+
+ if( m_editingSelf || trustPlayers || editingPlayer->IsHost())
+ {
+ removeControl( &m_checkboxes[eControl_BuildAndMine], true );
+ removeControl( &m_checkboxes[eControl_UseDoorsAndSwitches], true );
+ removeControl( &m_checkboxes[eControl_UseContainers], true );
+ removeControl( &m_checkboxes[eControl_AttackPlayers], true );
+ removeControl( &m_checkboxes[eControl_AttackAnimals], true );
+ }
+
+ if(m_editingSelf)
+ {
+#if (defined(_CONTENT_PACKAGE) || defined(_FINAL_BUILD) && !defined(_DEBUG_MENUS_ENABLED))
+ removeControl( &m_checkboxes[eControl_Op], true );
+#endif
+
+ removeControl( &m_buttonKick, true );
+ removeControl( &m_checkboxes[eControl_CheatTeleport], true );
+
+ if(cheats)
+ {
+ bool inCreativeMode = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode) != 0;
+ if(inCreativeMode)
+ {
+ removeControl( &m_checkboxes[eControl_HostFly], true );
+ removeControl( &m_checkboxes[eControl_HostHunger], true );
+ }
+ }
+ else
+ {
+ removeControl( &m_checkboxes[eControl_HostInvisible], true );
+ removeControl( &m_checkboxes[eControl_HostFly], true );
+ removeControl( &m_checkboxes[eControl_HostHunger], true );
+ }
+ }
+ else
+ {
+ if(!localPlayer->IsHost())
+ {
+ removeControl( &m_checkboxes[eControl_Op], true );
+ }
+
+ if(localPlayer->IsHost() && cheats )
+ {
+
+ bool inCreativeMode = Player::getPlayerGamePrivilege(m_playerPrivileges,Player::ePlayerGamePrivilege_CreativeMode) != 0;
+ if(inCreativeMode)
+ {
+ removeControl( &m_checkboxes[eControl_HostFly], true );
+ removeControl( &m_checkboxes[eControl_HostHunger], true );
+ }
+ }
+ else
+ {
+ removeControl( &m_checkboxes[eControl_HostInvisible], true );
+ removeControl( &m_checkboxes[eControl_HostFly], true );
+ removeControl( &m_checkboxes[eControl_HostHunger], true );
+ removeControl( &m_checkboxes[eControl_CheatTeleport], true );
+ }
+
+
+ // Can only kick people if they are not local, and not local to the host
+ if(editingPlayer->IsLocal() == TRUE || editingPlayer->IsSameSystem(g_NetworkManager.GetHostPlayer()) == TRUE)
+ {
+ removeControl( &m_buttonKick, true );
+ }
+ }
+
+ short colourIndex = app.GetPlayerColour( m_networkSmallId );
+ IggyDataValue result;
+ IggyDataValue value[1];
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = colourIndex;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetPlayerIcon , 1 , value );
+}
+
void UIScene_InGamePlayerOptionsMenu::tick()
{
UIScene::tick();
@@ -352,7 +438,7 @@ void UIScene_InGamePlayerOptionsMenu::handlePress(F64 controlId, F64 childId)
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_UNLOCK_KICK_PLAYER_TITLE, IDS_UNLOCK_KICK_PLAYER, uiIDA, 2, m_iPad,&UIScene_InGamePlayerOptionsMenu::KickPlayerReturned,smallId,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_UNLOCK_KICK_PLAYER_TITLE, IDS_UNLOCK_KICK_PLAYER, uiIDA, 2, m_iPad,&UIScene_InGamePlayerOptionsMenu::KickPlayerReturned,smallId);
}
break;
};
diff --git a/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.h b/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.h
index 78e30f6e..e78b6748 100644
--- a/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_InGamePlayerOptionsMenu.h
@@ -62,6 +62,8 @@ public:
virtual EUIScene getSceneType() { return eUIScene_InGamePlayerOptionsMenu;}
virtual void updateTooltips();
+ virtual void handleReload();
+
protected:
// TODO: This should be pure virtual in this class
virtual wstring getMoviePath();
diff --git a/Minecraft.Client/Common/UI/UIScene_InGameSaveManagementMenu.cpp b/Minecraft.Client/Common/UI/UIScene_InGameSaveManagementMenu.cpp
index b0dbc59f..fa2c7e61 100644
--- a/Minecraft.Client/Common/UI/UIScene_InGameSaveManagementMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_InGameSaveManagementMenu.cpp
@@ -442,7 +442,7 @@ void UIScene_InGameSaveManagementMenu::handlePress(F64 controlId, F64 childId)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2,m_iPad,&UIScene_InGameSaveManagementMenu::DeleteSaveDialogReturned,this, app.GetStringTable(),NULL,0,true);
+ ui.RequestErrorMessage(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2,m_iPad,&UIScene_InGameSaveManagementMenu::DeleteSaveDialogReturned,this);
ui.PlayUISFX(eSFX_Press);
break;
diff --git a/Minecraft.Client/Common/UI/UIScene_Intro.cpp b/Minecraft.Client/Common/UI/UIScene_Intro.cpp
index 2c50612f..7fc435b2 100644
--- a/Minecraft.Client/Common/UI/UIScene_Intro.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_Intro.cpp
@@ -11,12 +11,16 @@ UIScene_Intro::UIScene_Intro(int iPad, void *initData, UILayer *parentLayer) : U
m_bAnimationEnded = false;
bool bSkipESRB = false;
+ bool bChina = false;
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
bSkipESRB = app.GetProductSKU() != e_sku_SCEA;
#elif defined(_XBOX) || defined(_DURANGO)
bSkipESRB = !ProfileManager.LocaleIsUSorCanada();
#endif
+#ifdef _DURANGO
+ bChina = ProfileManager.LocaleIsChina();
+#endif
// 4J Stu - These map to values in the Actionscript
#ifdef _WINDOWS64
int platformIdx = 0;
@@ -33,13 +37,17 @@ UIScene_Intro::UIScene_Intro(int iPad, void *initData, UILayer *parentLayer) : U
#endif
IggyDataValue result;
- IggyDataValue value[2];
+ IggyDataValue value[3];
value[0].type = IGGY_DATATYPE_number;
value[0].number = platformIdx;
value[1].type = IGGY_DATATYPE_boolean;
- value[1].boolval = bSkipESRB;
- IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetIntroPlatform , 2 , value );
+ value[1].boolval = bChina?true:bSkipESRB;
+
+ value[2].type = IGGY_DATATYPE_boolean;
+ value[2].boolval = bChina;
+
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetIntroPlatform , 3 , value );
#ifdef __PSVITA__
// initialise vita touch controls with ids
diff --git a/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp b/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp
index cad86dce..c036f7bf 100644
--- a/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp
@@ -140,6 +140,10 @@ void UIScene_JoinMenu::tick()
{
m_labelValues[eLabel_GameType].init( app.GetString(IDS_CREATIVE) );
}
+ else if(option == GameType::ADVENTURE->getId())
+ {
+ m_labelValues[eLabel_GameType].init( app.GetString(IDS_ADVENTURE) );
+ }
else
{
m_labelValues[eLabel_GameType].init( app.GetString(IDS_SURVIVAL) );
@@ -209,9 +213,9 @@ void UIScene_JoinMenu::tick()
UINT uiIDA[1];
uiIDA[0] = IDS_CONFIRM_OK;
#ifdef _XBOX_ONE
- ui.RequestMessageBox( IDS_CONNECTION_FAILED, IDS_DISCONNECTED_SERVER_QUIT, uiIDA,1,m_iPad,ErrorDialogReturned,this, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_CONNECTION_FAILED, IDS_DISCONNECTED_SERVER_QUIT, uiIDA,1,m_iPad,ErrorDialogReturned,this);
#else
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA,1,m_iPad,ErrorDialogReturned,this, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA,1,m_iPad,ErrorDialogReturned,this);
#endif
}
@@ -307,7 +311,7 @@ void UIScene_JoinMenu::handlePress(F64 controlId, F64 childId)
ui.PlayUISFX(eSFX_Press);
#ifdef _DURANGO
- ProfileManager.CheckMultiplayerPrivileges(m_iPad, true, &checkPrivilegeCallback, this);
+ ProfileManager.CheckMultiplayerPrivileges(m_iPad, true, &checkPrivilegeCallback, (LPVOID)GetCallbackUniqueId());
#else
StartSharedLaunchFlow();
#endif
@@ -331,15 +335,18 @@ void UIScene_JoinMenu::handleFocusChange(F64 controlId, F64 childId)
#ifdef _DURANGO
void UIScene_JoinMenu::checkPrivilegeCallback(LPVOID lpParam, bool hasPrivilege, int iPad)
{
- UIScene_JoinMenu* pClass = (UIScene_JoinMenu*)lpParam;
+ UIScene_JoinMenu* pClass = (UIScene_JoinMenu*)ui.GetSceneFromCallbackId((size_t)lpParam);
- if(hasPrivilege)
- {
- pClass->StartSharedLaunchFlow();
-}
- else
+ if(pClass)
{
- pClass->m_bIgnoreInput = false;
+ if(hasPrivilege)
+ {
+ pClass->StartSharedLaunchFlow();
+ }
+ else
+ {
+ pClass->m_bIgnoreInput = false;
+ }
}
}
#endif
@@ -355,7 +362,7 @@ void UIScene_JoinMenu::StartSharedLaunchFlow()
//ProfileManager.RequestSignInUI(false, false, false, true, false,&UIScene_JoinMenu::StartGame_SignInReturned, this,ProfileManager.GetPrimaryPad());
SignInInfo info;
info.Func = &UIScene_JoinMenu::StartGame_SignInReturned;
- info.lpParam = this;
+ info.lpParam = (LPVOID)GetCallbackUniqueId();
info.requireOnline = true;
ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_QuadrantSignin,&info);
}
@@ -363,24 +370,27 @@ void UIScene_JoinMenu::StartSharedLaunchFlow()
int UIScene_JoinMenu::StartGame_SignInReturned(void *pParam,bool bContinue, int iPad)
{
- UIScene_JoinMenu* pClass = (UIScene_JoinMenu*)pParam;
+ UIScene_JoinMenu* pClass = (UIScene_JoinMenu*)ui.GetSceneFromCallbackId((size_t)pParam);
- if(bContinue==true)
+ if(pClass)
{
- // It's possible that the player has not signed in - they can back out
- if(ProfileManager.IsSignedIn(iPad))
+ if(bContinue==true)
{
- JoinGame(pClass);
+ // It's possible that the player has not signed in - they can back out
+ if(ProfileManager.IsSignedIn(iPad))
+ {
+ JoinGame(pClass);
+ }
+ else
+ {
+ pClass->m_bIgnoreInput=false;
+ }
}
else
{
pClass->m_bIgnoreInput=false;
}
}
- else
- {
- pClass->m_bIgnoreInput=false;
- }
return 0;
}
@@ -442,7 +452,7 @@ void UIScene_JoinMenu::JoinGame(UIScene_JoinMenu* pClass)
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive if the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive);
}
else
#endif
@@ -450,7 +460,7 @@ void UIScene_JoinMenu::JoinGame(UIScene_JoinMenu* pClass)
pClass->m_bIgnoreInput=false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
}
return;
}
@@ -495,7 +505,7 @@ void UIScene_JoinMenu::JoinGame(UIScene_JoinMenu* pClass)
pClass->m_bIgnoreInput=false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
}
else
{
@@ -530,7 +540,7 @@ void UIScene_JoinMenu::JoinGame(UIScene_JoinMenu* pClass)
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_CONNECTION_FAILED, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_CONNECTION_FAILED, exitReasonStringId, uiIDA,1,ProfileManager.GetPrimaryPad());
exitReasonStringId = -1;
ui.NavigateToHomeMenu();
diff --git a/Minecraft.Client/Common/UI/UIScene_LanguageSelector.cpp b/Minecraft.Client/Common/UI/UIScene_LanguageSelector.cpp
new file mode 100644
index 00000000..e9dc7eb9
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_LanguageSelector.cpp
@@ -0,0 +1,129 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "UIScene_LanguageSelector.h"
+
+// strings for buttons in the list
+const unsigned int UIScene_LanguageSelector::m_uiHTPButtonNameA[]=
+{
+ HAS_LANGUAGE_SYSTEM(IDS_LANG_SYSTEM)
+ HAS_LANGUAGE_EN_US(IDS_LANG_ENGLISH)
+ HAS_LANGUAGE_DE_DE(IDS_LANG_GERMAN)
+ HAS_LANGUAGE_ES_ES(IDS_LANG_SPANISH_SPAIN)
+ HAS_LANGUAGE_ES_MX(IDS_LANG_SPANISH_LATIN_AMERICA)
+ HAS_LANGUAGE_FR_FR(IDS_LANG_FRENCH)
+ HAS_LANGUAGE_IT_IT(IDS_LANG_ITALIAN)
+ HAS_LANGUAGE_PT_PT(IDS_LANG_PORTUGUESE_PORTUGAL)
+ HAS_LANGUAGE_PT_BR(IDS_LANG_PORTUGUESE_BRAZIL)
+ HAS_LANGUAGE_JA_JP(IDS_LANG_JAPANESE)
+ HAS_LANGUAGE_KO_KR(IDS_LANG_KOREAN)
+ HAS_LANGUAGE_CN_TW(IDS_LANG_CHINESE_TRADITIONAL)
+ HAS_LANGUAGE_CN_CN(IDS_LANG_CHINESE_SIMPLIFIED)
+ HAS_LANGUAGE_DA_DK(IDS_LANG_DANISH)
+ HAS_LANGUAGE_FI_FI(IDS_LANG_FINISH)
+ HAS_LANGUAGE_NL_NL(IDS_LANG_DUTCH)
+ HAS_LANGUAGE_PL_PL(IDS_LANG_POLISH)
+ HAS_LANGUAGE_RU_RU(IDS_LANG_RUSSIAN)
+ HAS_LANGUAGE_SV_SE(IDS_LANG_SWEDISH)
+ HAS_LANGUAGE_NB_NO(IDS_LANG_NORWEGIAN)
+ HAS_LANGUAGE_SK_SK(IDS_LANG_SLOVAK)
+ HAS_LANGUAGE_CZ_CZ(IDS_LANG_CZECH)
+ HAS_LANGUAGE_EL_GR(IDS_LANG_GREEK)
+ HAS_LANGUAGE_TR_TR(IDS_LANG_TURKISH)
+};
+
+
+UIScene_LanguageSelector::UIScene_LanguageSelector(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
+{
+ // Setup all the Iggy references we need for this scene
+ initialiseMovie();
+
+ m_buttonListHowTo.init(eControl_Buttons);
+
+ for(unsigned int i = 0; i < eLanguageSelector_MAX; ++i)
+ {
+ m_buttonListHowTo.addItem( m_uiHTPButtonNameA[i] , i);
+ }
+}
+
+wstring UIScene_LanguageSelector::getMoviePath()
+{
+ if (app.GetLocalPlayerCount() > 1) return L"LanguagesMenuSplit";
+ else return L"LanguagesMenu";
+}
+
+void UIScene_LanguageSelector::updateTooltips()
+{
+ ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT, IDS_TOOLTIPS_BACK);
+}
+
+void UIScene_LanguageSelector::updateComponents()
+{
+ bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
+ if(bNotInGame)
+ {
+ m_parentLayer->showComponent(m_iPad,eUIComponent_Panorama,true);
+ m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,true);
+ }
+ else
+ {
+ m_parentLayer->showComponent(m_iPad,eUIComponent_Panorama,false);
+
+ if( app.GetLocalPlayerCount() == 1 ) m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,true);
+ else m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,false);
+ }
+}
+
+void UIScene_LanguageSelector::handleReload()
+{
+ for (unsigned int i = 0; i < eLanguageSelector_MAX; ++i)
+ {
+ m_buttonListHowTo.addItem( m_uiHTPButtonNameA[i], i);
+ }
+}
+
+void UIScene_LanguageSelector::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
+{
+ //app.DebugPrintf("UIScene_DebugOverlay handling input for pad %d, key %d, down- %s, pressed- %s, released- %s\n", iPad, key, down?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE");
+ ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released);
+
+ switch(key)
+ {
+ case ACTION_MENU_CANCEL:
+ if(pressed)
+ {
+ navigateBack();
+ //ui.NavigateToScene(m_iPad, eUIScene_SettingsOptionsMenu);
+ }
+ break;
+ case ACTION_MENU_OK:
+#ifdef __ORBIS__
+ case ACTION_MENU_TOUCHPAD_PRESS:
+#endif
+ sendInputToMovie(key, repeat, pressed, released);
+ break;
+ case ACTION_MENU_UP:
+ case ACTION_MENU_DOWN:
+ case ACTION_MENU_PAGEUP:
+ case ACTION_MENU_PAGEDOWN:
+ sendInputToMovie(key, repeat, pressed, released);
+ break;
+ }
+}
+
+void UIScene_LanguageSelector::handlePress(F64 controlId, F64 childId)
+{
+ if( (int)controlId == eControl_Buttons )
+ {
+ //CD - Added for audio
+ ui.PlayUISFX(eSFX_Press);
+
+ int newLanguage, newLocale;
+ newLanguage = uiLangMap[(int)childId];
+ newLocale = uiLocaleMap[(int)childId];
+
+ app.SetMinecraftLanguage(m_iPad, newLanguage);
+ app.SetMinecraftLocale(m_iPad, newLocale);
+
+ app.CheckGameSettingsChanged(true, m_iPad);
+ }
+}
diff --git a/Minecraft.Client/Common/UI/UIScene_LanguageSelector.h b/Minecraft.Client/Common/UI/UIScene_LanguageSelector.h
new file mode 100644
index 00000000..b5c3d4c6
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_LanguageSelector.h
@@ -0,0 +1,165 @@
+#pragma once
+
+#include "UIScene.h"
+
+#define HAS_LANGUAGE_SYSTEM(exp) exp,
+
+#define HAS_LANGUAGE_EN_US(exp) exp,
+#define HAS_LANGUAGE_DE_DE(exp) exp,
+#define HAS_LANGUAGE_ES_ES(exp) exp,
+#define HAS_LANGUAGE_ES_MX(exp) exp,
+#define HAS_LANGUAGE_FR_FR(exp) exp,
+#define HAS_LANGUAGE_IT_IT(exp) exp,
+#define HAS_LANGUAGE_PT_PT(exp) exp,
+#define HAS_LANGUAGE_PT_BR(exp) exp,
+#define HAS_LANGUAGE_JA_JP(exp) exp,
+#define HAS_LANGUAGE_KO_KR(exp) exp,
+#define HAS_LANGUAGE_CN_TW(exp) exp,
+
+#ifdef _DURANGO
+#define HAS_LANGUAGE_CN_CN(exp) exp,
+#define HAS_LANGUAGE_SK_SK(exp) exp,
+#define HAS_LANGUAGE_CZ_CZ(exp) exp,
+#else
+#define HAS_LANGUAGE_CN_CN(exp)
+#define HAS_LANGUAGE_SK_SK(exp)
+#define HAS_LANGUAGE_CZ_CZ(exp)
+#endif
+
+#define HAS_LANGUAGE_DA_DK(exp) exp,
+#define HAS_LANGUAGE_FI_FI(exp) exp,
+#define HAS_LANGUAGE_NL_NL(exp) exp,
+#define HAS_LANGUAGE_PL_PL(exp) exp,
+#define HAS_LANGUAGE_RU_RU(exp) exp,
+#define HAS_LANGUAGE_SV_SE(exp) exp,
+#define HAS_LANGUAGE_NB_NO(exp) exp,
+#define HAS_LANGUAGE_EL_GR(exp) exp,
+
+#if defined(__ORBIS__) || defined(__PS3__) || defined(__PSVITA__)
+#define HAS_LANGUAGE_TR_TR(exp) exp,
+#else
+#define HAS_LANGUAGE_TR_TR(exp)
+#endif
+
+class UIScene_LanguageSelector : public UIScene
+{
+public:
+ enum ELangButtons
+ {
+ eLanguageSelector_LabelNone = -1,
+ HAS_LANGUAGE_SYSTEM(eLanguageSelector_system)
+ HAS_LANGUAGE_EN_US(eLanguageSelector_EN_US)
+ HAS_LANGUAGE_DE_DE(eLanguageSelector_DE_DE)
+ HAS_LANGUAGE_ES_ES(eLanguageSelector_ES_ES)
+ HAS_LANGUAGE_ES_MX(eLanguageSelector_ES_MX)
+ HAS_LANGUAGE_FR_FR(eLanguageSelector_FR_FR)
+ HAS_LANGUAGE_IT_IT(eLanguageSelector_IT_IT)
+ HAS_LANGUAGE_PT_PT(eLanguageSelector_PT_PT)
+ HAS_LANGUAGE_PT_BR(eLanguageSelector_PT_BR)
+ HAS_LANGUAGE_JA_JP(eLanguageSelector_JA_JP)
+ HAS_LANGUAGE_KO_KR(eLanguageSelector_KO_KR)
+ HAS_LANGUAGE_CN_TW(eLanguageSelector_CN_TW)
+ HAS_LANGUAGE_CN_CN(eLanguageSelector_CN_CN)
+ HAS_LANGUAGE_DA_DK(eLanguageSelector_DA_DK)
+ HAS_LANGUAGE_FI_FI(eLanguageSelector_FI_FI)
+ HAS_LANGUAGE_NL_NL(eLanguageSelector_NL_NL)
+ HAS_LANGUAGE_PL_PL(eLanguageSelector_PL_PL)
+ HAS_LANGUAGE_RU_RU(eLanguageSelector_RU_RU)
+ HAS_LANGUAGE_SV_SE(eLanguageSelector_SV_SE)
+ HAS_LANGUAGE_NB_NO(eLanguageSelector_NB_NO)
+ HAS_LANGUAGE_SK_SK(eLanguageSelector_SK_SK)
+ HAS_LANGUAGE_CZ_CZ(eLanguageSelector_CZ_CZ)
+ HAS_LANGUAGE_EL_GR(eLanguageSelector_EL_GR)
+ HAS_LANGUAGE_TR_TR(eLanguageSelector_TR_TR)
+ eLanguageSelector_MAX
+ };
+
+private:
+ enum EControls
+ {
+ eControl_Buttons,
+ };
+
+ static const unsigned int m_uiHTPButtonNameA[eLanguageSelector_MAX];
+
+ UIControl_DynamicButtonList m_buttonListHowTo;
+ UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
+ UI_MAP_ELEMENT( m_buttonListHowTo, "HowToList")
+ UI_END_MAP_ELEMENTS_AND_NAMES()
+
+public:
+ UIScene_LanguageSelector(int iPad, void *initData, UILayer *parentLayer);
+
+ virtual EUIScene getSceneType() { return eUIScene_LanguageSelector; }
+
+ virtual void updateTooltips();
+ virtual void updateComponents();
+
+ virtual void handleReload();
+protected:
+ // TODO: This should be pure virtual in this class
+ virtual wstring getMoviePath();
+
+public:
+ // INPUT
+ virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
+
+protected:
+ void handlePress(F64 controlId, F64 childId);
+};
+
+const int uiLangMap[UIScene_LanguageSelector::eLanguageSelector_MAX] =
+{
+ HAS_LANGUAGE_SYSTEM(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_EN_US(XC_LANGUAGE_ENGLISH)
+ HAS_LANGUAGE_DE_DE(XC_LANGUAGE_GERMAN)
+ HAS_LANGUAGE_ES_ES(XC_LANGUAGE_SPANISH)
+ HAS_LANGUAGE_ES_MX(XC_LANGUAGE_SPANISH)
+ HAS_LANGUAGE_FR_FR(XC_LANGUAGE_FRENCH)
+ HAS_LANGUAGE_IT_IT(XC_LANGUAGE_ITALIAN)
+ HAS_LANGUAGE_PT_PT(XC_LANGUAGE_PORTUGUESE)
+ HAS_LANGUAGE_PT_BR(XC_LANGUAGE_PORTUGUESE)
+ HAS_LANGUAGE_JA_JP(XC_LANGUAGE_JAPANESE)
+ HAS_LANGUAGE_KO_KR(XC_LANGUAGE_KOREAN)
+ HAS_LANGUAGE_CN_TW(XC_LANGUAGE_TCHINESE)
+ HAS_LANGUAGE_CN_CN(XC_LANGUAGE_SCHINESE)
+ HAS_LANGUAGE_DA_DK(XC_LANGUAGE_DANISH)
+ HAS_LANGUAGE_FI_FI(XC_LANGUAGE_FINISH)
+ HAS_LANGUAGE_NL_NL(XC_LANGUAGE_DUTCH)
+ HAS_LANGUAGE_PL_PL(XC_LANGUAGE_POLISH)
+ HAS_LANGUAGE_RU_RU(XC_LANGUAGE_RUSSIAN)
+ HAS_LANGUAGE_SV_SE(XC_LANGUAGE_SWEDISH)
+ HAS_LANGUAGE_NB_NO(XC_LANGUAGE_BNORWEGIAN)
+ HAS_LANGUAGE_SK_SK(XC_LANGUAGE_SLOVAK)
+ HAS_LANGUAGE_CZ_CZ(XC_LANGUAGE_CZECH)
+ HAS_LANGUAGE_EL_GR(XC_LANGUAGE_GREEK)
+ HAS_LANGUAGE_TR_TR(XC_LANGUAGE_TURKISH)
+};
+
+const int uiLocaleMap[UIScene_LanguageSelector::eLanguageSelector_MAX] =
+{
+ HAS_LANGUAGE_SYSTEM(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_EN_US(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_DE_DE(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_ES_ES(XC_LOCALE_SPAIN)
+ HAS_LANGUAGE_ES_MX(XC_LOCALE_LATIN_AMERICA)
+ HAS_LANGUAGE_FR_FR(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_IT_IT(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_PT_PT(XC_LOCALE_PORTUGAL)
+ HAS_LANGUAGE_PT_BR(XC_LOCALE_BRAZIL)
+ HAS_LANGUAGE_JA_JP(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_KO_KR(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_CN_TW(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_CN_CN(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_DA_DK(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_FI_FI(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_NL_NL(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_PL_PL(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_RU_RU(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_SV_SE(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_NB_NO(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_SK_SK(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_CZ_CZ(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_EL_GR(MINECRAFT_LANGUAGE_DEFAULT)
+ HAS_LANGUAGE_TR_TR(MINECRAFT_LANGUAGE_DEFAULT)
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp
index 6d472b50..d6f89832 100644
--- a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp
@@ -25,10 +25,28 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini
m_labelWorldOptions.init(app.GetString(IDS_WORLD_OPTIONS));
IggyDataValue result;
+
+#ifdef _LARGE_WORLDS
+ IggyDataValue value[2];
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = m_params->bGenerateOptions ? 0 : 1;
+ value[1].type = IGGY_DATATYPE_boolean;
+ value[1].boolval = false;
+ if(m_params->currentWorldSize == e_worldSize_Classic ||
+ m_params->currentWorldSize == e_worldSize_Small ||
+ m_params->currentWorldSize == e_worldSize_Medium )
+ {
+ // don't show the increase world size stuff if we're already large, or the size is unknown.
+ value[1].boolval = true;
+ }
+
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetMenuType , 2 , value );
+#else
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_number;
- value[0].number = m_params->bGenerateOptions?0:1;
+ value[0].number = m_params->bGenerateOptions ? 0 : 1;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetMenuType , 1 , value );
+#endif
m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_params->iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_params->iPad);
@@ -54,11 +72,15 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini
}
else if(!m_params->bOnlineGame)
{
-
m_checkboxes[eLaunchCheckbox_InviteOnly].SetEnable(false);
m_checkboxes[eLaunchCheckbox_AllowFoF].SetEnable(false);
}
+ // Init cheats
+ m_bUpdateCheats = false;
+ // Update cheat checkboxes
+ UpdateCheats();
+
m_checkboxes[eLaunchCheckbox_Online].init(app.GetString(IDS_ONLINE_GAME),eLaunchCheckbox_Online,bOnlineGame);
m_checkboxes[eLaunchCheckbox_InviteOnly].init(app.GetString(IDS_INVITE_ONLY),eLaunchCheckbox_InviteOnly,bInviteOnly);
m_checkboxes[eLaunchCheckbox_AllowFoF].init(app.GetString(IDS_ALLOWFRIENDSOFFRIENDS),eLaunchCheckbox_AllowFoF,bAllowFriendsOfFriends);
@@ -72,19 +94,35 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini
m_checkboxes[eLaunchCheckbox_FlatWorld].init(app.GetString(IDS_SUPERFLAT_WORLD),eLaunchCheckbox_FlatWorld,m_params->bFlatWorld);
m_checkboxes[eLaunchCheckbox_BonusChest].init(app.GetString(IDS_BONUS_CHEST),eLaunchCheckbox_BonusChest,m_params->bBonusChest);
- if(m_loadedResolution == eSceneResolution_1080)
- {
+ m_checkboxes[eLaunchCheckbox_KeepInventory].init(app.GetString(IDS_KEEP_INVENTORY), eLaunchCheckbox_KeepInventory, m_params->bKeepInventory);
+ m_checkboxes[eLaunchCheckbox_MobSpawning].init(app.GetString(IDS_MOB_SPAWNING), eLaunchCheckbox_MobSpawning, m_params->bDoMobSpawning);
+ m_checkboxes[eLaunchCheckbox_MobLoot].init(app.GetString(IDS_MOB_LOOT), eLaunchCheckbox_MobLoot, m_params->bDoMobLoot);
+ m_checkboxes[eLaunchCheckbox_MobGriefing].init(app.GetString(IDS_MOB_GRIEFING), eLaunchCheckbox_MobGriefing, m_params->bMobGriefing);
+ m_checkboxes[eLaunchCheckbox_TileDrops].init(app.GetString(IDS_TILE_DROPS), eLaunchCheckbox_TileDrops, m_params->bDoTileDrops);
+ m_checkboxes[eLaunchCheckbox_NaturalRegeneration].init(app.GetString(IDS_NATURAL_REGEN), eLaunchCheckbox_NaturalRegeneration, m_params->bNaturalRegeneration);
+ m_checkboxes[eLaunchCheckbox_DayLightCycle].init(app.GetString(IDS_DAYLIGHT_CYCLE), eLaunchCheckbox_DayLightCycle, m_params->bDoDaylightCycle);
+
+ m_labelGameOptions.init( app.GetString(IDS_GAME_OPTIONS) );
+ m_labelSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_SEED));
+ m_labelRandomSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_RANDOM_SEED));
+ m_editSeed.init(m_params->seed, eControl_EditSeed);
+
#ifdef _LARGE_WORLDS
- m_labelGameOptions.init( app.GetString(IDS_GAME_OPTIONS) );
- m_labelSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_SEED));
- m_labelRandomSeed.init(app.GetString(IDS_CREATE_NEW_WORLD_RANDOM_SEED));
- m_editSeed.init(m_params->seed, eControl_EditSeed);
- m_labelWorldSize.init(app.GetString(IDS_WORLD_SIZE));
- m_sliderWorldSize.init(app.GetString(m_iWorldSizeTitleA[m_params->worldSize]),eControl_WorldSize,0,3,m_params->worldSize);
-
- m_checkboxes[eLaunchCheckbox_DisableSaving].init( app.GetString(IDS_DISABLE_SAVING), eLaunchCheckbox_DisableSaving, m_params->bDisableSaving );
-#endif
+ m_labelWorldSize.init(app.GetString(IDS_WORLD_SIZE));
+ m_sliderWorldSize.init(app.GetString(m_iWorldSizeTitleA[m_params->worldSize]),eControl_WorldSize,0,3,m_params->worldSize);
+
+ m_checkboxes[eLaunchCheckbox_DisableSaving].init( app.GetString(IDS_DISABLE_SAVING), eLaunchCheckbox_DisableSaving, m_params->bDisableSaving );
+
+ if(m_params->currentWorldSize != e_worldSize_Unknown)
+ {
+ m_labelWorldResize.init(app.GetString(IDS_INCREASE_WORLD_SIZE));
+ int min= int(m_params->currentWorldSize)-1;
+ int max=3;
+ int curr = int(m_params->newWorldSize)-1;
+ m_sliderWorldResize.init(app.GetString(m_iWorldSizeTitleA[curr]),eControl_WorldResize,min,max,curr);
+ m_checkboxes[eLaunchCheckbox_WorldResizeType].init(app.GetString(IDS_INCREASE_WORLD_SIZE_OVERWRITE_EDGES),eLaunchCheckbox_WorldResizeType,m_params->newWorldSizeOverwriteEdges);
}
+#endif
// Only the Xbox 360 needs a reset nether
// 4J-PB - PS3 needs it now
@@ -92,6 +130,8 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini
// if(!m_params->bGenerateOptions) removeControl( &m_checkboxes[eLaunchCheckbox_ResetNether], false );
// #endif
+ m_tabIndex = m_params->bGenerateOptions ? TAB_WORLD_OPTIONS : TAB_GAME_OPTIONS;
+
// set the default text
#ifdef _LARGE_WORLDS
wstring wsText=L"";
@@ -114,36 +154,37 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini
wchar_t startTags[64];
swprintf(startTags,64,L"<font color=\"#%08x\">",app.GetHTMLColour(eHTMLColor_White));
wsText= startTags + wsText;
- m_labelDescription.init(wsText);
+ if (m_tabIndex == TAB_WORLD_OPTIONS)
+ m_labelDescription_WorldOptions.setLabel(wsText);
+ else
+ m_labelDescription_GameOptions.setLabel(wsText);
addTimer(GAME_CREATE_ONLINE_TIMER_ID,GAME_CREATE_ONLINE_TIMER_TIME);
#ifdef __PSVITA__
+ // initialise vita tab controls with ids
+ m_TouchTabWorld.init(ETouchInput_TabWorld);
+ m_TouchTabGame.init(ETouchInput_TabGame);
+
ui.TouchBoxRebuild(this);
#endif
m_bIgnoreInput = false;
- m_tabIndex = 0;
}
void UIScene_LaunchMoreOptionsMenu::updateTooltips()
{
int changeTabTooltip = -1;
-#ifdef _LARGE_WORLDS
- if (m_loadedResolution == eSceneResolution_1080 && m_params->bGenerateOptions)
+ // Set tooltip for change tab (only two tabs)
+ if (m_tabIndex == TAB_GAME_OPTIONS)
{
- // Set tooltip for change tab (only two tabs)
- if (m_tabIndex == 0)
- {
- changeTabTooltip = IDS_GAME_OPTIONS;
- }
- else
- {
- changeTabTooltip = IDS_WORLD_OPTIONS;
- }
+ changeTabTooltip = IDS_WORLD_OPTIONS;
+ }
+ else
+ {
+ changeTabTooltip = IDS_GAME_OPTIONS;
}
-#endif
// If there's a change tab tooltip, left bumper symbol should show but not the text (-2)
int lb = changeTabTooltip == -1 ? -1 : -2;
@@ -154,11 +195,11 @@ void UIScene_LaunchMoreOptionsMenu::updateTooltips()
void UIScene_LaunchMoreOptionsMenu::updateComponents()
{
m_parentLayer->showComponent(m_iPad,eUIComponent_Panorama,true);
-#ifdef _LARGE_WORLDS
- m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,true);
-#else
+//#ifdef _LARGE_WORLDS
+// m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,true);
+//#else
m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,false);
-#endif
+//#endif
}
wstring UIScene_LaunchMoreOptionsMenu::getMoviePath()
@@ -186,6 +227,19 @@ void UIScene_LaunchMoreOptionsMenu::tick()
m_bMultiplayerAllowed = bMultiplayerAllowed;
}
+
+ // Check cheats
+ if (m_bUpdateCheats)
+ {
+ UpdateCheats();
+ m_bUpdateCheats = false;
+ }
+ // check online
+ if(m_bUpdateOnline)
+ {
+ UpdateOnline();
+ m_bUpdateOnline = false;
+ }
}
void UIScene_LaunchMoreOptionsMenu::handleDestroy()
@@ -227,7 +281,7 @@ void UIScene_LaunchMoreOptionsMenu::handleInput(int iPad, int key, bool repeat,
if ( pressed && controlHasFocus( checkboxOnline->getId()) && !checkboxOnline->IsEnabled() )
{
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad);
}
}
#endif
@@ -245,7 +299,7 @@ void UIScene_LaunchMoreOptionsMenu::handleInput(int iPad, int key, bool repeat,
break;
case ACTION_MENU_LEFT_SCROLL:
case ACTION_MENU_RIGHT_SCROLL:
- if(pressed && m_loadedResolution == eSceneResolution_1080)
+ if(pressed)
{
// Toggle tab index
m_tabIndex = m_tabIndex == 0 ? 1 : 0;
@@ -257,6 +311,39 @@ void UIScene_LaunchMoreOptionsMenu::handleInput(int iPad, int key, bool repeat,
}
}
+#ifdef __PSVITA__
+void UIScene_LaunchMoreOptionsMenu::handleTouchInput(unsigned int iPad, S32 x, S32 y, int iId, bool bPressed, bool bRepeat, bool bReleased)
+{
+ if(bPressed)
+ {
+ switch(iId)
+ {
+ case ETouchInput_TabWorld:
+ case ETouchInput_TabGame:
+ // Toggle tab index
+ int iNewTabIndex = (iId == ETouchInput_TabWorld) ? 0 : 1;
+ if(m_tabIndex != iNewTabIndex)
+ {
+ m_tabIndex = iNewTabIndex;
+ updateTooltips();
+ IggyDataValue result;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcChangeTab , 0 , NULL );
+ }
+ ui.TouchBoxRebuild(this);
+ break;
+ }
+ }
+}
+
+UIControl* UIScene_LaunchMoreOptionsMenu::GetMainPanel()
+{
+ if(m_tabIndex == 0)
+ return &m_worldOptions;
+ else
+ return &m_gameOptions;
+}
+#endif
+
void UIScene_LaunchMoreOptionsMenu::handleCheckboxToggled(F64 controlId, bool selected)
{
//CD - Added for audio
@@ -266,6 +353,7 @@ void UIScene_LaunchMoreOptionsMenu::handleCheckboxToggled(F64 controlId, bool se
{
case eLaunchCheckbox_Online:
m_params->bOnlineGame = selected;
+ m_bUpdateOnline = true;
break;
case eLaunchCheckbox_InviteOnly:
m_params->bInviteOnly = selected;
@@ -287,6 +375,7 @@ void UIScene_LaunchMoreOptionsMenu::handleCheckboxToggled(F64 controlId, bool se
break;
case eLaunchCheckbox_HostPrivileges:
m_params->bHostPrivileges = selected;
+ m_bUpdateCheats = true;
break;
case eLaunchCheckbox_ResetNether:
m_params->bResetNether = selected;
@@ -300,9 +389,34 @@ void UIScene_LaunchMoreOptionsMenu::handleCheckboxToggled(F64 controlId, bool se
case eLaunchCheckbox_BonusChest:
m_params->bBonusChest = selected;
break;
+#ifdef _LARGE_WORLDS
case eLaunchCheckbox_DisableSaving:
m_params->bDisableSaving = selected;
break;
+ case eLaunchCheckbox_WorldResizeType:
+ m_params->newWorldSizeOverwriteEdges = selected;
+ break;
+#endif
+ case eLaunchCheckbox_KeepInventory:
+ m_params->bKeepInventory = selected;
+ break;
+ case eLaunchCheckbox_MobSpawning:
+ m_params->bDoMobSpawning = selected;
+ break;
+ case eLaunchCheckbox_MobLoot:
+ m_params->bDoMobLoot = selected;
+ case eLaunchCheckbox_MobGriefing:
+ m_params->bMobGriefing = selected;
+ break;
+ case eLaunchCheckbox_TileDrops:
+ m_params->bDoTileDrops = selected;
+ break;
+ case eLaunchCheckbox_NaturalRegeneration:
+ m_params->bNaturalRegeneration = selected;
+ break;
+ case eLaunchCheckbox_DayLightCycle:
+ m_params->bDoDaylightCycle = selected;
+ break;
};
}
@@ -347,16 +461,43 @@ void UIScene_LaunchMoreOptionsMenu::handleFocusChange(F64 controlId, F64 childId
case eLaunchCheckbox_BonusChest:
stringId = IDS_GAMEOPTION_BONUS_CHEST;
break;
-#ifdef _LARGE_WORLDS
+ case eLaunchCheckbox_KeepInventory:
+ stringId = IDS_GAMEOPTION_KEEP_INVENTORY;
+ break;
+ case eLaunchCheckbox_MobSpawning:
+ stringId = IDS_GAMEOPTION_MOB_SPAWNING;
+ break;
+ case eLaunchCheckbox_MobLoot:
+ stringId = IDS_GAMEOPTION_MOB_LOOT; // PLACEHOLDER
+ break;
+ case eLaunchCheckbox_MobGriefing:
+ stringId = IDS_GAMEOPTION_MOB_GRIEFING; // PLACEHOLDER
+ break;
+ case eLaunchCheckbox_TileDrops:
+ stringId = IDS_GAMEOPTION_TILE_DROPS;
+ break;
+ case eLaunchCheckbox_NaturalRegeneration:
+ stringId = IDS_GAMEOPTION_NATURAL_REGEN;
+ break;
+ case eLaunchCheckbox_DayLightCycle:
+ stringId = IDS_GAMEOPTION_DAYLIGHT_CYCLE;
+ break;
case eControl_EditSeed:
stringId = IDS_GAMEOPTION_SEED;
break;
+#ifdef _LARGE_WORLDS
case eControl_WorldSize:
stringId = IDS_GAMEOPTION_WORLD_SIZE;
break;
+ case eControl_WorldResize:
+ stringId = IDS_GAMEOPTION_INCREASE_WORLD_SIZE;
+ break;
case eLaunchCheckbox_DisableSaving:
stringId = IDS_GAMEOPTION_DISABLE_SAVING;
break;
+ case eLaunchCheckbox_WorldResizeType:
+ stringId = IDS_GAMEOPTION_INCREASE_WORLD_SIZE_OVERWRITE_EDGES;
+ break;
#endif
};
@@ -368,9 +509,12 @@ void UIScene_LaunchMoreOptionsMenu::handleFocusChange(F64 controlId, F64 childId
}
wchar_t startTags[64];
swprintf(startTags,64,L"<font color=\"#%08x\">",app.GetHTMLColour(eHTMLColor_White));
- wsText= startTags + wsText;
+ wsText = startTags + wsText;
- m_labelDescription.setLabel(wsText);
+ if (m_tabIndex == TAB_WORLD_OPTIONS)
+ m_labelDescription_WorldOptions.setLabel(wsText);
+ else
+ m_labelDescription_GameOptions.setLabel(wsText);
}
void UIScene_LaunchMoreOptionsMenu::handleTimerComplete(int id)
@@ -405,8 +549,14 @@ int UIScene_LaunchMoreOptionsMenu::KeyboardCompleteSeedCallback(LPVOID lpParam,b
// 4J HEG - No reason to set value if keyboard was cancelled
if (bRes)
{
+#ifdef __PSVITA__
+ //CD - Changed to 2048 [SCE_IME_MAX_TEXT_LENGTH]
+ uint16_t pchText[2048];
+ ZeroMemory(pchText, 2048 * sizeof(uint16_t) );
+#else
uint16_t pchText[128];
ZeroMemory(pchText, 128 * sizeof(uint16_t) );
+#endif
InputManager.GetText(pchText);
pClass->m_editSeed.setLabel((wchar_t *)pchText);
pClass->m_params->seed = (wchar_t *)pchText;
@@ -458,5 +608,48 @@ void UIScene_LaunchMoreOptionsMenu::handleSliderMove(F64 sliderId, F64 currentVa
m_sliderWorldSize.setLabel(app.GetString(m_iWorldSizeTitleA[value]));
#endif
break;
+ case eControl_WorldResize:
+#ifdef _LARGE_WORLDS
+ EGameHostOptionWorldSize changedSize = EGameHostOptionWorldSize(value+1);
+ if(changedSize >= m_params->currentWorldSize)
+ {
+ m_sliderWorldResize.handleSliderMove(value);
+ m_params->newWorldSize = EGameHostOptionWorldSize(value+1);
+ m_sliderWorldResize.setLabel(app.GetString(m_iWorldSizeTitleA[value]));
+ }
+#endif
+ break;
}
}
+
+void UIScene_LaunchMoreOptionsMenu::UpdateCheats()
+{
+ bool cheatsOn = m_params->bHostPrivileges;
+
+ m_checkboxes[eLaunchCheckbox_KeepInventory].SetEnable(cheatsOn);
+ m_checkboxes[eLaunchCheckbox_MobSpawning].SetEnable(cheatsOn);
+ m_checkboxes[eLaunchCheckbox_MobGriefing].SetEnable(cheatsOn);
+ m_checkboxes[eLaunchCheckbox_DayLightCycle].SetEnable(cheatsOn);
+
+ if (!cheatsOn)
+ {
+ // Set defaults
+ m_params->bMobGriefing = true;
+ m_params->bKeepInventory = false;
+ m_params->bDoMobSpawning = true;
+ m_params->bDoDaylightCycle = true;
+
+ m_checkboxes[eLaunchCheckbox_KeepInventory].setChecked(m_params->bKeepInventory);
+ m_checkboxes[eLaunchCheckbox_MobSpawning].setChecked(m_params->bDoMobSpawning);
+ m_checkboxes[eLaunchCheckbox_MobGriefing].setChecked(m_params->bMobGriefing);
+ m_checkboxes[eLaunchCheckbox_DayLightCycle].setChecked(m_params->bDoDaylightCycle);
+ }
+}
+
+void UIScene_LaunchMoreOptionsMenu::UpdateOnline()
+{
+ bool bOnline = m_params->bOnlineGame;
+
+ m_checkboxes[eLaunchCheckbox_InviteOnly].SetEnable(bOnline);
+ m_checkboxes[eLaunchCheckbox_AllowFoF].SetEnable(bOnline);
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h
index 62d75115..367db10d 100644
--- a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h
@@ -5,6 +5,9 @@
class UIScene_LaunchMoreOptionsMenu : public UIScene
{
private:
+ static const int TAB_WORLD_OPTIONS = 0;
+ static const int TAB_GAME_OPTIONS = 1;
+
enum EControls
{
// Add all checkboxes at the start as they also index into a checkboxes array
@@ -21,81 +24,106 @@ private:
eLaunchCheckbox_FlatWorld,
eLaunchCheckbox_BonusChest,
eLaunchCheckbox_DisableSaving,
+ eLaunchCheckbox_WorldResizeType,
+ eLaunchCheckbox_KeepInventory,
+ eLaunchCheckbox_MobSpawning,
+ eLaunchCheckbox_MobLoot,
+ eLaunchCheckbox_MobGriefing,
+ eLaunchCheckbox_TileDrops,
+ eLaunchCheckbox_NaturalRegeneration,
+ eLaunchCheckbox_DayLightCycle,
eLaunchCheckboxes_Count,
eControl_EditSeed,
eControl_WorldSize,
+ eControl_WorldResize,
+
+ eControl_Count
};
+#ifdef __PSVITA__
+ enum ETouchInput
+ {
+ ETouchInput_TabWorld = eControl_Count,
+ ETouchInput_TabGame,
+
+ ETouchInput_Count
+ };
+ UIControl_Touch m_TouchTabWorld, m_TouchTabGame;
+ UIControl m_controlWorldPanel, m_controlGamePanel;
+#endif
UIControl m_gameOptions, m_worldOptions;
UIControl_CheckBox m_checkboxes[eLaunchCheckboxes_Count];
UIControl_Label m_labelWorldOptions, m_labelGameOptions, m_labelDescription;
- UIControl_Label m_labelSeed, m_labelRandomSeed, m_labelWorldSize;
+ UIControl_HTMLLabel m_labelDescription_GameOptions, m_labelDescription_WorldOptions;
+ UIControl_Label m_labelSeed, m_labelRandomSeed, m_labelWorldSize, m_labelWorldResize;
UIControl_TextInput m_editSeed;
UIControl_Slider m_sliderWorldSize;
- IggyName m_funcSetMenuType, m_funcChangeTab;
+ UIControl_Slider m_sliderWorldResize;
+ IggyName m_funcSetMenuType, m_funcChangeTab, m_funcSetDescription;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
- if(m_loadedResolution == eSceneResolution_1080)
- {
- UI_MAP_ELEMENT( m_labelGameOptions, "LabelGame")
- UI_MAP_ELEMENT( m_labelWorldOptions, "LabelWorld")
-
- UI_MAP_ELEMENT( m_gameOptions, "GameOptions")
- UI_BEGIN_MAP_CHILD_ELEMENTS(m_gameOptions)
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Online], "CheckboxOnline")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_InviteOnly], "CheckboxInviteOnly")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_AllowFoF], "CheckboxAllowFoF")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_PVP], "CheckboxPVP")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TrustSystem], "CheckboxTrustSystem")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FireSpreads], "CheckboxFireSpreads")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TNT], "CheckboxTNT")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_HostPrivileges], "CheckboxHostPrivileges")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_ResetNether], "CheckboxResetNether")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_DisableSaving], "CheckboxDisableSaving")
- UI_END_MAP_CHILD_ELEMENTS()
-
- UI_MAP_ELEMENT(m_worldOptions, "WorldOptions")
- UI_BEGIN_MAP_CHILD_ELEMENTS(m_worldOptions)
- UI_MAP_ELEMENT( m_labelSeed, "Seed")
- UI_MAP_ELEMENT( m_editSeed, "EditSeed")
- UI_MAP_ELEMENT( m_labelRandomSeed, "RandomSeed")
- UI_MAP_ELEMENT( m_labelWorldSize, "WorldSize")
- UI_MAP_ELEMENT( m_sliderWorldSize, "WorldSizeSlider")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Structures], "CheckboxStructures")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_BonusChest], "CheckboxBonusChest")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FlatWorld], "CheckboxFlatWorld")
- UI_END_MAP_CHILD_ELEMENTS()
-
- UI_MAP_NAME( m_funcChangeTab, L"ChangeTab")
- }
- else
- {
+ UI_MAP_ELEMENT( m_labelGameOptions, "LabelGame")
+ UI_MAP_ELEMENT( m_labelWorldOptions, "LabelWorld")
+
+ UI_MAP_ELEMENT( m_gameOptions, "GameOptions")
+ UI_BEGIN_MAP_CHILD_ELEMENTS(m_gameOptions)
+#ifdef __PSVITA__
+ UI_MAP_ELEMENT( m_TouchTabGame, "TouchTabGame" )
+#endif
+ UI_MAP_ELEMENT( m_labelDescription_GameOptions, "Description_GameOptions")
+
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Online], "CheckboxOnline")
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_InviteOnly], "CheckboxInviteOnly")
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_AllowFoF], "CheckboxAllowFoF")
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_PVP], "CheckboxPVP")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TrustSystem], "CheckboxTrustSystem")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FireSpreads], "CheckboxFireSpreads")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TNT], "CheckboxTNT")
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_HostPrivileges], "CheckboxHostPrivileges")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_ResetNether], "CheckboxResetNether")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_DayLightCycle], "CheckboxDayLightCycle")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_KeepInventory], "CheckboxKeepInventory")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_MobSpawning], "CheckboxMobSpawning")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_MobGriefing], "CheckboxMobGriefing")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_MobLoot], "CheckboxMobLoot")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TileDrops], "CheckboxTileDrops")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_NaturalRegeneration], "CheckboxNaturalRegeneration")
+ UI_END_MAP_CHILD_ELEMENTS()
+
+ UI_MAP_ELEMENT(m_worldOptions, "WorldOptions")
+ UI_BEGIN_MAP_CHILD_ELEMENTS(m_worldOptions)
+#ifdef __PSVITA__
+ UI_MAP_ELEMENT( m_TouchTabWorld, "TouchTabWorld" )
+#endif
+ UI_MAP_ELEMENT( m_labelDescription_WorldOptions, "Description_WorldOptions")
+
+ UI_MAP_ELEMENT( m_labelSeed, "Seed")
+ UI_MAP_ELEMENT( m_editSeed, "EditSeed")
+ UI_MAP_ELEMENT( m_labelRandomSeed, "RandomSeed")
+ UI_MAP_ELEMENT( m_labelWorldSize, "WorldSize")
+ UI_MAP_ELEMENT( m_sliderWorldSize, "WorldSizeSlider")
- UI_MAP_ELEMENT( m_labelWorldOptions, "WorldOptions")
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Structures], "CheckboxStructures")
- UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FlatWorld], "CheckboxFlatWorld")
UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_BonusChest], "CheckboxBonusChest")
- }
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FlatWorld], "CheckboxFlatWorld")
+
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_ResetNether], "CheckboxResetNether")
+
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_DisableSaving], "CheckboxDisableSaving")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TrustSystem], "CheckboxTrustSystem")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FireSpreads], "CheckboxFireSpreads")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TNT], "CheckboxTNT")
- UI_MAP_ELEMENT( m_labelDescription, "Description")
+ UI_MAP_ELEMENT( m_labelWorldResize, "ResizeLabel")
+ UI_MAP_ELEMENT( m_sliderWorldResize, "ChangeWorldSizeSlider")
+ UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_WorldResizeType], "CheckboxResizeType")
+ UI_END_MAP_CHILD_ELEMENTS()
+ UI_MAP_NAME( m_funcChangeTab, L"ChangeTab")
UI_MAP_NAME( m_funcSetMenuType, L"SetMenuType")
UI_END_MAP_ELEMENTS_AND_NAMES()
LaunchMoreOptionsMenuInitData *m_params;
bool m_bMultiplayerAllowed;
bool m_bIgnoreInput;
- bool m_tabIndex;
+ int m_tabIndex;
public:
UIScene_LaunchMoreOptionsMenu(int iPad, void *initData, UILayer *parentLayer);
@@ -122,4 +150,16 @@ public:
protected:
void handleCheckboxToggled(F64 controlId, bool selected);
+
+private:
+ bool m_bUpdateCheats; // If true, update cheats on next tick
+ void UpdateCheats();
+
+ bool m_bUpdateOnline; // If true, update online settings on next tick
+ void UpdateOnline();
+
+#ifdef __PSVITA__
+ virtual void handleTouchInput(unsigned int iPad, S32 x, S32 y, int iId, bool bPressed, bool bRepeat, bool bReleased);
+ virtual UIControl* GetMainPanel();
+#endif //__PSVITA__
};
diff --git a/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.cpp
index 80db57f8..12b21905 100644
--- a/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.cpp
@@ -12,8 +12,8 @@
const int UIScene_LeaderboardsMenu::TitleIcons[UIScene_LeaderboardsMenu::NUM_LEADERBOARDS][7] =
{
{ UIControl_LeaderboardList::e_ICON_TYPE_WALKED, UIControl_LeaderboardList::e_ICON_TYPE_FALLEN, Item::minecart_Id, Item::boat_Id, NULL },
- { Tile::dirt_Id, Tile::stoneBrick_Id, Tile::sand_Id, Tile::rock_Id, Tile::gravel_Id, Tile::clay_Id, Tile::obsidian_Id },
- { Item::egg_Id, Item::wheat_Id, Tile::mushroom1_Id, Tile::reeds_Id, Item::milk_Id, Tile::pumpkin_Id, NULL },
+ { Tile::dirt_Id, Tile::cobblestone_Id, Tile::sand_Id, Tile::stone_Id, Tile::gravel_Id, Tile::clay_Id, Tile::obsidian_Id },
+ { Item::egg_Id, Item::wheat_Id, Tile::mushroom_brown_Id, Tile::reeds_Id, Item::bucket_milk_Id, Tile::pumpkin_Id, NULL },
{ UIControl_LeaderboardList::e_ICON_TYPE_ZOMBIE, UIControl_LeaderboardList::e_ICON_TYPE_SKELETON, UIControl_LeaderboardList::e_ICON_TYPE_CREEPER, UIControl_LeaderboardList::e_ICON_TYPE_SPIDER, UIControl_LeaderboardList::e_ICON_TYPE_SPIDERJOKEY, UIControl_LeaderboardList::e_ICON_TYPE_ZOMBIEPIGMAN, UIControl_LeaderboardList::e_ICON_TYPE_SLIME },
};
const UIScene_LeaderboardsMenu::LeaderboardDescriptor UIScene_LeaderboardsMenu::LEADERBOARD_DESCRIPTORS[UIScene_LeaderboardsMenu::NUM_LEADERBOARDS][4] = {
@@ -43,7 +43,8 @@ const UIScene_LeaderboardsMenu::LeaderboardDescriptor UIScene_LeaderboardsMenu::
},
};
-UIScene_LeaderboardsMenu::UIScene_LeaderboardsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
+UIScene_LeaderboardsMenu::UIScene_LeaderboardsMenu(int iPad, void *initData, UILayer *parentLayer)
+ : UIScene(iPad, parentLayer), m_interface(LeaderboardManager::Instance())
{
// Setup all the Iggy references we need for this scene
initialiseMovie();
@@ -60,8 +61,6 @@ UIScene_LeaderboardsMenu::UIScene_LeaderboardsMenu(int iPad, void *initData, UIL
// Alert the app the we want to be informed of ethernet connections
app.SetLiveLinkRequired( true );
- LeaderboardManager::Instance()->OpenSession();
-
//GetFriends();
m_currentLeaderboard = 0;
@@ -86,9 +85,6 @@ UIScene_LeaderboardsMenu::UIScene_LeaderboardsMenu(int iPad, void *initData, UIL
UIScene_LeaderboardsMenu::~UIScene_LeaderboardsMenu()
{
- LeaderboardManager::Instance()->CancelOperation();
- LeaderboardManager::Instance()->CloseSession();
-
// Alert the app the we no longer want to be informed of ethernet connections
app.SetLiveLinkRequired( false );
}
@@ -159,6 +155,12 @@ wstring UIScene_LeaderboardsMenu::getMoviePath()
return L"LeaderboardMenu";
}
+void UIScene_LeaderboardsMenu::tick()
+{
+ UIScene::tick();
+ m_interface.tick();
+}
+
void UIScene_LeaderboardsMenu::handleReload()
{
// We don't allow this in splitscreen, so just go back
@@ -457,16 +459,19 @@ void UIScene_LeaderboardsMenu::ReadStats(int startIndex)
switch (filtermode)
{
case LeaderboardManager::eFM_TopRank:
- LeaderboardManager::Instance()->ReadStats_TopRank( this,
- m_currentDifficulty, (LeaderboardManager::EStatsType) m_currentLeaderboard,
- m_newEntryIndex, m_newReadSize
- );
+ {
+ m_interface.ReadStats_TopRank(
+ this,
+ m_currentDifficulty, (LeaderboardManager::EStatsType) m_currentLeaderboard,
+ m_newEntryIndex, m_newReadSize
+ );
+ }
break;
case LeaderboardManager::eFM_MyScore:
{
PlayerUID uid;
ProfileManager.GetXUID(ProfileManager.GetPrimaryPad(),&uid, true);
- LeaderboardManager::Instance()->ReadStats_MyScore( this,
+ m_interface.ReadStats_MyScore( this,
m_currentDifficulty, (LeaderboardManager::EStatsType) m_currentLeaderboard,
uid /*ignored on PS3*/,
m_newReadSize
@@ -477,7 +482,7 @@ void UIScene_LeaderboardsMenu::ReadStats(int startIndex)
{
PlayerUID uid;
ProfileManager.GetXUID(ProfileManager.GetPrimaryPad(),&uid, true);
- LeaderboardManager::Instance()->ReadStats_Friends( this,
+ m_interface.ReadStats_Friends( this,
m_currentDifficulty, (LeaderboardManager::EStatsType) m_currentLeaderboard,
uid /*ignored on PS3*/,
m_newEntryIndex, m_newReadSize
@@ -501,14 +506,11 @@ bool UIScene_LeaderboardsMenu::OnStatsReadComplete(LeaderboardManager::eStatsRet
bool ret;
//app.DebugPrintf("Leaderboards read %d stats\n", numResults);
- if (retIn == LeaderboardManager::eStatsReturn_Success)
- {
- m_numStats = numResults;
- m_stats = results;
- ret = RetrieveStats();
- }
- else ret = true;
-
+
+ m_numStats = numResults;
+ m_stats = results;
+ ret = RetrieveStats();
+
//else LeaderboardManager::Instance()->SetStatsRetrieved(false);
PopulateLeaderboard(retIn);
@@ -632,7 +634,7 @@ bool UIScene_LeaderboardsMenu::RetrieveStats()
}
break;
}
- }
+ }
}
// If not set, default to start index
@@ -1021,7 +1023,7 @@ void UIScene_LeaderboardsMenu::handleTimerComplete(int id)
// If they have, bring up the PSN warning and exit from the leaderboards
unsigned int uiIDA[1];
uiIDA[0]=IDS_OK;
- C4JStorage::EMessageResult result = ui.RequestMessageBox( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad(),UIScene_LeaderboardsMenu::ExitLeaderboards,this, app.GetStringTable());
+ C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_CONNECTION_LOST, g_NetworkManager.CorrectErrorIDS(IDS_CONNECTION_LOST_LIVE_NO_EXIT), uiIDA,1,ProfileManager.GetPrimaryPad(),UIScene_LeaderboardsMenu::ExitLeaderboards,this);
}
#endif
break;
diff --git a/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.h b/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.h
index 20bf0002..bcd4fe87 100644
--- a/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_LeaderboardsMenu.h
@@ -1,7 +1,8 @@
#pragma once
#include "UIScene.h"
-#include "..\Leaderboards\LeaderboardManager.h"
+// #include "..\Leaderboards\LeaderboardManager.h"
+#include "..\Leaderboards\LeaderboardInterface.h"
class UIScene_LeaderboardsMenu : public UIScene, public LeaderboardReadListener
{
@@ -72,6 +73,8 @@ private:
bool m_bPopulatedOnce;
bool m_bReady;
+ LeaderboardInterface m_interface;
+
UIControl_LeaderboardList m_listEntries;
UIControl_Label m_labelFilter, m_labelLeaderboard, m_labelEntries, m_labelInfo;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
@@ -105,7 +108,8 @@ protected:
virtual wstring getMoviePath();
public:
- void handleReload();
+ virtual void tick();
+ virtual void handleReload();
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
diff --git a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp
index bb399b97..92f2a403 100644
--- a/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_LoadMenu.cpp
@@ -33,24 +33,27 @@ int UIScene_LoadMenu::m_iDifficultyTitleSettingA[4]=
int UIScene_LoadMenu::LoadSaveDataThumbnailReturned(LPVOID lpParam,PBYTE pbThumbnail,DWORD dwThumbnailBytes)
{
- UIScene_LoadMenu *pClass= (UIScene_LoadMenu *)lpParam;
+ UIScene_LoadMenu *pClass= (UIScene_LoadMenu *)ui.GetSceneFromCallbackId((size_t)lpParam);
- app.DebugPrintf("Received data for a thumbnail\n");
-
- if(pbThumbnail && dwThumbnailBytes)
+ if(pClass)
{
- pClass->registerSubstitutionTexture(pClass->m_thumbnailName,pbThumbnail,dwThumbnailBytes);
+ app.DebugPrintf("Received data for a thumbnail\n");
- pClass->m_pbThumbnailData = pbThumbnail;
- pClass->m_uiThumbnailSize = dwThumbnailBytes;
- pClass->m_bSaveThumbnailReady = true;
- }
- else
- {
- app.DebugPrintf("Thumbnail data is NULL, or has size 0\n");
- pClass->m_bThumbnailGetFailed = true;
+ if(pbThumbnail && dwThumbnailBytes)
+ {
+ pClass->registerSubstitutionTexture(pClass->m_thumbnailName,pbThumbnail,dwThumbnailBytes);
+
+ pClass->m_pbThumbnailData = pbThumbnail;
+ pClass->m_uiThumbnailSize = dwThumbnailBytes;
+ pClass->m_bSaveThumbnailReady = true;
+ }
+ else
+ {
+ app.DebugPrintf("Thumbnail data is NULL, or has size 0\n");
+ pClass->m_bThumbnailGetFailed = true;
+ }
+ pClass->m_bRetrievingSaveThumbnail = false;
}
- pClass->m_bRetrievingSaveThumbnail = false;
return 0;
}
@@ -90,8 +93,10 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye
m_iSaveGameInfoIndex=params->iSaveGameInfoIndex;
m_levelGen = params->levelGen;
- m_bGameModeSurvival=true;
+ m_bGameModeCreative = false;
+ m_iGameModeId = GameType::SURVIVAL->getId();
m_bHasBeenInCreative = false;
+ m_bIsSaveOwner = true;
m_bSaveThumbnailReady = false;
m_bRetrievingSaveThumbnail = true;
@@ -103,6 +108,7 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye
m_bRebuildTouchBoxes = false;
m_bThumbnailGetFailed = false;
m_seed = 0;
+ m_bIsCorrupt = false;
m_bMultiplayerAllowed = ProfileManager.IsSignedInLive( m_iPad ) && ProfileManager.AllowedToPlayMultiplayer(m_iPad);
// 4J-PB - read the settings for the online flag. We'll only save this setting if the user changed it.
@@ -136,29 +142,23 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye
}
}
-
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
- {
- // Set up online game checkbox
- bool bOnlineGame = m_MoreOptionsParams.bOnlineGame;
- m_checkboxOnline.SetEnable(true);
+ // Set up online game checkbox
+ bool bOnlineGame = m_MoreOptionsParams.bOnlineGame;
+ m_checkboxOnline.SetEnable(true);
- // 4J-PB - to stop an offline game being able to select the online flag
- if(ProfileManager.IsSignedInLive(m_iPad) == false)
- {
- m_checkboxOnline.SetEnable(false);
- }
-
- if(m_MoreOptionsParams.bOnlineSettingChangedBySystem)
- {
- m_checkboxOnline.SetEnable(false);
- bOnlineGame = false;
- }
+ // 4J-PB - to stop an offline game being able to select the online flag
+ if(ProfileManager.IsSignedInLive(m_iPad) == false)
+ {
+ m_checkboxOnline.SetEnable(false);
+ }
- m_checkboxOnline.init(app.GetString(IDS_ONLINE_GAME), eControl_OnlineGame, bOnlineGame);
+ if(m_MoreOptionsParams.bOnlineSettingChangedBySystem)
+ {
+ m_checkboxOnline.SetEnable(false);
+ bOnlineGame = false;
}
-#endif
+
+ m_checkboxOnline.init(app.GetString(IDS_ONLINE_GAME), eControl_OnlineGame, bOnlineGame);
// Level gen
if(m_levelGen)
@@ -185,8 +185,15 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye
}
}
// Set this level as created in creative mode, so that people can't use the themed worlds as an easy way to get achievements
- m_bHasBeenInCreative = true;
- m_labelCreatedMode.setLabel( app.GetString(IDS_CREATED_IN_CREATIVE) );
+ m_bHasBeenInCreative = m_levelGen->getLevelHasBeenInCreative();
+ if(m_bHasBeenInCreative)
+ {
+ m_labelCreatedMode.setLabel( app.GetString(IDS_CREATED_IN_CREATIVE) );
+ }
+ else
+ {
+ m_labelCreatedMode.setLabel( app.GetString(IDS_CREATED_IN_SURVIVAL) );
+ }
}
else
{
@@ -225,17 +232,19 @@ UIScene_LoadMenu::UIScene_LoadMenu(int iPad, void *initData, UILayer *parentLaye
#ifdef _DURANGO
// On Durango, we have an extra flag possible with LoadSaveDataThumbnail, which if true will force the loading of this thumbnail even if the save data isn't sync'd from
// the cloud at this stage. This could mean that there could be a pretty large delay before the callback happens, in this case.
- C4JStorage::ESaveGameState eLoadStatus=StorageManager.LoadSaveDataThumbnail(&pSaveDetails->SaveInfoA[(int)m_iSaveGameInfoIndex],&LoadSaveDataThumbnailReturned,this,true);
+ C4JStorage::ESaveGameState eLoadStatus=StorageManager.LoadSaveDataThumbnail(&pSaveDetails->SaveInfoA[(int)m_iSaveGameInfoIndex],&LoadSaveDataThumbnailReturned,(LPVOID)GetCallbackUniqueId(),true);
#else
- C4JStorage::ESaveGameState eLoadStatus=StorageManager.LoadSaveDataThumbnail(&pSaveDetails->SaveInfoA[(int)m_iSaveGameInfoIndex],&LoadSaveDataThumbnailReturned,this);
+ C4JStorage::ESaveGameState eLoadStatus=StorageManager.LoadSaveDataThumbnail(&pSaveDetails->SaveInfoA[(int)m_iSaveGameInfoIndex],&LoadSaveDataThumbnailReturned,(LPVOID)GetCallbackUniqueId());
#endif
m_bShowTimer = true;
}
#if defined(_DURANGO)
m_labelGameName.init(params->saveDetails->UTF16SaveName);
#else
-
- m_labelGameName.init(params->saveDetails->UTF8SaveName);
+ wchar_t wSaveName[128];
+ ZeroMemory(wSaveName, 128 * sizeof(wchar_t) );
+ mbstowcs(wSaveName, params->saveDetails->UTF8SaveName, strlen(params->saveDetails->UTF8SaveName)+1); // plus null
+ m_labelGameName.init(wSaveName);
#endif
#endif
#ifdef _WINDOWS64
@@ -467,6 +476,26 @@ void UIScene_LoadMenu::tick()
m_MoreOptionsParams.bTNT = app.GetGameHostOption(uiHostOptions,eGameHostOption_TNT)>0?TRUE:FALSE;
m_MoreOptionsParams.bHostPrivileges = app.GetGameHostOption(uiHostOptions,eGameHostOption_CheatsEnabled)>0?TRUE:FALSE;
m_MoreOptionsParams.bDisableSaving = app.GetGameHostOption(uiHostOptions,eGameHostOption_DisableSaving)>0?TRUE:FALSE;
+ m_MoreOptionsParams.currentWorldSize = (EGameHostOptionWorldSize)app.GetGameHostOption(uiHostOptions,eGameHostOption_WorldSize);
+ m_MoreOptionsParams.newWorldSize = m_MoreOptionsParams.currentWorldSize;
+
+ m_MoreOptionsParams.bMobGriefing = app.GetGameHostOption(uiHostOptions, eGameHostOption_MobGriefing);
+ m_MoreOptionsParams.bKeepInventory = app.GetGameHostOption(uiHostOptions, eGameHostOption_KeepInventory);
+ m_MoreOptionsParams.bDoMobSpawning = app.GetGameHostOption(uiHostOptions, eGameHostOption_DoMobSpawning);
+ m_MoreOptionsParams.bDoMobLoot = app.GetGameHostOption(uiHostOptions, eGameHostOption_DoMobLoot);
+ m_MoreOptionsParams.bDoTileDrops = app.GetGameHostOption(uiHostOptions, eGameHostOption_DoTileDrops);
+ m_MoreOptionsParams.bNaturalRegeneration = app.GetGameHostOption(uiHostOptions, eGameHostOption_NaturalRegeneration);
+ m_MoreOptionsParams.bDoDaylightCycle = app.GetGameHostOption(uiHostOptions, eGameHostOption_DoDaylightCycle);
+
+ bool cheatsOn = m_MoreOptionsParams.bHostPrivileges;
+ if (!cheatsOn)
+ {
+ // Set defaults
+ m_MoreOptionsParams.bMobGriefing = true;
+ m_MoreOptionsParams.bKeepInventory = false;
+ m_MoreOptionsParams.bDoMobSpawning = true;
+ m_MoreOptionsParams.bDoDaylightCycle = true;
+ }
// turn off creative mode on the save
// #ifdef _DEBUG
@@ -474,6 +503,11 @@ void UIScene_LoadMenu::tick()
// app.SetGameHostOption(eGameHostOption_HasBeenInCreative, 0);
// #endif
+ if(app.GetGameHostOption(uiHostOptions,eGameHostOption_WasntSaveOwner)>0)
+ {
+ m_bIsSaveOwner = false;
+ }
+
m_bHasBeenInCreative = app.GetGameHostOption(uiHostOptions,eGameHostOption_HasBeenInCreative)>0;
if(app.GetGameHostOption(uiHostOptions,eGameHostOption_HasBeenInCreative)>0)
{
@@ -484,11 +518,27 @@ void UIScene_LoadMenu::tick()
m_labelCreatedMode.setLabel( app.GetString(IDS_CREATED_IN_SURVIVAL) );
}
- if(app.GetGameHostOption(uiHostOptions,eGameHostOption_GameType)>0)
- {
+ switch(app.GetGameHostOption(uiHostOptions,eGameHostOption_GameType))
+ {
+ case 1: // Creative
m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_CREATIVE));
- m_bGameModeSurvival=false;
- }
+ m_bGameModeCreative=true;
+ m_iGameModeId = GameType::CREATIVE->getId();
+ break;
+#ifdef _ADVENTURE_MODE_ENABLED
+ case 2: // Adventure
+ m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_ADVENTURE));
+ m_bGameModeCreative=false;
+ m_iGameModeId = GameType::ADVENTURE->getId();
+ break;
+#endif
+ case 0: // Survival
+ default:
+ m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_SURVIVAL));
+ m_bGameModeCreative=false;
+ m_iGameModeId = GameType::SURVIVAL->getId();
+ break;
+ };
bool bGameSetting_Online=(app.GetGameSettings(m_iPad,eGameSetting_Online)!=0);
if(app.GetGameHostOption(uiHostOptions,eGameHostOption_FriendsOfFriends) && !(m_bMultiplayerAllowed && bGameSetting_Online))
@@ -555,7 +605,7 @@ void UIScene_LoadMenu::tick()
uiIDA[0]=IDS_PRO_NOTONLINE_DECLINE;
// Give the player a warning about the texture pack missing
- ui.RequestMessageBox(IDS_PLAY_OFFLINE,IDS_NO_PLAYSTATIONPLUS, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_LoadMenu::ContinueOffline,this,app.GetStringTable(), 0, 0, false);
+ ui.RequestAlertMessage(IDS_PLAY_OFFLINE,IDS_NO_PLAYSTATIONPLUS, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_LoadMenu::ContinueOffline,this);
}
}
break;
@@ -609,7 +659,7 @@ void UIScene_LoadMenu::handleInput(int iPad, int key, bool repeat, bool pressed,
if ( pressed && controlHasFocus(m_checkboxOnline.getId()) && !m_checkboxOnline.IsEnabled() )
{
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad);
}
#endif
@@ -620,23 +670,19 @@ void UIScene_LoadMenu::handleInput(int iPad, int key, bool repeat, bool pressed,
case ACTION_MENU_OTHER_STICK_UP:
case ACTION_MENU_OTHER_STICK_DOWN:
sendInputToMovie(key, repeat, pressed, released);
-
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
+
+ bool bOnlineGame = m_checkboxOnline.IsChecked();
+ if (m_MoreOptionsParams.bOnlineGame != bOnlineGame)
{
- bool bOnlineGame = m_checkboxOnline.IsChecked();
- if (m_MoreOptionsParams.bOnlineGame != bOnlineGame)
- {
- m_MoreOptionsParams.bOnlineGame = bOnlineGame;
+ m_MoreOptionsParams.bOnlineGame = bOnlineGame;
- if (!m_MoreOptionsParams.bOnlineGame)
- {
- m_MoreOptionsParams.bInviteOnly = false;
- m_MoreOptionsParams.bAllowFriendsOfFriends = false;
- }
+ if (!m_MoreOptionsParams.bOnlineGame)
+ {
+ m_MoreOptionsParams.bInviteOnly = false;
+ m_MoreOptionsParams.bAllowFriendsOfFriends = false;
}
}
-#endif
+
handled = true;
break;
}
@@ -652,16 +698,26 @@ void UIScene_LoadMenu::handlePress(F64 controlId, F64 childId)
switch((int)controlId)
{
case eControl_GameMode:
- if(m_bGameModeSurvival)
+ switch(m_iGameModeId)
{
+ case 0: // Survival
m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_CREATIVE));
- m_bGameModeSurvival=false;
- }
- else
- {
+ m_iGameModeId = GameType::CREATIVE->getId();
+ m_bGameModeCreative = true;
+ break;
+ case 1: // Creative
+#ifdef _ADVENTURE_MODE_ENABLED
+ m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_ADVENTURE));
+ m_iGameModeId = GameType::ADVENTURE->getId();
+ m_bGameModeCreative = false;
+ break;
+ case 2: // Adventure
+#endif
m_buttonGamemode.setLabel(app.GetString(IDS_GAMEMODE_SURVIVAL));
- m_bGameModeSurvival=true;
- }
+ m_iGameModeId = GameType::SURVIVAL->getId();
+ m_bGameModeCreative = false;
+ break;
+ };
break;
case eControl_MoreOptions:
ui.NavigateToScene(m_iPad, eUIScene_LaunchMoreOptionsMenu, &m_MoreOptionsParams);
@@ -739,7 +795,7 @@ void UIScene_LoadMenu::StartSharedLaunchFlow()
uiIDA[1]=IDS_CONFIRM_CANCEL;
// Give the player a warning about the texture pack missing
- ui.RequestMessageBox(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&TexturePackDialogReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&TexturePackDialogReturned,this);
return;
}
}
@@ -809,13 +865,13 @@ void UIScene_LoadMenu::StartSharedLaunchFlow()
// trial pack warning
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 1, m_iPad,&TrialTexturePackWarningReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 1, m_iPad,&TrialTexturePackWarningReturned,this);
#elif defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
// trial pack warning
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 2, m_iPad,&TrialTexturePackWarningReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_USING_TRIAL_TEXUREPACK_WARNING, uiIDA, 2, m_iPad,&TrialTexturePackWarningReturned,this);
#endif
#if defined _XBOX_ONE || defined __ORBIS__
@@ -825,11 +881,45 @@ void UIScene_LoadMenu::StartSharedLaunchFlow()
}
}
}
+ app.SetGameHostOption(eGameHostOption_WasntSaveOwner, (!m_bIsSaveOwner));
#if defined _XBOX_ONE || defined __ORBIS__
app.SetGameHostOption(eGameHostOption_DisableSaving, m_MoreOptionsParams.bDisableSaving?1:0);
-
StorageManager.SetSaveDisabled(m_MoreOptionsParams.bDisableSaving);
+
+ int newWorldSize = 0;
+ int newHellScale = 0;
+ switch(m_MoreOptionsParams.newWorldSize)
+ {
+ case e_worldSize_Unknown:
+ newWorldSize = 0;
+ newHellScale = 0;
+ break;
+ case e_worldSize_Classic:
+ newWorldSize = LEVEL_WIDTH_CLASSIC;
+ newHellScale = HELL_LEVEL_SCALE_CLASSIC;
+ break;
+ case e_worldSize_Small:
+ newWorldSize = LEVEL_WIDTH_SMALL;
+ newHellScale = HELL_LEVEL_SCALE_SMALL;
+ break;
+ case e_worldSize_Medium:
+ newWorldSize = LEVEL_WIDTH_MEDIUM;
+ newHellScale = HELL_LEVEL_SCALE_MEDIUM;
+ break;
+ case e_worldSize_Large:
+ newWorldSize = LEVEL_WIDTH_LARGE;
+ newHellScale = HELL_LEVEL_SCALE_LARGE;
+ break;
+ default:
+ assert(0);
+ break;
+ }
+ bool bUseMoat = !m_MoreOptionsParams.newWorldSizeOverwriteEdges;
+ app.SetGameNewWorldSize(newWorldSize, bUseMoat);
+ app.SetGameNewHellScale(newHellScale);
+ app.SetGameHostOption(eGameHostOption_WorldSize, m_MoreOptionsParams.newWorldSize);
+
#endif
#if TO_BE_IMPLEMENTED
@@ -844,7 +934,7 @@ void UIScene_LoadMenu::StartSharedLaunchFlow()
uiIDA[0]=IDS_DONT_RESET_NETHER;
uiIDA[1]=IDS_RESET_NETHER;
- ui.RequestMessageBox(IDS_RESETNETHER_TITLE, IDS_RESETNETHER_TEXT, uiIDA, 2, m_iPad,&UIScene_LoadMenu::CheckResetNetherReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_RESETNETHER_TITLE, IDS_RESETNETHER_TEXT, uiIDA, 2, m_iPad,&UIScene_LoadMenu::CheckResetNetherReturned,this);
}
else
{
@@ -915,13 +1005,9 @@ void UIScene_LoadMenu::handleTimerComplete(int id)
m_MoreOptionsParams.bInviteOnly = FALSE;
m_MoreOptionsParams.bAllowFriendsOfFriends = FALSE;
}
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
- {
- m_checkboxOnline.SetEnable(bMultiplayerAllowed);
- m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame);
- }
-#endif
+
+ m_checkboxOnline.SetEnable(bMultiplayerAllowed);
+ m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame);
m_bMultiplayerAllowed = bMultiplayerAllowed;
}
@@ -998,17 +1084,17 @@ void UIScene_LoadMenu::LaunchGame(void)
killTimer(CHECKFORAVAILABLETEXTUREPACKS_TIMER_ID);
#endif
- if( (m_bGameModeSurvival != true || m_bHasBeenInCreative) || m_MoreOptionsParams.bHostPrivileges == TRUE)
+ if( (m_bGameModeCreative == true || m_bHasBeenInCreative) || m_MoreOptionsParams.bHostPrivileges == TRUE)
{
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- if(m_bGameModeSurvival != true || m_bHasBeenInCreative)
+ if(m_bGameModeCreative == true || m_bHasBeenInCreative)
{
// 4J-PB - Need different text for Survival mode with a level that has been saved in Creative
- if(m_bGameModeSurvival)
+ if(!m_bGameModeCreative)
{
- ui.RequestMessageBox(IDS_TITLE_START_GAME, IDS_CONFIRM_START_SAVEDINCREATIVE, uiIDA, 2, m_iPad,&UIScene_LoadMenu::ConfirmLoadReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TITLE_START_GAME, IDS_CONFIRM_START_SAVEDINCREATIVE, uiIDA, 2, m_iPad,&UIScene_LoadMenu::ConfirmLoadReturned,this);
}
else // it's creative mode
{
@@ -1022,7 +1108,8 @@ void UIScene_LoadMenu::LaunchGame(void)
if(m_levelGen != NULL)
{
- LoadLevelGen(m_levelGen);
+ m_bIsCorrupt = false;
+ LoadDataComplete(this);
}
else
{
@@ -1042,7 +1129,7 @@ void UIScene_LoadMenu::LaunchGame(void)
StorageManager.SetSaveDeviceSelected(m_iPad,false);
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 1, m_iPad,&CScene_LoadGameSettings::DeviceRemovedDialogReturned,this);
+ ui.RequestErrorMessage(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 1, m_iPad,&CScene_LoadGameSettings::DeviceRemovedDialogReturned,this);
}
#endif
@@ -1051,20 +1138,21 @@ void UIScene_LoadMenu::LaunchGame(void)
else
{
// ask if they're sure they want to turn this into a creative map
- ui.RequestMessageBox(IDS_TITLE_START_GAME, IDS_CONFIRM_START_CREATIVE, uiIDA, 2, m_iPad,&UIScene_LoadMenu::ConfirmLoadReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TITLE_START_GAME, IDS_CONFIRM_START_CREATIVE, uiIDA, 2, m_iPad,&UIScene_LoadMenu::ConfirmLoadReturned,this);
}
}
}
else
{
- ui.RequestMessageBox(IDS_TITLE_START_GAME, IDS_CONFIRM_START_HOST_PRIVILEGES, uiIDA, 2, m_iPad,&UIScene_LoadMenu::ConfirmLoadReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TITLE_START_GAME, IDS_CONFIRM_START_HOST_PRIVILEGES, uiIDA, 2, m_iPad,&UIScene_LoadMenu::ConfirmLoadReturned,this);
}
}
else
{
if(m_levelGen != NULL)
{
- LoadLevelGen(m_levelGen);
+ m_bIsCorrupt = false;
+ LoadDataComplete(this);
}
else
{
@@ -1083,7 +1171,7 @@ void UIScene_LoadMenu::LaunchGame(void)
StorageManager.SetSaveDeviceSelected(m_iPad,false);
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 1, m_iPad,&CScene_LoadGameSettings::DeviceRemovedDialogReturned,this);
+ ui.RequestErrorMessage(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 1, m_iPad,&CScene_LoadGameSettings::DeviceRemovedDialogReturned,this);
}
#endif
}
@@ -1123,7 +1211,8 @@ int UIScene_LoadMenu::ConfirmLoadReturned(void *pParam,int iPad,C4JStorage::EMes
{
if(pClass->m_levelGen != NULL)
{
- pClass->LoadLevelGen(pClass->m_levelGen);
+ pClass->m_bIsCorrupt = false;
+ pClass->LoadDataComplete(pClass);
}
else
{
@@ -1142,9 +1231,9 @@ int UIScene_LoadMenu::ConfirmLoadReturned(void *pParam,int iPad,C4JStorage::EMes
StorageManager.SetSaveDeviceSelected(m_iPad,false);
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 1, m_iPad,&CScene_LoadGameSettings::DeviceRemovedDialogReturned,this);
+ ui.RequestErrorMessage(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 1, m_iPad,&CScene_LoadGameSettings::DeviceRemovedDialogReturned,this);
}
-#endif
+#endif
}
}
else
@@ -1193,7 +1282,7 @@ int UIScene_LoadMenu::LoadDataComplete(void *pParam)
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive if the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive);
}
else
{
@@ -1201,14 +1290,14 @@ int UIScene_LoadMenu::LoadDataComplete(void *pParam)
UINT uiIDA[2];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1] = IDS_CANCEL;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_LoadMenu::MustSignInReturnedPSN, pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_LoadMenu::MustSignInReturnedPSN, pClass);
}
return 0;
#else
pClass->m_bIgnoreInput=false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
return 0;
#endif
}
@@ -1267,6 +1356,15 @@ int UIScene_LoadMenu::LoadDataComplete(void *pParam)
pClass->setVisible( true );
pClass->m_bIgnoreInput=false;
+ if(ProfileManager.RequestingPlaystationPlus(iPadWithNoPlaystationPlus))
+ {
+ // MGH - added this so we don't try and upsell when we don't know if the player has PS Plus yet (if it can't connect to the PS Plus server).
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_OK;
+ ui.RequestAlertMessage(IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL, NULL);
+ return 0;
+ }
+
// 4J-PB - we're not allowed to show the text Playstation Plus - have to call the upsell all the time!
// upsell psplus
int32_t iResult=sceNpCommerceDialogInitialize();
@@ -1327,6 +1425,15 @@ int UIScene_LoadMenu::LoadDataComplete(void *pParam)
pClass->setVisible( true );
pClass->m_bIgnoreInput=false;
+ if(ProfileManager.RequestingPlaystationPlus(iPadWithNoPlaystationPlus))
+ {
+ // MGH - added this so we don't try and upsell when we don't know if the player has PS Plus yet (if it can't connect to the PS Plus server).
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_OK;
+ ui.RequestAlertMessage(IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL, NULL);
+ return 0;
+ }
+
// 4J-PB - we're not allowed to show the text Playstation Plus - have to call the upsell all the time!
// upsell psplus
int32_t iResult=sceNpCommerceDialogInitialize();
@@ -1367,7 +1474,7 @@ int UIScene_LoadMenu::LoadDataComplete(void *pParam)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_CORRUPT_OR_DAMAGED_SAVE_TITLE, IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT, uiIDA, 2, pClass->m_iPad,&UIScene_LoadMenu::DeleteSaveDialogReturned,pClass, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_CORRUPT_OR_DAMAGED_SAVE_TITLE, IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT, uiIDA, 2, pClass->m_iPad,&UIScene_LoadMenu::DeleteSaveDialogReturned,pClass);
}
@@ -1379,6 +1486,14 @@ int UIScene_LoadMenu::LoadSaveDataReturned(void *pParam,bool bIsCorrupt, bool bI
UIScene_LoadMenu* pClass = (UIScene_LoadMenu*)pParam;
pClass->m_bIsCorrupt=bIsCorrupt;
+
+#if defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)
+ if(app.GetGameHostOption(eGameHostOption_WasntSaveOwner))
+ {
+ bIsOwner = false;
+ }
+#endif
+
if(bIsOwner)
{
LoadDataComplete(pClass);
@@ -1392,8 +1507,9 @@ int UIScene_LoadMenu::LoadSaveDataReturned(void *pParam,bool bIsCorrupt, bool bI
// show the message that trophies are disabled
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_SAVEDATA_COPIED_TITLE, IDS_SAVEDATA_COPIED_TEXT, uiIDA, 1,
- pClass->m_iPad,&UIScene_LoadMenu::TrophyDialogReturned,pClass, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_SAVEDATA_COPIED_TITLE, IDS_SAVEDATA_COPIED_TEXT, uiIDA, 1,
+ pClass->m_iPad,&UIScene_LoadMenu::TrophyDialogReturned,pClass);
+ app.SetGameHostOption(eGameHostOption_WasntSaveOwner, true);
#endif
}
@@ -1437,9 +1553,18 @@ int UIScene_LoadMenu::DeleteSaveDataReturned(void *pParam,bool bSuccess)
// 4J Stu - Shared functionality that is the same whether we needed a quadrant sign-in or not
void UIScene_LoadMenu::StartGameFromSave(UIScene_LoadMenu* pClass, DWORD dwLocalUsersMask)
{
- INT saveOrCheckpointId = 0;
- bool validSave = StorageManager.GetSaveUniqueNumber(&saveOrCheckpointId);
- TelemetryManager->RecordLevelResume(pClass->m_iPad, eSen_FriendOrMatch_Playing_With_Invited_Friends, eSen_CompeteOrCoop_Coop_and_Competitive, app.GetGameSettings(pClass->m_iPad,eGameSetting_Difficulty), app.GetLocalPlayerCount(), g_NetworkManager.GetOnlinePlayerCount(), saveOrCheckpointId);
+ if(pClass->m_levelGen == NULL)
+ {
+ INT saveOrCheckpointId = 0;
+ bool validSave = StorageManager.GetSaveUniqueNumber(&saveOrCheckpointId);
+ TelemetryManager->RecordLevelResume(pClass->m_iPad, eSen_FriendOrMatch_Playing_With_Invited_Friends, eSen_CompeteOrCoop_Coop_and_Competitive, app.GetGameSettings(pClass->m_iPad,eGameSetting_Difficulty), app.GetLocalPlayerCount(), g_NetworkManager.GetOnlinePlayerCount(), saveOrCheckpointId);
+ }
+ else
+ {
+ StorageManager.ResetSaveData();
+ // Make our next save default to the name of the level
+ StorageManager.SetSaveTitle(pClass->m_levelGen->getDefaultSaveName().c_str());
+ }
bool isClientSide = ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()) && pClass->m_MoreOptionsParams.bOnlineGame;
#ifdef __PSVITA__
@@ -1456,7 +1581,8 @@ void UIScene_LoadMenu::StartGameFromSave(UIScene_LoadMenu* pClass, DWORD dwLocal
NetworkGameInitData *param = new NetworkGameInitData();
param->seed = pClass->m_seed;
- param->saveData = NULL;
+ param->saveData = NULL;
+ param->levelGen = pClass->m_levelGen;
param->texturePackId = pClass->m_MoreOptionsParams.dwTexturePack;
param->levelName = pClass->m_levelName;
@@ -1478,12 +1604,26 @@ void UIScene_LoadMenu::StartGameFromSave(UIScene_LoadMenu* pClass, DWORD dwLocal
app.SetGameHostOption(eGameHostOption_HostCanChangeHunger,pClass->m_MoreOptionsParams.bHostPrivileges);
app.SetGameHostOption(eGameHostOption_HostCanBeInvisible,pClass->m_MoreOptionsParams.bHostPrivileges );
+ app.SetGameHostOption(eGameHostOption_MobGriefing, pClass->m_MoreOptionsParams.bMobGriefing);
+ app.SetGameHostOption(eGameHostOption_KeepInventory, pClass->m_MoreOptionsParams.bKeepInventory);
+ app.SetGameHostOption(eGameHostOption_DoMobSpawning, pClass->m_MoreOptionsParams.bDoMobSpawning);
+ app.SetGameHostOption(eGameHostOption_DoMobLoot, pClass->m_MoreOptionsParams.bDoMobLoot);
+ app.SetGameHostOption(eGameHostOption_DoTileDrops, pClass->m_MoreOptionsParams.bDoTileDrops);
+ app.SetGameHostOption(eGameHostOption_NaturalRegeneration, pClass->m_MoreOptionsParams.bNaturalRegeneration);
+ app.SetGameHostOption(eGameHostOption_DoDaylightCycle, pClass->m_MoreOptionsParams.bDoDaylightCycle);
+
+#ifdef _LARGE_WORLDS
+ app.SetGameHostOption(eGameHostOption_WorldSize, pClass->m_MoreOptionsParams.worldSize+1 ); // 0 is GAME_HOST_OPTION_WORLDSIZE_UNKNOWN
+#endif
+// app.SetGameNewWorldSize(64, true );
+// app.SetGameNewWorldSize(0, false );
+
// flag if the user wants to reset the Nether to force a Fortress with netherwart etc.
app.SetResetNether((pClass->m_MoreOptionsParams.bResetNether==TRUE)?true:false);
// clear out the app's terrain features list
app.ClearTerrainFeaturePosition();
- app.SetGameHostOption(eGameHostOption_GameType,pClass->m_bGameModeSurvival?GameType::SURVIVAL->getId():GameType::CREATIVE->getId() );
+ app.SetGameHostOption(eGameHostOption_GameType,pClass->m_iGameModeId );
g_NetworkManager.HostGame(dwLocalUsersMask,isClientSide,isPrivate,MINECRAFT_NET_MAX_PLAYERS,0);
@@ -1519,7 +1659,7 @@ void UIScene_LoadMenu::checkStateAndStartGame()
uiIDA[0]=IDS_DONT_RESET_NETHER;
uiIDA[1]=IDS_RESET_NETHER;
- ui.RequestMessageBox(IDS_RESETNETHER_TITLE, IDS_RESETNETHER_TEXT, uiIDA, 2, m_iPad,&UIScene_LoadMenu::CheckResetNetherReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_RESETNETHER_TITLE, IDS_RESETNETHER_TEXT, uiIDA, 2, m_iPad,&UIScene_LoadMenu::CheckResetNetherReturned,this);
}
else
{
@@ -1527,113 +1667,6 @@ void UIScene_LoadMenu::checkStateAndStartGame()
}
}
-void UIScene_LoadMenu::LoadLevelGen(LevelGenerationOptions *levelGen)
-{
- bool isClientSide = ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()) && m_MoreOptionsParams.bOnlineGame;
-
- // 4J Stu - If we only have one controller connected, then don't show the sign-in UI again
- DWORD connectedControllers = 0;
- for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
- {
- if( InputManager.IsPadConnected(i) || ProfileManager.IsSignedIn(i) ) ++connectedControllers;
- }
-
- if(!isClientSide || connectedControllers == 1 || !RenderManager.IsHiDef())
- {
-
- // Check if user-created content is allowed, as we cannot play multiplayer if it's not
- bool noUGC = false;
- BOOL pccAllowed = TRUE;
- BOOL pccFriendsAllowed = TRUE;
-
- ProfileManager.AllowedPlayerCreatedContent(ProfileManager.GetPrimaryPad(),false,&pccAllowed,&pccFriendsAllowed);
- if(!pccAllowed && !pccFriendsAllowed) noUGC = true;
-
- if(isClientSide && noUGC )
- {
- m_bIgnoreInput=false;
- UINT uiIDA[1];
- uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_FAILED_TO_CREATE_GAME_TITLE, IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
- return;
- }
-
- }
-
- DWORD dwLocalUsersMask = 0;
-
- dwLocalUsersMask |= CGameNetworkManager::GetLocalPlayerMask(ProfileManager.GetPrimaryPad());
- // Load data from disc
- //File saveFile( L"Tutorial\\Tutorial" );
- //LoadSaveFromDisk(&saveFile);
-
- StorageManager.ResetSaveData();
- // Make our next save default to the name of the level
- StorageManager.SetSaveTitle(levelGen->getDefaultSaveName().c_str());
-
- bool isPrivate = (app.GetGameSettings(m_iPad,eGameSetting_InviteOnly)>0)?true:false;
-
- g_NetworkManager.HostGame(dwLocalUsersMask,isClientSide,isPrivate,MINECRAFT_NET_MAX_PLAYERS,0);
-
- NetworkGameInitData *param = new NetworkGameInitData();
- param->seed = 0;
- param->saveData = NULL;
- param->levelGen = levelGen;
-
- if(levelGen->requiresTexturePack())
- {
- param->texturePackId = levelGen->getRequiredTexturePackId();
-
- Minecraft *pMinecraft = Minecraft::GetInstance();
- pMinecraft->skins->selectTexturePackById(param->texturePackId);
- //pMinecraft->skins->updateUI();
- }
-
-
- app.SetGameHostOption(eGameHostOption_Difficulty,Minecraft::GetInstance()->options->difficulty);
- app.SetGameHostOption(eGameHostOption_FriendsOfFriends,app.GetGameSettings(m_iPad,eGameSetting_FriendsOfFriends));
- app.SetGameHostOption(eGameHostOption_Gamertags,app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible));
-
- app.SetGameHostOption(eGameHostOption_BedrockFog,app.GetGameSettings(m_iPad,eGameSetting_BedrockFog)?1:0);
-
- app.SetGameHostOption(eGameHostOption_PvP,m_MoreOptionsParams.bPVP);
- app.SetGameHostOption(eGameHostOption_TrustPlayers,m_MoreOptionsParams.bTrust );
- app.SetGameHostOption(eGameHostOption_FireSpreads,m_MoreOptionsParams.bFireSpreads );
- app.SetGameHostOption(eGameHostOption_TNT,m_MoreOptionsParams.bTNT );
- app.SetGameHostOption(eGameHostOption_HostCanFly,m_MoreOptionsParams.bHostPrivileges);
- app.SetGameHostOption(eGameHostOption_HostCanChangeHunger,m_MoreOptionsParams.bHostPrivileges);
- app.SetGameHostOption(eGameHostOption_HostCanBeInvisible,m_MoreOptionsParams.bHostPrivileges );
-
- // flag if the user wants to reset the Nether to force a Fortress with netherwart etc.
- app.SetResetNether((m_MoreOptionsParams.bResetNether==TRUE)?true:false);
- // clear out the app's terrain features list
- app.ClearTerrainFeaturePosition();
-
- app.SetGameHostOption(eGameHostOption_GameType,m_bGameModeSurvival?GameType::SURVIVAL->getId():GameType::CREATIVE->getId() );
-
- param->settings = app.GetGameHostOption( eGameHostOption_All );
-
-#ifndef _XBOX
- g_NetworkManager.FakeLocalPlayerJoined();
-#endif
-
- LoadingInputParams *loadingParams = new LoadingInputParams();
- loadingParams->func = &CGameNetworkManager::RunNetworkGameThreadProc;
- loadingParams->lpParam = (LPVOID)param;
-
- // Reset the autosave time
- app.SetAutosaveTimerTime();
-
- UIFullscreenProgressCompletionData *completionData = new UIFullscreenProgressCompletionData();
- completionData->bShowBackground=TRUE;
- completionData->bShowLogo=TRUE;
- completionData->type = e_ProgressCompletion_CloseAllPlayersUIScenes;
- completionData->iPad = DEFAULT_XUI_MENU_USER;
- loadingParams->completionData = completionData;
-
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_FullscreenProgress, loadingParams);
-}
-
int UIScene_LoadMenu::StartGame_SignInReturned(void *pParam,bool bContinue, int iPad)
{
UIScene_LoadMenu* pClass = (UIScene_LoadMenu*)pParam;
@@ -1681,7 +1714,7 @@ int UIScene_LoadMenu::StartGame_SignInReturned(void *pParam,bool bContinue, int
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive if the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive);
}
else
{
@@ -1689,14 +1722,14 @@ int UIScene_LoadMenu::StartGame_SignInReturned(void *pParam,bool bContinue, int
UINT uiIDA[2];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1] = IDS_CANCEL;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_LoadMenu::MustSignInReturnedPSN, pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPadNotSignedInLive, &UIScene_LoadMenu::MustSignInReturnedPSN, pClass);
}
return 0;
#else
pClass->m_bIgnoreInput=false;
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
return 0;
#endif
}
@@ -1717,7 +1750,7 @@ int UIScene_LoadMenu::StartGame_SignInReturned(void *pParam,bool bContinue, int
pClass->setVisible( true );
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_FAILED_TO_CREATE_GAME_TITLE, IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_FAILED_TO_CREATE_GAME_TITLE, IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE, uiIDA,1,ProfileManager.GetPrimaryPad());
}
else
{
@@ -1725,7 +1758,7 @@ int UIScene_LoadMenu::StartGame_SignInReturned(void *pParam,bool bContinue, int
pClass->setVisible( true );
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage( IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE, IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT, uiIDA,1,ProfileManager.GetPrimaryPad());
}
}
else
@@ -1765,13 +1798,7 @@ void UIScene_LoadMenu::handleGainFocus(bool navBack)
{
if(navBack)
{
-
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
- if(getSceneResolution() == eSceneResolution_1080)
- {
- m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame == TRUE);
- }
-#endif
+ m_checkboxOnline.setChecked(m_MoreOptionsParams.bOnlineGame == TRUE);
}
}
diff --git a/Minecraft.Client/Common/UI/UIScene_LoadMenu.h b/Minecraft.Client/Common/UI/UIScene_LoadMenu.h
index e245e3be..085cb67f 100644
--- a/Minecraft.Client/Common/UI/UIScene_LoadMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_LoadMenu.h
@@ -22,10 +22,8 @@ private:
UIControl_Button m_buttonGamemode, m_buttonMoreOptions, m_buttonLoadWorld;
UIControl_Slider m_sliderDifficulty;
UIControl_BitmapIcon m_bitmapIcon;
-
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
+
UIControl_CheckBox m_checkboxOnline;
-#endif
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(IUIScene_StartGame)
UI_MAP_ELEMENT( m_controlMainPanel, "MainPanel" )
@@ -35,10 +33,7 @@ private:
UI_MAP_ELEMENT( m_labelSeed, "Seed")
UI_MAP_ELEMENT( m_texturePackList, "TexturePackSelector")
UI_MAP_ELEMENT( m_buttonGamemode, "GameModeToggle")
-
-#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64
UI_MAP_ELEMENT( m_checkboxOnline, "CheckboxOnline")
-#endif
UI_MAP_ELEMENT( m_buttonMoreOptions, "MoreOptions")
UI_MAP_ELEMENT( m_buttonLoadWorld, "LoadSettings")
UI_MAP_ELEMENT( m_sliderDifficulty, "Difficulty")
@@ -51,8 +46,10 @@ private:
int m_iSaveGameInfoIndex;
int m_CurrentDifficulty;
- bool m_bGameModeSurvival;
+ bool m_bGameModeCreative;
+ int m_iGameModeId;
bool m_bHasBeenInCreative;
+ bool m_bIsSaveOwner;
bool m_bRetrievingSaveThumbnail;
bool m_bSaveThumbnailReady;
bool m_bMultiplayerAllowed;
@@ -105,7 +102,6 @@ protected:
private:
void StartSharedLaunchFlow();
virtual void checkStateAndStartGame();
- void LoadLevelGen(LevelGenerationOptions *levelGen);
void LaunchGame(void);
#ifdef _DURANGO
diff --git a/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.cpp
index e3749dcb..a5cb9aa2 100644
--- a/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.cpp
@@ -8,7 +8,6 @@
#include "..\..\..\Minecraft.World\net.minecraft.world.level.chunk.storage.h"
#include "..\..\..\Minecraft.World\ConsoleSaveFile.h"
#include "..\..\..\Minecraft.World\ConsoleSaveFileOriginal.h"
-#include "..\..\..\Minecraft.World\ConsoleSaveFileSplit.h"
#include "..\..\ProgressRenderer.h"
#include "..\..\MinecraftServer.h"
#include "..\..\TexturePackRepository.h"
@@ -17,6 +16,7 @@
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
#include "Common\Network\Sony\SonyHttp.h"
#include "Common\Network\Sony\SonyRemoteStorage.h"
+#include "DLCTexturePack.h"
#endif
#if defined(__ORBIS__) || defined(__PSVITA__)
#include <ces.h>
@@ -121,6 +121,7 @@ static wstring ReadLevelNameFromSaveFile(const wstring& filePath)
#ifdef SONY_REMOTE_STORAGE_DOWNLOAD
unsigned long UIScene_LoadOrJoinMenu::m_ulFileSize=0L;
wstring UIScene_LoadOrJoinMenu::m_wstrStageText=L"";
+bool UIScene_LoadOrJoinMenu::m_bSaveTransferRunning = false;
#endif
@@ -195,9 +196,9 @@ UIScene_LoadOrJoinMenu::UIScene_LoadOrJoinMenu(int iPad, void *initData, UILayer
m_buttonListSaves.init(eControl_SavesList);
m_buttonListGames.init(eControl_GamesList);
- m_labelSavesListTitle.init( app.GetString(IDS_START_GAME) );
- m_labelJoinListTitle.init( app.GetString(IDS_JOIN_GAME) );
- m_labelNoGames.init( app.GetString(IDS_NO_GAMES_FOUND) );
+ m_labelSavesListTitle.init( IDS_START_GAME );
+ m_labelJoinListTitle.init( IDS_JOIN_GAME );
+ m_labelNoGames.init( IDS_NO_GAMES_FOUND );
m_labelNoGames.setVisible( false );
m_controlSavesTimer.setVisible( true );
m_controlJoinTimer.setVisible( true );
@@ -375,13 +376,8 @@ UIScene_LoadOrJoinMenu::~UIScene_LoadOrJoinMenu()
g_NetworkManager.SetSessionsUpdatedCallback( NULL, NULL );
app.SetLiveLinkRequired( false );
- if(m_currentSessions)
- {
- for(AUTO_VAR(it, m_currentSessions->begin()); it < m_currentSessions->end(); ++it)
- {
- delete (*it);
- }
- }
+ delete m_currentSessions;
+ m_currentSessions = NULL;
#if TO_BE_IMPLEMENTED
// Reset the background downloading, in case we changed it by attempting to download a texture pack
@@ -400,6 +396,14 @@ UIScene_LoadOrJoinMenu::~UIScene_LoadOrJoinMenu()
void UIScene_LoadOrJoinMenu::updateTooltips()
{
+#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
+ if(m_eSaveTransferState!=eSaveTransfer_Idle)
+ {
+ // we're in a full screen progress for the save download here, so don't change the tooltips
+ return;
+ }
+#endif
+
// update the tooltips
// if the saves list has focus, then we should show the Delete Save tooltip
// if the games list has focus, then we should the the View Gamercard tooltip
@@ -640,6 +644,8 @@ void UIScene_LoadOrJoinMenu::tick()
{
UIScene::tick();
+
+
#if (defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined _WINDOWS64 || defined __PSVITA__)
if(m_bExitScene) // navigate forward or back
{
@@ -652,6 +658,11 @@ void UIScene_LoadOrJoinMenu::tick()
// Stop loading thumbnails if we navigate forwards
if(hasFocus(m_iPad))
{
+#ifdef SONY_REMOTE_STORAGE_DOWNLOAD
+ // if the loadOrJoin menu has focus again, we can clear the saveTransfer flag now. Added so we can delay the ehternet disconnect till it's cleaned up
+ if(m_eSaveTransferState == eSaveTransfer_Idle)
+ m_bSaveTransferRunning = false;
+#endif
#if defined(_XBOX_ONE) || defined(__ORBIS__)
if(m_bUpdateSaveSize)
{
@@ -917,7 +928,7 @@ void UIScene_LoadOrJoinMenu::tick()
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_CONNECTION_FAILED, IDS_IN_PARTY_SESSION_FULL, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_CONNECTION_FAILED, IDS_IN_PARTY_SESSION_FULL, uiIDA,1,ProfileManager.GetPrimaryPad());
}
#endif
@@ -1038,7 +1049,7 @@ void UIScene_LoadOrJoinMenu::AddDefaultButtons()
m_iMashUpButtonsC=0;
m_generators.clear();
- m_buttonListSaves.addItem(app.GetString(IDS_CREATE_NEW_WORLD));
+ m_buttonListSaves.addItem(app.GetString(IDS_CREATE_NEW_WORLD));
m_iDefaultButtonsC++;
int i = 0;
@@ -1061,8 +1072,10 @@ void UIScene_LoadOrJoinMenu::AddDefaultButtons()
}
}
+ // 4J-JEV: For debug. Ignore worlds with no name.
+ LPCWSTR wstr = levelGen->getWorldName();
+ m_buttonListSaves.addItem( wstr );
m_generators.push_back(levelGen);
- m_buttonListSaves.addItem(levelGen->getWorldName());
if(uiTexturePackID!=0)
{
@@ -1147,7 +1160,7 @@ void UIScene_LoadOrJoinMenu::handleInput(int iPad, int key, bool repeat, bool pr
{
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
break;
}
@@ -1160,7 +1173,7 @@ void UIScene_LoadOrJoinMenu::handleInput(int iPad, int key, bool repeat, bool pr
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(), &UIScene_LoadOrJoinMenu::MustSignInReturnedPSN, this, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(), &UIScene_LoadOrJoinMenu::MustSignInReturnedPSN, this);
}
else
{
@@ -1203,7 +1216,7 @@ void UIScene_LoadOrJoinMenu::handleInput(int iPad, int key, bool repeat, bool pr
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,this, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,this);
}
else
{
@@ -1225,7 +1238,7 @@ void UIScene_LoadOrJoinMenu::handleInput(int iPad, int key, bool repeat, bool pr
numOptions = 4;
uiIDA[3]=IDS_COPYSAVE;
#endif
- ui.RequestMessageBox(IDS_TOOLTIPS_SAVEOPTIONS, IDS_TEXT_SAVEOPTIONS, uiIDA, numOptions, iPad,&UIScene_LoadOrJoinMenu::SaveOptionsDialogReturned,this, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TOOLTIPS_SAVEOPTIONS, IDS_TEXT_SAVEOPTIONS, uiIDA, numOptions, iPad,&UIScene_LoadOrJoinMenu::SaveOptionsDialogReturned,this);
}
else
{
@@ -1234,7 +1247,7 @@ void UIScene_LoadOrJoinMenu::handleInput(int iPad, int key, bool repeat, bool pr
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2,iPad,&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,this, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2,iPad,&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,this);
}
}
ui.PlayUISFX(eSFX_Press);
@@ -1435,7 +1448,7 @@ void UIScene_LoadOrJoinMenu::handlePress(F64 controlId, F64 childId)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_CORRUPT_OR_DAMAGED_SAVE_TITLE, IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,this, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_CORRUPT_OR_DAMAGED_SAVE_TITLE, IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,this);
}
else
@@ -1466,7 +1479,7 @@ void UIScene_LoadOrJoinMenu::handlePress(F64 controlId, F64 childId)
uiIDA[1]=IDS_CONFIRM_CANCEL;
m_loadMenuInitData = params;
- ui.RequestMessageBox(IDS_LOAD_SAVED_WORLD, IDS_CONFIRM_SYNC_REQUIRED, uiIDA, 2, ProfileManager.GetPrimaryPad(),&NeedSyncMessageReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_LOAD_SAVED_WORLD, IDS_CONFIRM_SYNC_REQUIRED, uiIDA, 2, ProfileManager.GetPrimaryPad(),&NeedSyncMessageReturned,this);
}
else
#endif
@@ -1553,7 +1566,7 @@ void UIScene_LoadOrJoinMenu::CheckAndJoinGame(int gameIndex)
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
// Not allowed to play online
- ui.RequestMessageBox(IDS_ONLINE_GAME, IDS_CHAT_RESTRICTION_UGC, uiIDA, 1, m_iPad,NULL,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_ONLINE_GAME, IDS_CHAT_RESTRICTION_UGC, uiIDA, 1, m_iPad,NULL,this);
#else
// Not allowed to play online
ProfileManager.ShowSystemMessage( SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_PSN_CHAT_RESTRICTION, 0 );
@@ -1582,16 +1595,26 @@ void UIScene_LoadOrJoinMenu::CheckAndJoinGame(int gameIndex)
{
m_bIgnoreInput = false;
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive if the npAvailability isn't SCE_OK
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPadNotSignedInLive);
}
else
{
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,iPadNotSignedInLive, &UIScene_LoadOrJoinMenu::MustSignInReturnedPSN, this, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA,1,iPadNotSignedInLive, &UIScene_LoadOrJoinMenu::MustSignInReturnedPSN, this);
}
return;
}
else if(bPlayStationPlus==false)
{
+
+ if(ProfileManager.RequestingPlaystationPlus(iPadWithNoPlaystationPlus))
+ {
+ // MGH - added this so we don't try and upsell when we don't know if the player has PS Plus yet (if it can't connect to the PS Plus server).
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_OK;
+ ui.RequestAlertMessage(IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, ProfileManager.GetPrimaryPad(), NULL, NULL);
+ return;
+ }
+
// PS Plus upsell
// 4J-PB - we're not allowed to show the text Playstation Plus - have to call the upsell all the time!
// upsell psplus
@@ -1656,10 +1679,19 @@ void UIScene_LoadOrJoinMenu::CheckAndJoinGame(int gameIndex)
// Give the player a warning about the texture pack missing
- ui.RequestMessageBox(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, m_iPad,&UIScene_LoadOrJoinMenu::TexturePackDialogReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, m_iPad,&UIScene_LoadOrJoinMenu::TexturePackDialogReturned,this);
return;
}
+
+#ifdef __PSVITA__
+ if(CGameNetworkManager::usingAdhocMode() && !SQRNetworkManager_AdHoc_Vita::GetAdhocStatus())
+ {
+ // not connected to adhoc anymore, must have connected back to PSN to buy texture pack so sign in again
+ SQRNetworkManager_AdHoc_Vita::AttemptAdhocSignIn(&UIScene_LoadOrJoinMenu::SignInAdhocReturned, this);
+ return;
+ }
+#endif
}
m_controlJoinTimer.setVisible( false );
@@ -2267,7 +2299,7 @@ int UIScene_LoadOrJoinMenu::SaveOptionsDialogReturned(void *pParam,int iPad,C4JS
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,pClass, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::DeleteSaveDialogReturned,pClass);
}
break;
@@ -2278,7 +2310,7 @@ int UIScene_LoadOrJoinMenu::SaveOptionsDialogReturned(void *pParam,int iPad,C4JS
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_TOOLTIPS_SAVETRANSFER_UPLOAD, IDS_SAVE_TRANSFER_TEXT, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::SaveTransferDialogReturned,pClass, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TOOLTIPS_SAVETRANSFER_UPLOAD, IDS_SAVE_TRANSFER_TEXT, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::SaveTransferDialogReturned,pClass);
}
break;
#endif // SONY_REMOTE_STORAGE_UPLOAD
@@ -2289,7 +2321,7 @@ int UIScene_LoadOrJoinMenu::SaveOptionsDialogReturned(void *pParam,int iPad,C4JS
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_COPYSAVE, IDS_TEXT_COPY_SAVE, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::CopySaveDialogReturned,pClass, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_COPYSAVE, IDS_TEXT_COPY_SAVE, uiIDA, 2, iPad,&UIScene_LoadOrJoinMenu::CopySaveDialogReturned,pClass);
}
break;
#endif
@@ -2306,6 +2338,91 @@ int UIScene_LoadOrJoinMenu::SaveOptionsDialogReturned(void *pParam,int iPad,C4JS
return 0;
}
+
+#if defined (__PSVITA__)
+
+int UIScene_LoadOrJoinMenu::SignInAdhocReturned(void *pParam,bool bContinue, int iPad)
+{
+ UIScene_LoadOrJoinMenu* pClass = (UIScene_LoadOrJoinMenu*)pParam;
+ pClass->m_bIgnoreInput = false;
+ return 0;
+
+}
+
+
+
+int UIScene_LoadOrJoinMenu::MustSignInTexturePack(void *pParam,int iPad,C4JStorage::EMessageResult result)
+{
+ UIScene_LoadOrJoinMenu* pClass = (UIScene_LoadOrJoinMenu*)pParam;
+
+ if(result==C4JStorage::EMessage_ResultAccept)
+ {
+ SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_LoadOrJoinMenu::MustSignInReturnedTexturePack, pClass);
+ }
+ else
+ {
+ pClass->m_bIgnoreInput = false;
+ }
+
+ return 0;
+}
+
+
+int UIScene_LoadOrJoinMenu::MustSignInReturnedTexturePack(void *pParam,bool bContinue, int iPad)
+{
+ UIScene_LoadOrJoinMenu* pClass = (UIScene_LoadOrJoinMenu*)pParam;
+
+ int commerceState = app.GetCommerceState();
+ while( commerceState != CConsoleMinecraftApp::eCommerce_State_Offline &&
+ commerceState != CConsoleMinecraftApp::eCommerce_State_Online &&
+ commerceState != CConsoleMinecraftApp::eCommerce_State_Error)
+ {
+ Sleep(10);
+ commerceState = app.GetCommerceState();
+ }
+
+ if(bContinue==true)
+ {
+ SONYDLC *pSONYDLCInfo=app.GetSONYDLCInfo(pClass->m_initData->selectedSession->data.texturePackParentId);
+ if(pSONYDLCInfo!=NULL)
+ {
+ char chName[42];
+ char chKeyName[20];
+ char chSkuID[SCE_NP_COMMERCE2_SKU_ID_LEN];
+
+ memset(chSkuID,0,SCE_NP_COMMERCE2_SKU_ID_LEN);
+ // we have to retrieve the skuid from the store info, it can't be hardcoded since Sony may change it.
+ // So we assume the first sku for the product is the one we want
+ // MGH - keyname in the DLC file is 16 chars long, but there's no space for a NULL terminating char
+ memset(chKeyName, 0, sizeof(chKeyName));
+ strncpy(chKeyName, pSONYDLCInfo->chDLCKeyname, 16);
+
+#ifdef __ORBIS__
+ strcpy(chName, chKeyName);
+#else
+ sprintf(chName,"%s-%s",app.GetCommerceCategory(),chKeyName);
+#endif
+ app.GetDLCSkuIDFromProductList(chName,chSkuID);
+ // 4J-PB - need to check for an empty store
+ if(app.CheckForEmptyStore(iPad)==false)
+ {
+ if(app.DLCAlreadyPurchased(chSkuID))
+ {
+ app.DownloadAlreadyPurchased(chSkuID);
+ }
+ else
+ {
+ app.Checkout(chSkuID);
+ }
+ }
+ }
+ }
+ pClass->m_bIgnoreInput = false;
+ return 0;
+}
+
+#endif
+
int UIScene_LoadOrJoinMenu::TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
UIScene_LoadOrJoinMenu *pClass = (UIScene_LoadOrJoinMenu *)pParam;
@@ -2315,24 +2432,53 @@ int UIScene_LoadOrJoinMenu::TexturePackDialogReturned(void *pParam,int iPad,C4JS
{
// we need to enable background downloading for the DLC
XBackgroundDownloadSetMode(XBACKGROUND_DOWNLOAD_MODE_ALWAYS_ALLOW);
-#if TO_BE_IMPLEMENTED
- ULONGLONG ullOfferID_Full;
- ULONGLONG ullIndexA[1];
- app.GetDLCFullOfferIDForPackID(pClass->m_initData->selectedSession->data.texturePackParentId,&ullOfferID_Full);
+#if defined __PSVITA__ || defined __PS3__ || defined __ORBIS__
+#ifdef __PSVITA__
+ if(!ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()) && CGameNetworkManager::usingAdhocMode())
+ {
+ // get them to sign in to online
+ UINT uiIDA[2];
+ uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
+ uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
+ ui.RequestAlertMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_LoadOrJoinMenu::MustSignInTexturePack,pClass);
+ return;
+ }
+#endif
- if( result==C4JStorage::EMessage_ResultAccept ) // Full version
- {
- ullIndexA[0]=ullOfferID_Full;
- StorageManager.InstallOffer(1,ullIndexA,NULL,NULL);
+ SONYDLC *pSONYDLCInfo=app.GetSONYDLCInfo(pClass->m_initData->selectedSession->data.texturePackParentId);
+ if(pSONYDLCInfo!=NULL)
+ {
+ char chName[42];
+ char chKeyName[20];
+ char chSkuID[SCE_NP_COMMERCE2_SKU_ID_LEN];
- }
- else // trial version
- {
- DLC_INFO *pDLCInfo=app.GetDLCInfoForFullOfferID(ullOfferID_Full);
- ullIndexA[0]=pDLCInfo->ullOfferID_Trial;
- StorageManager.InstallOffer(1,ullIndexA,NULL,NULL);
- }
+ memset(chSkuID,0,SCE_NP_COMMERCE2_SKU_ID_LEN);
+ // we have to retrieve the skuid from the store info, it can't be hardcoded since Sony may change it.
+ // So we assume the first sku for the product is the one we want
+ // MGH - keyname in the DLC file is 16 chars long, but there's no space for a NULL terminating char
+ memset(chKeyName, 0, sizeof(chKeyName));
+ strncpy(chKeyName, pSONYDLCInfo->chDLCKeyname, 16);
+
+#ifdef __ORBIS__
+ strcpy(chName, chKeyName);
+#else
+ sprintf(chName,"%s-%s",app.GetCommerceCategory(),chKeyName);
+#endif
+ app.GetDLCSkuIDFromProductList(chName,chSkuID);
+ // 4J-PB - need to check for an empty store
+ if(app.CheckForEmptyStore(iPad)==false)
+ {
+ if(app.DLCAlreadyPurchased(chSkuID))
+ {
+ app.DownloadAlreadyPurchased(chSkuID);
+ }
+ else
+ {
+ app.Checkout(chSkuID);
+ }
+ }
+ }
#endif
@@ -2350,7 +2496,7 @@ int UIScene_LoadOrJoinMenu::TexturePackDialogReturned(void *pParam,int iPad,C4JS
{
// 4J-JEV: Fix for XB1: #165863 - XR-074: Compliance: With no active network connection user is unable to convert from Trial to Full texture pack and is not messaged why.
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad);
}
}
#endif
@@ -2398,8 +2544,7 @@ int UIScene_LoadOrJoinMenu::PSN_SignInReturned(void *pParam,bool bContinue, int
int ret = sceNpBasicRecvMessageCustom(SCE_NP_BASIC_MESSAGE_MAIN_TYPE_INVITE, SCE_NP_BASIC_RECV_MESSAGE_OPTIONS_INCLUDE_BOOTABLE, SYS_MEMORY_CONTAINER_ID_INVALID);
app.DebugPrintf("sceNpBasicRecvMessageCustom return %d ( %08x )\n", ret, ret);
#elif defined __PSVITA__
- // TO BE IMPLEMENTED FOR VITA
- PSVITA_STUBBED;
+ SQRNetworkManager_Vita::RecvInviteGUI();
#else
SQRNetworkManager_Orbis::RecvInviteGUI();
#endif
@@ -2519,9 +2664,14 @@ bool g_bForceVitaSaveWipe = false;
int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter )
{
+ m_bSaveTransferRunning = true;
+#ifdef __PS3__
+ StorageManager.SetSaveTransferInProgress(true);
+#endif
Compression::UseDefaultThreadStorage();
UIScene_LoadOrJoinMenu* pClass = (UIScene_LoadOrJoinMenu *) lpParameter;
pClass->m_saveTransferDownloadCancelled = false;
+ m_bSaveTransferRunning = true;
bool bAbortCalled = false;
Minecraft *pMinecraft=Minecraft::GetInstance();
bool bSaveFileCreated = false;
@@ -2558,14 +2708,24 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
{
if(app.getRemoteStorage()->saveIsAvailable())
{
- pClass->m_eSaveTransferState = eSaveTransfer_CreateDummyFile;
+ if(app.getRemoteStorage()->saveVersionSupported())
+ {
+ pClass->m_eSaveTransferState = eSaveTransfer_CreateDummyFile;
+ }
+ else
+ {
+ // must be a newer version of the save in the cloud that we don't support yet
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_CONFIRM_OK;
+ ui.RequestAlertMessage(IDS_TOOLTIPS_SAVETRANSFER_DOWNLOAD, IDS_SAVE_TRANSFER_WRONG_VERSION, uiIDA, 1, ProfileManager.GetPrimaryPad(),RemoteSaveNotFoundCallback,pClass);
+ }
}
- else
+ else
{
// no save available, inform the user about the functionality
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TOOLTIPS_SAVETRANSFER_DOWNLOAD, IDS_SAVE_TRANSFER_NOT_AVAILABLE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),RemoteSaveNotFoundCallback,pClass, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_TOOLTIPS_SAVETRANSFER_DOWNLOAD, IDS_SAVE_TRANSFER_NOT_AVAILABLE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),RemoteSaveNotFoundCallback,pClass);
}
}
break;
@@ -2588,7 +2748,11 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
BYTE bTextMetadata[88];
ZeroMemory(bTextMetadata,88);
- int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, app.getRemoteStorage()->getSaveHostOptions(), app.getRemoteStorage()->getSaveTexturePack() );
+ unsigned int hostOptions = app.getRemoteStorage()->getSaveHostOptions();
+#ifdef __ORBIS__
+ app.SetGameHostOption(hostOptions, eGameHostOption_WorldSize, e_worldSize_Classic); // force the classic world size on, otherwise it's unknown and we can't expand
+#endif
+ int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, hostOptions, app.getRemoteStorage()->getSaveTexturePack() );
// set the icon and save image
StorageManager.SetSaveImages(pbThumbnailData,dwThumbnailDataSize,pbDataSaveImage,dwDataSizeSaveImage,bTextMetadata,iTextMetadataBytes);
@@ -2748,7 +2912,9 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
BYTE bTextMetadata[88];
ZeroMemory(bTextMetadata,88);
- int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, app.getRemoteStorage()->getSaveHostOptions(), app.getRemoteStorage()->getSaveTexturePack() );
+ unsigned int remoteHostOptions = app.getRemoteStorage()->getSaveHostOptions();
+ app.SetGameHostOption(eGameHostOption_All, remoteHostOptions );
+ int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, app.getRemoteStorage()->getSaveSeed(), true, remoteHostOptions, app.getRemoteStorage()->getSaveTexturePack() );
// set the icon and save image
StorageManager.SetSaveImages(pbThumbnailData,dwThumbnailDataSize,pbDataSaveImage,dwDataSizeSaveImage,bTextMetadata,iTextMetadataBytes);
@@ -2810,7 +2976,7 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
app.getRemoteStorage()->waitForStorageManagerIdle(); // wait for everything to complete before we hand control back to the player
- ui.RequestMessageBox( IDS_TOOLTIPS_SAVETRANSFER_DOWNLOAD, IDS_SAVE_TRANSFER_DOWNLOADCOMPLETE, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveFinishedCallback,pClass, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_TOOLTIPS_SAVETRANSFER_DOWNLOAD, IDS_SAVE_TRANSFER_DOWNLOADCOMPLETE, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveFinishedCallback,pClass);
pClass->m_eSaveTransferState = eSaveTransfer_Finished;
}
break;
@@ -2851,20 +3017,20 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
}
else
{
- // delete the save file
- app.getRemoteStorage()->waitForStorageManagerIdle();
- C4JStorage::ESaveGameState eDeleteStatus = StorageManager.DeleteSaveData(&pSaveDetails->SaveInfoA[saveInfoIndex],UIScene_LoadOrJoinMenu::CrossSaveDeleteOnErrorReturned,pClass);
- if(eDeleteStatus == C4JStorage::ESaveGame_Delete)
- {
- pClass->m_eSaveTransferState = eSaveTransfer_ErrorDeletingSave;
- }
- else
- {
- app.DebugPrintf("StorageManager.DeleteSaveData failed!!\n");
- pClass->m_eSaveTransferState = eSaveTransfer_ErrorMesssage;
+ // delete the save file
+ app.getRemoteStorage()->waitForStorageManagerIdle();
+ C4JStorage::ESaveGameState eDeleteStatus = StorageManager.DeleteSaveData(&pSaveDetails->SaveInfoA[saveInfoIndex],UIScene_LoadOrJoinMenu::CrossSaveDeleteOnErrorReturned,pClass);
+ if(eDeleteStatus == C4JStorage::ESaveGame_Delete)
+ {
+ pClass->m_eSaveTransferState = eSaveTransfer_ErrorDeletingSave;
+ }
+ else
+ {
+ app.DebugPrintf("StorageManager.DeleteSaveData failed!!\n");
+ pClass->m_eSaveTransferState = eSaveTransfer_ErrorMesssage;
+ }
}
}
- }
else
{
pClass->m_eSaveTransferState = eSaveTransfer_ErrorMesssage;
@@ -2885,7 +3051,25 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_TOOLTIPS_SAVETRANSFER_DOWNLOAD, IDS_SAVE_TRANSFER_DOWNLOADFAILED, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveFinishedCallback,pClass, app.GetStringTable());
+ UINT errorMessage = IDS_SAVE_TRANSFER_DOWNLOADFAILED;
+ if(!ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()))
+ {
+ errorMessage = IDS_ERROR_NETWORK; // show "A network error has occurred."
+#ifdef __ORBIS__
+ if(!ProfileManager.isSignedInPSN(ProfileManager.GetPrimaryPad()))
+ {
+ errorMessage = IDS_PRO_NOTONLINE_TEXT; // show "not signed into PSN"
+ }
+#endif
+#ifdef __VITA__
+ if(!ProfileManager.IsSignedInPSN(ProfileManager.GetPrimaryPad()))
+ {
+ errorMessage = IDS_PRO_NOTONLINE_TEXT; // show "not signed into PSN"
+ }
+#endif
+
+ }
+ ui.RequestErrorMessage( IDS_TOOLTIPS_SAVETRANSFER_DOWNLOAD, errorMessage, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveFinishedCallback,pClass);
pClass->m_eSaveTransferState = eSaveTransfer_Finished;
}
if(bSaveFileCreated) // save file has been created, then deleted.
@@ -2897,14 +3081,16 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc( LPVOID lpParameter
break;
case eSaveTransfer_Finished:
{
-
}
// waiting to dismiss the dialog
break;
}
Sleep(50);
}
-
+ m_bSaveTransferRunning = false;
+#ifdef __PS3__
+ StorageManager.SetSaveTransferInProgress(false);
+#endif
return 0;
}
@@ -3029,7 +3215,7 @@ int UIScene_LoadOrJoinMenu::UploadSonyCrossSaveThreadProc( LPVOID lpParameter )
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_TOOLTIPS_SAVETRANSFER_UPLOAD, IDS_SAVE_TRANSFER_UPLOADCOMPLETE, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveUploadFinishedCallback,pClass, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_TOOLTIPS_SAVETRANSFER_UPLOAD, IDS_SAVE_TRANSFER_UPLOADCOMPLETE, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveUploadFinishedCallback,pClass);
pClass->m_eSaveUploadState = esaveUpload_Finished;
}
break;
@@ -3046,7 +3232,7 @@ int UIScene_LoadOrJoinMenu::UploadSonyCrossSaveThreadProc( LPVOID lpParameter )
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_TOOLTIPS_SAVETRANSFER_UPLOAD, IDS_SAVE_TRANSFER_UPLOADFAILED, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveUploadFinishedCallback,pClass, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_TOOLTIPS_SAVETRANSFER_UPLOAD, IDS_SAVE_TRANSFER_UPLOADFAILED, uiIDA,1,ProfileManager.GetPrimaryPad(),CrossSaveUploadFinishedCallback,pClass);
pClass->m_eSaveUploadState = esaveUpload_Finished;
}
}
@@ -3069,7 +3255,7 @@ void UIScene_LoadOrJoinMenu::SaveUploadReturned(LPVOID lpParam, SonyRemoteStorag
if(pClass->m_saveTransferUploadCancelled)
{
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox( IDS_CANCEL_UPLOAD_TITLE, IDS_CANCEL_UPLOAD_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), CrossSaveUploadFinishedCallback, pClass, app.GetStringTable() );
+ ui.RequestErrorMessage( IDS_CANCEL_UPLOAD_TITLE, IDS_CANCEL_UPLOAD_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), CrossSaveUploadFinishedCallback, pClass );
pClass->m_eSaveUploadState=esaveUpload_Finished;
}
else
@@ -3196,8 +3382,18 @@ int UIScene_LoadOrJoinMenu::DownloadXbox360SaveThreadProc( LPVOID lpParameter )
switch(UIScene_LoadOrJoinMenu::s_eSaveTransferFile)
{
case eSaveTransferFile_Marker:
- UIScene_LoadOrJoinMenu::s_eSaveTransferFile = eSaveTransferFile_Metadata;
- RequestFileSize( pStateContainer, L"metadata" );
+ // MGH - the marker file now contains the save file version number
+ // if the version is higher than we handle, cancel the download.
+ if(UIScene_LoadOrJoinMenu::s_transferData[0] > SAVE_FILE_VERSION_NUMBER)
+ {
+ pMinecraft->progressRenderer->progressStage(IDS_SAVETRANSFER_NONE_FOUND);
+ pStateContainer->m_eSaveTransferState=C4JStorage::eSaveTransfer_Idle;
+ }
+ else
+ {
+ UIScene_LoadOrJoinMenu::s_eSaveTransferFile = eSaveTransferFile_Metadata;
+ RequestFileSize( pStateContainer, L"metadata" );
+ }
break;
case eSaveTransferFile_Metadata:
{
@@ -3220,7 +3416,28 @@ int UIScene_LoadOrJoinMenu::DownloadXbox360SaveThreadProc( LPVOID lpParameter )
byteArray ba(thumbnailSize);
dis.readFully(ba);
- StorageManager.SetSaveImages(ba.data, ba.length, NULL, 0, NULL, 0);
+
+
+ // retrieve the seed value from the image metadata, we need to change to host options, then set it back again
+ bool bHostOptionsRead = false;
+ unsigned int uiHostOptions = 0;
+ DWORD dwTexturePack;
+ __int64 seedVal;
+
+ char szSeed[50];
+ ZeroMemory(szSeed,50);
+ app.GetImageTextData(ba.data,ba.length,(unsigned char *)&szSeed,uiHostOptions,bHostOptionsRead,dwTexturePack);
+ sscanf_s(szSeed, "%I64d", &seedVal);
+
+ app.SetGameHostOption(uiHostOptions, eGameHostOption_WorldSize, e_worldSize_Classic); // force the classic world size on, otherwise it's unknown and we can't expand
+
+
+ BYTE bTextMetadata[88];
+ ZeroMemory(bTextMetadata,88);
+
+ int iTextMetadataBytes = app.CreateImageTextData(bTextMetadata, seedVal, true, uiHostOptions, dwTexturePack);
+ // set the icon and save image
+ StorageManager.SetSaveImages(ba.data, ba.length, NULL, 0, bTextMetadata, iTextMetadataBytes);
delete ba.data;
}
@@ -3610,12 +3827,12 @@ int UIScene_LoadOrJoinMenu::CopySaveDataReturned(LPVOID lpParam, bool success, C
if( stat == C4JStorage::ESaveGame_CopyCompleteFailLocalStorage )
{
ui.LeaveCallbackIdCriticalSection();
- ui.RequestMessageBox(IDS_COPYSAVE_FAILED_TITLE, IDS_COPYSAVE_FAILED_LOCAL, uiIDA, 1, ProfileManager.GetPrimaryPad(), CopySaveErrorDialogFinishedCallback, lpParam, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_COPYSAVE_FAILED_TITLE, IDS_COPYSAVE_FAILED_LOCAL, uiIDA, 1, ProfileManager.GetPrimaryPad(), CopySaveErrorDialogFinishedCallback, lpParam);
}
else if( stat == C4JStorage::ESaveGame_CopyCompleteFailQuota )
{
ui.LeaveCallbackIdCriticalSection();
- ui.RequestMessageBox(IDS_COPYSAVE_FAILED_TITLE, IDS_COPYSAVE_FAILED_QUOTA, uiIDA, 1, ProfileManager.GetPrimaryPad(), CopySaveErrorDialogFinishedCallback, lpParam, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_COPYSAVE_FAILED_TITLE, IDS_COPYSAVE_FAILED_QUOTA, uiIDA, 1, ProfileManager.GetPrimaryPad(), CopySaveErrorDialogFinishedCallback, lpParam);
}
else
{
diff --git a/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.h b/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.h
index 01d94b05..3599aa37 100644
--- a/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_LoadOrJoinMenu.h
@@ -153,6 +153,12 @@ public:
static int DeleteSaveDataReturned(LPVOID lpParam,bool bRes);
static int RenameSaveDataReturned(LPVOID lpParam,bool bRes);
static int KeyboardCompleteWorldNameCallback(LPVOID lpParam,bool bRes);
+#ifdef __PSVITA__
+ static int MustSignInTexturePack(void *pParam,int iPad,C4JStorage::EMessageResult result);
+ static int MustSignInReturnedTexturePack(void *pParam,bool bContinue, int iPad);
+ static int SignInAdhocReturned(void *pParam,bool bContinue, int iPad);
+#endif
+
protected:
void handlePress(F64 controlId, F64 childId);
void LoadLevelGen(LevelGenerationOptions *levelGen);
@@ -250,6 +256,7 @@ private:
eSaveTransferState m_eSaveTransferState;
static unsigned long m_ulFileSize;
static wstring m_wstrStageText;
+ static bool m_bSaveTransferRunning;
int m_iProgress;
char m_downloadedUniqueFilename[64];//SCE_SAVE_DATA_DIRNAME_DATA_MAXSIZE];
bool m_saveTransferDownloadCancelled;
@@ -265,6 +272,9 @@ private:
static ConsoleSaveFile* SonyCrossSaveConvert();
static void CancelSaveTransferCallback(LPVOID lpParam);
+public:
+ static bool isSaveTransferRunning() { return m_bSaveTransferRunning; }
+private:
#endif
#ifdef SONY_REMOTE_STORAGE_UPLOAD
diff --git a/Minecraft.Client/Common/UI/UIScene_MainMenu.cpp b/Minecraft.Client/Common/UI/UIScene_MainMenu.cpp
index c909fbc6..fe743adc 100644
--- a/Minecraft.Client/Common/UI/UIScene_MainMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_MainMenu.cpp
@@ -12,6 +12,8 @@
Random *UIScene_MainMenu::random = new Random();
+EUIScene UIScene_MainMenu::eNavigateWhenReady = (EUIScene) -1;
+
UIScene_MainMenu::UIScene_MainMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
{
#ifdef __ORBIS
@@ -31,31 +33,31 @@ UIScene_MainMenu::UIScene_MainMenu(int iPad, void *initData, UILayer *parentLaye
m_bIgnorePress=false;
- m_buttons[(int)eControl_PlayGame].init(app.GetString(IDS_PLAY_GAME),eControl_PlayGame);
+ m_buttons[(int)eControl_PlayGame].init(IDS_PLAY_GAME,eControl_PlayGame);
#ifdef _XBOX_ONE
- if(!ProfileManager.IsFullVersion()) m_buttons[(int)eControl_PlayGame].setLabel(app.GetString(IDS_PLAY_TRIAL_GAME));
+ if(!ProfileManager.IsFullVersion()) m_buttons[(int)eControl_PlayGame].setLabel(IDS_PLAY_TRIAL_GAME);
app.SetReachedMainMenu();
#endif
- m_buttons[(int)eControl_Leaderboards].init(app.GetString(IDS_LEADERBOARDS),eControl_Leaderboards);
- m_buttons[(int)eControl_Achievements].init(app.GetString(IDS_ACHIEVEMENTS),eControl_Achievements);
- m_buttons[(int)eControl_HelpAndOptions].init(app.GetString(IDS_HELP_AND_OPTIONS),eControl_HelpAndOptions);
+ m_buttons[(int)eControl_Leaderboards].init(IDS_LEADERBOARDS,eControl_Leaderboards);
+ m_buttons[(int)eControl_Achievements].init( (UIString)IDS_ACHIEVEMENTS,eControl_Achievements);
+ m_buttons[(int)eControl_HelpAndOptions].init(IDS_HELP_AND_OPTIONS,eControl_HelpAndOptions);
if(ProfileManager.IsFullVersion())
{
m_bTrialVersion=false;
- m_buttons[(int)eControl_UnlockOrDLC].init(app.GetString(IDS_DOWNLOADABLECONTENT),eControl_UnlockOrDLC);
+ m_buttons[(int)eControl_UnlockOrDLC].init(IDS_DOWNLOADABLECONTENT,eControl_UnlockOrDLC);
}
else
{
m_bTrialVersion=true;
- m_buttons[(int)eControl_UnlockOrDLC].init(app.GetString(IDS_UNLOCK_FULL_GAME),eControl_UnlockOrDLC);
+ m_buttons[(int)eControl_UnlockOrDLC].init(IDS_UNLOCK_FULL_GAME,eControl_UnlockOrDLC);
}
#ifndef _DURANGO
m_buttons[(int)eControl_Exit].init(app.GetString(IDS_EXIT_GAME),eControl_Exit);
#else
- m_buttons[(int)eControl_XboxHelp].init(app.GetString(IDS_XBOX_HELP_APP), eControl_XboxHelp);
+ m_buttons[(int)eControl_XboxHelp].init(IDS_XBOX_HELP_APP, eControl_XboxHelp);
#endif
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
@@ -151,6 +153,11 @@ void UIScene_MainMenu::handleGainFocus(bool navBack)
ui.ShowPlayerDisplayname(false);
m_bIgnorePress=false;
+ if (eNavigateWhenReady >= 0)
+ {
+ return;
+ }
+
// 4J-JEV: This needs to come before SetLockedProfile(-1) as it wipes the XbLive contexts.
if (!navBack)
{
@@ -175,7 +182,7 @@ void UIScene_MainMenu::handleGainFocus(bool navBack)
if(navBack && ProfileManager.IsFullVersion())
{
// Replace the Unlock Full Game with Downloadable Content
- m_buttons[(int)eControl_UnlockOrDLC].setLabel(app.GetString(IDS_DOWNLOADABLECONTENT));
+ m_buttons[(int)eControl_UnlockOrDLC].setLabel(IDS_DOWNLOADABLECONTENT);
}
#if TO_BE_IMPLEMENTED
@@ -223,11 +230,25 @@ wstring UIScene_MainMenu::getMoviePath()
return L"MainMenu";
}
+void UIScene_MainMenu::handleReload()
+{
+#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
+ // Not allowed to exit from a PS3 game from the game - have to use the PS button
+ removeControl( &m_buttons[(int)eControl_Exit], false );
+ // We don't have a way to display trophies/achievements, so remove the button
+ removeControl( &m_buttons[(int)eControl_Achievements], false );
+#endif
+#ifdef _DURANGO
+ // Allowed to not have achievements in the menu
+ removeControl( &m_buttons[(int)eControl_Achievements], false );
+#endif
+}
+
void UIScene_MainMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
{
//app.DebugPrintf("UIScene_DebugOverlay handling input for pad %d, key %d, down- %s, pressed- %s, released- %s\n", iPad, key, down?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE");
- if(m_bIgnorePress) return;
+ if ( m_bIgnorePress || (eNavigateWhenReady >= 0) ) return;
#if defined (__ORBIS__) || defined (__PSVITA__)
// ignore all players except player 0 - it's their profile that is currently being used
@@ -265,7 +286,7 @@ void UIScene_MainMenu::handleInput(int iPad, int key, bool repeat, bool pressed,
UINT uiIDA[2];
uiIDA[0]=IDS__NETWORK_PSN;
uiIDA[1]=IDS_NETWORK_ADHOC;
- ui.RequestMessageBox(IDS_SELECT_NETWORK_MODE_TITLE, IDS_SELECT_NETWORK_MODE_TEXT, uiIDA, 2, XUSER_INDEX_ANY, &UIScene_MainMenu::SelectNetworkModeReturned,this);
+ ui.RequestErrorMessage(IDS_SELECT_NETWORK_MODE_TITLE, IDS_SELECT_NETWORK_MODE_TEXT, uiIDA, 2, XUSER_INDEX_ANY, &UIScene_MainMenu::SelectNetworkModeReturned,this);
}
break;
#endif
@@ -281,7 +302,11 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId)
{
int primaryPad = ProfileManager.GetPrimaryPad();
+#ifdef _XBOX_ONE
+ int (*signInReturnedFunc) (LPVOID,const bool, const int iPad, const int iController) = NULL;
+#else
int (*signInReturnedFunc) (LPVOID,const bool, const int iPad) = NULL;
+#endif
switch((int)controlId)
{
@@ -335,12 +360,15 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId)
signInReturnedFunc = &UIScene_MainMenu::UnlockFullGame_SignInReturned;
break;
case eControl_Exit:
+ //CD - Added for audio
+ ui.PlayUISFX(eSFX_Press);
+
if( ProfileManager.IsFullVersion() )
- {
+ {
UINT uiIDA[2];
uiIDA[0]=IDS_CANCEL;
uiIDA[1]=IDS_OK;
- ui.RequestMessageBox(IDS_WARNING_ARCADE_TITLE, IDS_WARNING_ARCADE_TEXT, uiIDA, 2, XUSER_INDEX_ANY,&UIScene_MainMenu::ExitGameReturned,this);
+ ui.RequestErrorMessage(IDS_WARNING_ARCADE_TITLE, IDS_WARNING_ARCADE_TEXT, uiIDA, 2, XUSER_INDEX_ANY,&UIScene_MainMenu::ExitGameReturned,this);
}
else
{
@@ -387,7 +415,7 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_MUST_SIGN_IN_TITLE, IDS_MUST_SIGN_IN_TEXT, uiIDA, 2, primaryPad, &UIScene_MainMenu::MustSignInReturned, this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_MUST_SIGN_IN_TITLE, IDS_MUST_SIGN_IN_TEXT, uiIDA, 2, primaryPad, &UIScene_MainMenu::MustSignInReturned, this);
}
}
}
@@ -554,7 +582,15 @@ int UIScene_MainMenu::MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::EM
SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_MainMenu::Leaderboards_SignInReturned, pClass);
break;
case eAction_RunGamePSN:
- SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_MainMenu::CreateLoad_SignInReturned, pClass);
+ if(CGameNetworkManager::usingAdhocMode())
+ {
+ SQRNetworkManager_AdHoc_Vita::AttemptAdhocSignIn(&UIScene_MainMenu::CreateLoad_SignInReturned, pClass);
+ }
+ else
+ {
+ SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_MainMenu::CreateLoad_SignInReturned, pClass);
+
+ }
break;
case eAction_RunUnlockOrDLCPSN:
//CD - Must force Ad-Hoc off if they want commerce PSN sign-in
@@ -601,7 +637,11 @@ int UIScene_MainMenu::MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::EM
}
#endif
+#ifdef _XBOX_ONE
+int UIScene_MainMenu::HelpAndOptions_SignInReturned(void *pParam,bool bContinue,int iPad, int iController)
+#else
int UIScene_MainMenu::HelpAndOptions_SignInReturned(void *pParam,bool bContinue,int iPad)
+#endif
{
UIScene_MainMenu *pClass = (UIScene_MainMenu *)pParam;
@@ -618,7 +658,7 @@ int UIScene_MainMenu::HelpAndOptions_SignInReturned(void *pParam,bool bContinue,
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(iPad,eUIScene_HelpAndOptionsMenu);
+ proceedToScene(iPad, eUIScene_HelpAndOptionsMenu);
}
#if TO_BE_IMPLEMENTED
else
@@ -659,16 +699,20 @@ int UIScene_MainMenu::HelpAndOptions_SignInReturned(void *pParam,bool bContinue,
}
#ifdef _XBOX_ONE
-int UIScene_MainMenu::ChooseUser_SignInReturned(void *pParam, bool bContinue, int iPad)
+int UIScene_MainMenu::ChooseUser_SignInReturned(void *pParam, bool bContinue, int iPad, int iController)
{
UIScene_MainMenu* pClass = (UIScene_MainMenu*)pParam;
pClass->m_bIgnorePress = false;
-
+ pClass->updateTooltips();
return 0;
}
#endif
+#ifdef _XBOX_ONE
+int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, int iPad, int iController)
+#else
int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, int iPad)
+#endif
{
UIScene_MainMenu* pClass = (UIScene_MainMenu*)pParam;
@@ -682,7 +726,7 @@ int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, in
if(ProfileManager.IsGuest(ProfileManager.GetPrimaryPad()))
{
pClass->m_bIgnorePress=false;
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else
{
@@ -720,7 +764,7 @@ int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, in
if(ProfileManager.IsGuest(iPad))
{
pClass->m_bIgnorePress=false;
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else
{
@@ -738,7 +782,7 @@ int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, in
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
}
else
{
@@ -801,7 +845,7 @@ int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, in
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
#endif
}
}
@@ -815,7 +859,7 @@ int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, in
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
#endif
}
}
@@ -866,7 +910,11 @@ int UIScene_MainMenu::CreateLoad_SignInReturned(void *pParam, bool bContinue, in
return 0;
}
+#ifdef _XBOX_ONE
+int UIScene_MainMenu::Leaderboards_SignInReturned(void *pParam,bool bContinue,int iPad,int iController)
+#else
int UIScene_MainMenu::Leaderboards_SignInReturned(void *pParam,bool bContinue,int iPad)
+#endif
{
UIScene_MainMenu *pClass = (UIScene_MainMenu *)pParam;
@@ -881,12 +929,12 @@ int UIScene_MainMenu::Leaderboards_SignInReturned(void *pParam,bool bContinue,in
if(ProfileManager.IsGuest(ProfileManager.GetPrimaryPad()))
{
pClass->m_bIgnorePress=false;
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else if(!ProfileManager.IsSignedInLive(ProfileManager.GetPrimaryPad()))
{
pClass->m_bIgnorePress=false;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
}
else
{
@@ -897,11 +945,11 @@ int UIScene_MainMenu::Leaderboards_SignInReturned(void *pParam,bool bContinue,in
if(bContentRestricted)
{
pClass->m_bIgnorePress=false;
-#if !(defined(_XBOX) || defined(_WIN64)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
+#if !(defined(_XBOX) || defined(_WINDOWS64) || defined(_XBOX_ONE) ) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
// you can't see leaderboards
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
#endif
}
else
@@ -910,7 +958,7 @@ int UIScene_MainMenu::Leaderboards_SignInReturned(void *pParam,bool bContinue,in
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_LeaderboardsMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_LeaderboardsMenu);
}
}
}
@@ -932,7 +980,11 @@ int UIScene_MainMenu::Leaderboards_SignInReturned(void *pParam,bool bContinue,in
return 0;
}
+#ifdef _XBOX_ONE
+int UIScene_MainMenu::Achievements_SignInReturned(void *pParam,bool bContinue,int iPad,int iController)
+#else
int UIScene_MainMenu::Achievements_SignInReturned(void *pParam,bool bContinue,int iPad)
+#endif
{
UIScene_MainMenu *pClass = (UIScene_MainMenu *)pParam;
@@ -962,7 +1014,11 @@ int UIScene_MainMenu::Achievements_SignInReturned(void *pParam,bool bContinue,in
return 0;
}
+#ifdef _XBOX_ONE
+int UIScene_MainMenu::UnlockFullGame_SignInReturned(void *pParam,bool bContinue,int iPad,int iController)
+#else
int UIScene_MainMenu::UnlockFullGame_SignInReturned(void *pParam,bool bContinue,int iPad)
+#endif
{
UIScene_MainMenu* pClass = (UIScene_MainMenu*)pParam;
@@ -992,8 +1048,8 @@ int UIScene_MainMenu::UnlockFullGame_SignInReturned(void *pParam,bool bContinue,
return 0;
}
-#ifdef _DURANGO
-int UIScene_MainMenu::XboxHelp_SignInReturned(void *pParam, bool bContinue, int iPad)
+#ifdef _XBOX_ONE
+int UIScene_MainMenu::XboxHelp_SignInReturned(void *pParam, bool bContinue, int iPad, int iController)
{
UIScene_MainMenu* pClass = (UIScene_MainMenu*)pParam;
@@ -1093,7 +1149,7 @@ void UIScene_MainMenu::RefreshChatAndContentRestrictionsReturned_PlayGame(void *
{
UINT uiIDA[1];
uiIDA[0]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::PlayOfflineReturned, pClass, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::PlayOfflineReturned, pClass);
return;
}
@@ -1120,7 +1176,7 @@ void UIScene_MainMenu::RefreshChatAndContentRestrictionsReturned_PlayGame(void *
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_MUST_SIGN_IN_TITLE, IDS_MUST_SIGN_IN_TEXT, uiIDA, 2, primaryPad, &UIScene_MainMenu::MustSignInReturned, pClass, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_MUST_SIGN_IN_TITLE, IDS_MUST_SIGN_IN_TEXT, uiIDA, 2, primaryPad, &UIScene_MainMenu::MustSignInReturned, pClass);
}
}
}
@@ -1185,7 +1241,7 @@ void UIScene_MainMenu::RefreshChatAndContentRestrictionsReturned_Leaderboards(vo
{
UINT uiIDA[1];
uiIDA[0] = IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(), nullptr, pClass, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(), nullptr, pClass);
return;
}
@@ -1210,7 +1266,7 @@ void UIScene_MainMenu::RefreshChatAndContentRestrictionsReturned_Leaderboards(vo
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_MUST_SIGN_IN_TITLE, IDS_MUST_SIGN_IN_TEXT, uiIDA, 2, primaryPad, &UIScene_MainMenu::MustSignInReturned, pClass, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_MUST_SIGN_IN_TITLE, IDS_MUST_SIGN_IN_TEXT, uiIDA, 2, primaryPad, &UIScene_MainMenu::MustSignInReturned, pClass);
}
}
}
@@ -1254,7 +1310,7 @@ void UIScene_MainMenu::RunPlayGame(int iPad)
uiIDA[0]=IDS_OK;
m_bIgnorePress=false;
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else
{
@@ -1305,7 +1361,7 @@ void UIScene_MainMenu::RunPlayGame(int iPad)
{
uiIDA[0]=IDS_NETWORK_ADHOC;
// this should be "Connect to adhoc network"
- ui.RequestMessageBox(IDS_PRO_NOTADHOCONLINE_TITLE, IDS_PRO_NOTADHOCONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTADHOCONLINE_TITLE, IDS_PRO_NOTADHOCONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this);
}
else
{
@@ -1327,12 +1383,12 @@ void UIScene_MainMenu::RunPlayGame(int iPad)
ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPad, &UIScene_MainMenu::MustSignInReturnedPSN, this, app.GetStringTable());
return;
} */
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this);
}
#else
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPad, &UIScene_MainMenu::MustSignInReturnedPSN, this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPad, &UIScene_MainMenu::MustSignInReturnedPSN, this);
#endif
#elif defined __ORBIS__
@@ -1346,7 +1402,7 @@ void UIScene_MainMenu::RunPlayGame(int iPad)
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, UIScene_MainMenu::PlayOfflineReturned, this, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, UIScene_MainMenu::PlayOfflineReturned, this);
}
else
{
@@ -1355,7 +1411,7 @@ void UIScene_MainMenu::RunPlayGame(int iPad)
UINT uiIDA[2];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1] = IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPad, &UIScene_MainMenu::MustSignInReturnedPSN, this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, iPad, &UIScene_MainMenu::MustSignInReturnedPSN, this);
return;
}
#else
@@ -1363,7 +1419,7 @@ void UIScene_MainMenu::RunPlayGame(int iPad)
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
#endif
}
else
@@ -1435,7 +1491,7 @@ void UIScene_MainMenu::RunPlayGame(int iPad)
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_LoadOrJoinMenu);
#endif
}
}
@@ -1479,7 +1535,7 @@ void UIScene_MainMenu::RunLeaderboards(int iPad)
// guests can't look at leaderboards
if(ProfileManager.IsGuest(iPad))
{
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else if(!ProfileManager.IsSignedInLive(iPad))
{
@@ -1488,7 +1544,7 @@ void UIScene_MainMenu::RunLeaderboards(int iPad)
// get them to sign in to online
UINT uiIDA[1];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this);
/* 4J-PB - Add this after release
#elif defined __PSVITA__
@@ -1519,18 +1575,18 @@ void UIScene_MainMenu::RunLeaderboards(int iPad)
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::MustSignInReturnedPSN, this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::MustSignInReturnedPSN, this);
return;
}
#else
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
#endif
}
else
@@ -1548,11 +1604,11 @@ void UIScene_MainMenu::RunLeaderboards(int iPad)
#endif
if(bContentRestricted)
{
-#if !(defined(_XBOX) || defined(_WIN64)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
+#if !(defined(_XBOX) || defined(_WINDOWS64) || defined(_XBOX_ONE)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
// you can't see leaderboards
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,this);
#endif
}
else
@@ -1564,7 +1620,7 @@ void UIScene_MainMenu::RunLeaderboards(int iPad)
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(iPad, eUIScene_LeaderboardsMenu);
+ proceedToScene(iPad, eUIScene_LeaderboardsMenu);
}
}
}
@@ -1623,7 +1679,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
m_bIgnorePress=false;
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(), nullptr, this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(), nullptr, this);
return;
}
@@ -1634,7 +1690,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
if(ProfileManager.IsGuest(iPad))
{
m_bIgnorePress=false;
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else
{
@@ -1653,11 +1709,11 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
if(bContentRestricted)
{
m_bIgnorePress=false;
-#if !(defined(_XBOX) || defined(_WIN64)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
+#if !(defined(_XBOX) || defined(_WINDOWS64) || defined(_XBOX_ONE)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
// you can't see the store
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,this);
#endif
}
else
@@ -1666,7 +1722,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_DLCMainMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_DLCMainMenu);
}
}
#if defined _XBOX_ONE
@@ -1707,7 +1763,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
UINT uiIDA[1];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
//uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this);
#elif defined __ORBIS__
m_eAction=eAction_RunUnlockOrDLCPSN;
// Determine why they're not "signed in live"
@@ -1719,20 +1775,20 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::MustSignInReturnedPSN, this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::MustSignInReturnedPSN, this);
return;
}
#else
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
#endif
}
}
@@ -1742,7 +1798,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
if(ProfileManager.IsGuest(iPad))
{
m_bIgnorePress=false;
- ui.RequestMessageBox(IDS_UNLOCK_TITLE, IDS_UNLOCK_GUEST_TEXT, uiIDA, 1,iPad);
+ ui.RequestErrorMessage(IDS_UNLOCK_TITLE, IDS_UNLOCK_GUEST_TEXT, uiIDA, 1,iPad);
}
else if(!ProfileManager.IsSignedInLive(iPad))
{
@@ -1751,7 +1807,7 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
// get them to sign in to online
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_MainMenu::MustSignInReturnedPSN,this);
#elif defined __ORBIS__
m_eAction=eAction_RunUnlockOrDLCPSN;
// Determine why they're not "signed in live"
@@ -1763,20 +1819,20 @@ void UIScene_MainMenu::RunUnlockOrDLC(int iPad)
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::MustSignInReturnedPSN, this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::MustSignInReturnedPSN, this);
return;
}
#else
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1);
#endif
}
@@ -1802,6 +1858,60 @@ void UIScene_MainMenu::tick()
{
UIScene::tick();
+ if ( (eNavigateWhenReady >= 0) )
+ {
+
+ int lockedProfile = ProfileManager.GetLockedProfile();
+
+#ifdef _DURANGO
+ // 4J-JEV: DLC menu contains text localised to system language which we can't change.
+ // We need to switch to this language in-case it uses a different font.
+ if (eNavigateWhenReady == eUIScene_DLCMainMenu) setLanguageOverride(false);
+
+ bool isSignedIn;
+ C4JStorage::eOptionsCallback status;
+ bool pendingFontChange;
+ if (lockedProfile >= 0)
+ {
+ isSignedIn = ProfileManager.IsSignedIn(lockedProfile);
+ status = app.GetOptionsCallbackStatus(lockedProfile);
+ pendingFontChange = ui.PendingFontChange();
+
+ if(status == C4JStorage::eOptions_Callback_Idle)
+ {
+ // make sure the TMS banned list data is ditched - the player may have gone in to help & options, backed out, and signed out
+ app.InvalidateBannedList(lockedProfile);
+
+ // need to ditch any DLCOffers info
+ StorageManager.ClearDLCOffers();
+ app.ClearAndResetDLCDownloadQueue();
+ app.ClearDLCInstalled();
+ }
+ }
+
+ if ( (lockedProfile >= 0)
+ && isSignedIn
+ && ((status == C4JStorage::eOptions_Callback_Read)||(status == C4JStorage::eOptions_Callback_Write))
+ && !pendingFontChange
+ )
+#endif
+ {
+ app.DebugPrintf("[MainMenu] Navigating away from MainMenu.\n");
+ ui.NavigateToScene(lockedProfile, eNavigateWhenReady);
+ eNavigateWhenReady = (EUIScene) -1;
+ }
+#ifdef _DURANGO
+ else
+ {
+ app.DebugPrintf("[MainMenu] Delaying navigation: lockedProfile=%i, %s, status=%ls, %s.\n",
+ lockedProfile,
+ isSignedIn ? "SignedIn" : "SignedOut",
+ app.toStringOptionsStatus(status).c_str(),
+ pendingFontChange ? "Pending font change" : "font OK");
+ }
+#endif
+ }
+
#if defined(__PS3__) || defined (__ORBIS__) || defined(__PSVITA__)
if(m_bLaunchFullVersionPurchase)
{
@@ -1820,7 +1930,7 @@ void UIScene_MainMenu::tick()
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
{
@@ -1848,7 +1958,7 @@ void UIScene_MainMenu::tick()
{
m_bWaitingForDLCInfo=false;
ProfileManager.SetLockedProfile(m_iPad);
- ui.NavigateToScene(ProfileManager.GetPrimaryPad(),eUIScene_DLCMainMenu);
+ proceedToScene(ProfileManager.GetPrimaryPad(), eUIScene_DLCMainMenu);
}
}
@@ -1856,7 +1966,7 @@ void UIScene_MainMenu::tick()
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox( IDS_CONNECTION_FAILED, IDS_IN_PARTY_SESSION_FULL, uiIDA,1,ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_CONNECTION_FAILED, IDS_IN_PARTY_SESSION_FULL, uiIDA,1,ProfileManager.GetPrimaryPad());
}
#endif
@@ -1879,7 +1989,7 @@ void UIScene_MainMenu::tick()
// give the option of continuing offline
UINT uiIDA[1];
uiIDA[0]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION_PATCH_AVAILABLE, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::PlayOfflineReturned, this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION_PATCH_AVAILABLE, uiIDA, 1, ProfileManager.GetPrimaryPad(), &UIScene_MainMenu::PlayOfflineReturned, this);
}
m_bErrorDialogRunning=false;
@@ -1904,7 +2014,7 @@ void UIScene_MainMenu::RunAchievements(int iPad)
// guests can't look at achievements
if(ProfileManager.IsGuest(iPad))
{
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else
{
@@ -1919,7 +2029,7 @@ void UIScene_MainMenu::RunHelpAndOptions(int iPad)
{
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
+ ui.RequestErrorMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1);
}
else
{
@@ -1935,7 +2045,7 @@ void UIScene_MainMenu::RunHelpAndOptions(int iPad)
#ifdef _XBOX_ONE
ui.ShowPlayerDisplayname(true);
#endif
- ui.NavigateToScene(iPad,eUIScene_HelpAndOptionsMenu);
+ proceedToScene(iPad, eUIScene_HelpAndOptionsMenu);
}
#if TO_BE_IMPLEMENTED
else
@@ -1973,6 +2083,7 @@ void UIScene_MainMenu::LoadTrial(void)
// No saving in the trial
StorageManager.SetSaveDisabled(true);
+ app.SetGameHostOption(eGameHostOption_WasntSaveOwner, false);
// Set the global flag, so that we don't disable saving again once the save is complete
app.SetGameHostOption(eGameHostOption_DisableSaving, 1);
@@ -2018,7 +2129,7 @@ void UIScene_MainMenu::LoadTrial(void)
void UIScene_MainMenu::handleUnlockFullVersion()
{
- m_buttons[(int)eControl_UnlockOrDLC].setLabel(app.GetString(IDS_DOWNLOADABLECONTENT),true);
+ m_buttons[(int)eControl_UnlockOrDLC].setLabel(IDS_DOWNLOADABLECONTENT,true);
}
diff --git a/Minecraft.Client/Common/UI/UIScene_MainMenu.h b/Minecraft.Client/Common/UI/UIScene_MainMenu.h
index f1b358da..2b49a44b 100644
--- a/Minecraft.Client/Common/UI/UIScene_MainMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_MainMenu.h
@@ -90,10 +90,20 @@ private:
};
eActions m_eAction;
+
+private:
+ // 4J-JEV: Delay navigation until font changes.
+ static EUIScene eNavigateWhenReady;
+
+ static void proceedToScene(int iPad, EUIScene eScene)
+ {
+ eNavigateWhenReady = eScene;
+ }
+
public:
UIScene_MainMenu(int iPad, void *initData, UILayer *parentLayer);
virtual ~UIScene_MainMenu();
-
+
// Returns true if this scene has focus for the pad passed in
#ifndef __PS3__
virtual bool hasFocus(int iPad) { return bHasFocus; }
@@ -113,6 +123,7 @@ protected:
public:
virtual void tick();
+ virtual void handleReload();
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
@@ -137,8 +148,20 @@ private:
static void LoadTrial();
#ifdef _XBOX_ONE
- static int ChooseUser_SignInReturned(void *pParam,bool bContinue, int iPad);
-#endif
+ static int ChooseUser_SignInReturned(void *pParam,bool bContinue, int iPad, int iController);
+ static int CreateLoad_SignInReturned(void *pParam,bool bContinue, int iPad, int iController);
+ static int HelpAndOptions_SignInReturned(void *pParam,bool bContinue,int iPad, int iController);
+ static int Achievements_SignInReturned(void *pParam,bool bContinue,int iPad, int iController);
+ static int MustSignInReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
+
+ static int Leaderboards_SignInReturned(void* pParam, bool bContinue, int iPad, int iController);
+ static int UnlockFullGame_SignInReturned(void *pParam,bool bContinue,int iPad, int iController);
+ static int ExitGameReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
+
+
+ static int XboxHelp_SignInReturned(void *pParam, bool bContinue, int iPad, int iController);
+#else
+
static int CreateLoad_SignInReturned(void *pParam,bool bContinue, int iPad);
static int HelpAndOptions_SignInReturned(void *pParam,bool bContinue,int iPad);
static int Achievements_SignInReturned(void *pParam,bool bContinue,int iPad);
@@ -157,9 +180,6 @@ private:
static int PlayOfflineReturned(void *pParam, int iPad, C4JStorage::EMessageResult result);
#endif
-
-#ifdef _DURANGO
- static int XboxHelp_SignInReturned(void *pParam, bool bContinue, int iPad);
#endif
#ifdef __PSVITA__
diff --git a/Minecraft.Client/Common/UI/UIScene_MessageBox.h b/Minecraft.Client/Common/UI/UIScene_MessageBox.h
index 3c349dea..c10f6ab8 100644
--- a/Minecraft.Client/Common/UI/UIScene_MessageBox.h
+++ b/Minecraft.Client/Common/UI/UIScene_MessageBox.h
@@ -41,7 +41,8 @@ public:
virtual EUIScene getSceneType() { return eUIScene_MessageBox;}
// Returns true if lower scenes in this scenes layer, or in any layer below this scenes layers should be hidden
- virtual bool hidesLowerScenes() { return false; }
+ virtual bool hidesLowerScenes() { return false; }
+ virtual bool blocksInput() { return true; }
protected:
// TODO: This should be pure virtual in this class
diff --git a/Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.cpp b/Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.cpp
new file mode 100644
index 00000000..998679ca
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.cpp
@@ -0,0 +1,121 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "UIScene_NewUpdateMessage.h"
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+
+UIScene_NewUpdateMessage::UIScene_NewUpdateMessage(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
+{
+ // Setup all the Iggy references we need for this scene
+ initialiseMovie();
+
+ parentLayer->addComponent(iPad,eUIComponent_Panorama);
+ parentLayer->addComponent(iPad,eUIComponent_Logo);
+
+ m_buttonConfirm.init(app.GetString(IDS_TOOLTIPS_ACCEPT),eControl_Confirm);
+
+ wstring message = app.GetString(IDS_TITLEUPDATE);
+ message.append(L"\r\n");
+
+ message=app.FormatHTMLString(m_iPad,message);
+
+ vector<wstring> paragraphs;
+ int lastIndex = 0;
+ for ( int index = message.find(L"\r\n", lastIndex, 2);
+ index != wstring::npos;
+ index = message.find(L"\r\n", lastIndex, 2)
+ )
+ {
+ paragraphs.push_back( message.substr(lastIndex, index-lastIndex) + L" " );
+ lastIndex = index + 2;
+ }
+ paragraphs.push_back( message.substr( lastIndex, message.length() - lastIndex ) );
+
+ for(unsigned int i = 0; i < paragraphs.size(); ++i)
+ {
+ m_labelDescription.addText(paragraphs[i],i == (paragraphs.size() - 1) );
+ }
+
+ m_bIgnoreInput=false;
+
+#ifdef __PSVITA__
+ ui.TouchBoxRebuild(this);
+#endif
+}
+
+UIScene_NewUpdateMessage::~UIScene_NewUpdateMessage()
+{
+ m_parentLayer->removeComponent(eUIComponent_Panorama);
+ m_parentLayer->removeComponent(eUIComponent_Logo);
+}
+
+wstring UIScene_NewUpdateMessage::getMoviePath()
+{
+ return L"EULA";
+}
+
+void UIScene_NewUpdateMessage::updateTooltips()
+{
+ ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT );
+}
+
+void UIScene_NewUpdateMessage::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
+{
+ if(m_bIgnoreInput) return;
+
+#ifdef __ORBIS__
+ // ignore all players except player 0 - it's their profile that is currently being used
+ if(iPad!=0) return;
+#endif
+
+ ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released);
+
+ switch(key)
+ {
+ case ACTION_MENU_B:
+ {
+ int iVal=app.GetGameSettings(m_iPad,eGameSetting_DisplayUpdateMessage);
+ if(iVal>0) iVal--;
+
+ // set the update text as seen, by clearing the flag
+ app.SetGameSettings(m_iPad,eGameSetting_DisplayUpdateMessage,iVal);
+ // force a profile write
+ app.CheckGameSettingsChanged(true,m_iPad);
+ ui.NavigateBack(m_iPad);
+ }
+ break;
+#ifdef __ORBIS__
+ case ACTION_MENU_TOUCHPAD_PRESS:
+#endif
+ case ACTION_MENU_OK:
+ case ACTION_MENU_DOWN:
+ case ACTION_MENU_UP:
+ case ACTION_MENU_PAGEUP:
+ case ACTION_MENU_PAGEDOWN:
+ case ACTION_MENU_OTHER_STICK_DOWN:
+ case ACTION_MENU_OTHER_STICK_UP:
+ sendInputToMovie(key, repeat, pressed, released);
+ break;
+ }
+}
+
+void UIScene_NewUpdateMessage::handlePress(F64 controlId, F64 childId)
+{
+ switch((int)controlId)
+ {
+ case eControl_Confirm:
+ {
+ //CD - Added for audio
+ ui.PlayUISFX(eSFX_Press);
+
+ int iVal=app.GetGameSettings(m_iPad,eGameSetting_DisplayUpdateMessage);
+ if(iVal>0) iVal--;
+
+ // set the update text as seen, by clearing the flag
+ app.SetGameSettings(m_iPad,eGameSetting_DisplayUpdateMessage,iVal);
+ // force a profile write
+ app.CheckGameSettingsChanged(true,m_iPad);
+ ui.NavigateBack(m_iPad);
+ }
+ break;
+ };
+}
diff --git a/Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.h b/Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.h
new file mode 100644
index 00000000..1529187f
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_NewUpdateMessage.h
@@ -0,0 +1,45 @@
+#pragma once
+
+#include "UIScene.h"
+
+class UIScene_NewUpdateMessage : public UIScene
+{
+private:
+ enum EControls
+ {
+ eControl_Confirm,
+ };
+
+ bool m_bIgnoreInput;
+
+ UIControl_Button m_buttonConfirm;
+ UIControl_DynamicLabel m_labelDescription;
+ UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
+ UI_MAP_ELEMENT(m_buttonConfirm, "AcceptButton")
+ UI_MAP_ELEMENT(m_labelDescription, "EULAtext")
+ UI_END_MAP_ELEMENTS_AND_NAMES()
+
+public:
+ UIScene_NewUpdateMessage(int iPad, void *initData, UILayer *parentLayer);
+ ~UIScene_NewUpdateMessage();
+
+ virtual EUIScene getSceneType() { return eUIScene_EULA;}
+
+ // Returns true if this scene has focus for the pad passed in
+#ifndef __PS3__
+ virtual bool hasFocus(int iPad) { return bHasFocus; }
+#endif
+ virtual void updateTooltips();
+
+protected:
+ virtual wstring getMoviePath();
+
+public:
+ // INPUT
+ virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
+
+protected:
+ void handlePress(F64 controlId, F64 childId);
+
+ virtual long long getDefaultGtcButtons() { return 0; }
+};
diff --git a/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp b/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp
index d9569cc9..6f502db8 100644
--- a/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp
@@ -428,7 +428,7 @@ void UIScene_PauseMenu::handleInput(int iPad, int key, bool repeat, bool pressed
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive is the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
}
else
// Determine why they're not "signed in live"
@@ -439,20 +439,20 @@ void UIScene_PauseMenu::handleInput(int iPad, int key, bool repeat, bool pressed
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, (LPVOID)GetCallbackUniqueId() );
}
#else // __PS3__
// get them to sign in to online
UINT uiIDA[1];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, (LPVOID)GetCallbackUniqueId() );
#endif
}
else
@@ -493,7 +493,7 @@ void UIScene_PauseMenu::handleInput(int iPad, int key, bool repeat, bool pressed
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ACTION_BAN_LEVEL_TITLE, IDS_ACTION_BAN_LEVEL_DESCRIPTION, uiIDA, 2, iPad,&UIScene_PauseMenu::BanGameDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_ACTION_BAN_LEVEL_TITLE, IDS_ACTION_BAN_LEVEL_DESCRIPTION, uiIDA, 2, iPad,&UIScene_PauseMenu::BanGameDialogReturned,(LPVOID)GetCallbackUniqueId() );
//rfHandled = TRUE;
}
@@ -524,7 +524,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
// guests can't look at leaderboards
if(ProfileManager.IsGuest(m_iPad))
{
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else if(!ProfileManager.IsSignedInLive(m_iPad))
{
@@ -541,7 +541,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
{
UINT uiIDA[1];
uiIDA[0] = IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad);
break;;
}
@@ -553,7 +553,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
m_eAction=eAction_ViewLeaderboardsPSN;
UINT uiIDA[1];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_PauseMenu::MustSignInReturnedPSN,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, ProfileManager.GetPrimaryPad(),&UIScene_PauseMenu::MustSignInReturnedPSN,(LPVOID)GetCallbackUniqueId() );
#elif defined(__ORBIS__)
m_eAction=eAction_ViewLeaderboardsPSN;
int npAvailability = ProfileManager.getNPAvailability(m_iPad);
@@ -562,7 +562,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive is the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad);
}
else
// Determine why they're not "signed in live"
@@ -575,18 +575,18 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, m_iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, m_iPad);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, m_iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, m_iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, (LPVOID)GetCallbackUniqueId() );
}
#else
UINT uiIDA[1] = { IDS_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, m_iPad);
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, m_iPad);
#endif
}
else
@@ -597,11 +597,11 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
#endif
if(bContentRestricted)
{
-#if !(defined(_XBOX) || defined(_WIN64)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
+#if !(defined(_XBOX) || defined(_WINDOWS64) || defined(_XBOX_ONE)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
// you can't see leaderboards
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad,NULL,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad);
#endif
}
else
@@ -627,7 +627,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
{
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
{
@@ -671,27 +671,27 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
if(g_NetworkManager.GetPlayerCount()>1)
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned, (LPVOID)GetCallbackUniqueId());
}
else
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned, (LPVOID)GetCallbackUniqueId());
}
}
else if(g_NetworkManager.IsHost() && g_NetworkManager.GetPlayerCount()>1)
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, dynamic_cast<IUIScene_PauseMenu*>(this), app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, (LPVOID)GetCallbackUniqueId());
}
else
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, dynamic_cast<IUIScene_PauseMenu*>(this), app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, (LPVOID)GetCallbackUniqueId());
}
#else
if(StorageManager.GetSaveDisabled())
{
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, (LPVOID)GetCallbackUniqueId());
}
else
{
@@ -703,11 +703,11 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
if(g_NetworkManager.GetPlayerCount()>1)
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned, (LPVOID)GetCallbackUniqueId());
}
else
{
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&UIScene_PauseMenu::ExitGameSaveDialogReturned, (LPVOID)GetCallbackUniqueId());
}
}
else
@@ -715,7 +715,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, (LPVOID)GetCallbackUniqueId());
}
}
#endif
@@ -753,7 +753,7 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, dynamic_cast<IUIScene_PauseMenu*>(this), app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned, (LPVOID)GetCallbackUniqueId());
}
else
@@ -788,12 +788,12 @@ void UIScene_PauseMenu::PerformActionSaveGame()
// Unlock the full version?
if(!ProfileManager.IsSignedInLive(m_iPad))
{
-#if defined(__PS3__)
+#if defined(__PS3__) || defined (__PSVITA__)
m_eAction=eAction_SaveGamePSN;
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_PauseMenu::MustSignInReturnedPSN,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_PauseMenu::MustSignInReturnedPSN,(LPVOID)GetCallbackUniqueId());
#elif defined(__ORBIS__)
m_eAction=eAction_SaveGamePSN;
int npAvailability = ProfileManager.getNPAvailability(m_iPad);
@@ -802,7 +802,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive is the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, m_iPad);
}
else
// Determine why they're not "signed in live"
@@ -813,14 +813,14 @@ void UIScene_PauseMenu::PerformActionSaveGame()
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, m_iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, m_iPad);
}
else
{
// Not signed in to PSN
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, m_iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, m_iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, (LPVOID)GetCallbackUniqueId());
}
#endif
}
@@ -829,7 +829,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_OK;
uiIDA[1]=IDS_CONFIRM_CANCEL;
- ui.RequestMessageBox(IDS_UNLOCK_TITLE, IDS_UNLOCK_TOSAVE_TEXT, uiIDA, 2,m_iPad,&UIScene_PauseMenu::UnlockFullSaveReturned,this,app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_UNLOCK_TITLE, IDS_UNLOCK_TOSAVE_TEXT, uiIDA, 2,m_iPad,&UIScene_PauseMenu::UnlockFullSaveReturned,(LPVOID)GetCallbackUniqueId());
}
return;
@@ -865,7 +865,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
if(app.DLCInstallProcessCompleted() && !SonyCommerce_Vita::getDLCUpgradePending()) // MGH - devtrack #5861 On vita it can take a bit after the install has finished to register the purchase, so make sure we don't end up asking to purchase again
#endif
{
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, m_iPad,&UIScene_PauseMenu::WarningTrialTexturePackReturned,this,app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, m_iPad,&UIScene_PauseMenu::WarningTrialTexturePackReturned,(LPVOID)GetCallbackUniqueId());
}
return;
@@ -888,7 +888,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
uiIDA[0]=IDS_SELECTANEWDEVICE;
uiIDA[1]=IDS_NODEVICE_DECLINE;
- ui.RequestMessageBox(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::DeviceRemovedDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_STORAGEDEVICEPROBLEM_TITLE, IDS_FAILED_TO_LOADSAVE_TEXT, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::DeviceRemovedDialogReturned,(LPVOID)GetCallbackUniqueId());
}
else
#endif
@@ -899,7 +899,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
UINT uiIDA[2];
uiIDA[0]=IDS_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_DISABLE_AUTOSAVE, IDS_CONFIRM_DISABLE_AUTOSAVE, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::DisableAutosaveDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_DISABLE_AUTOSAVE, IDS_CONFIRM_DISABLE_AUTOSAVE, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::DisableAutosaveDialogReturned,(LPVOID)GetCallbackUniqueId());
}
else
#endif
@@ -909,7 +909,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::SaveGameDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::SaveGameDialogReturned,(LPVOID)GetCallbackUniqueId());
}
else
{
@@ -917,7 +917,7 @@ void UIScene_PauseMenu::PerformActionSaveGame()
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_ENABLE_AUTOSAVE, IDS_CONFIRM_ENABLE_AUTOSAVE, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::EnableAutosaveDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_ENABLE_AUTOSAVE, IDS_CONFIRM_ENABLE_AUTOSAVE, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::EnableAutosaveDialogReturned,(LPVOID)GetCallbackUniqueId());
#else
// flag a app action of save game
app.SetAction(m_iPad,eAppAction_SaveGame);
@@ -970,7 +970,6 @@ void UIScene_PauseMenu::HandleDLCMountingComplete()
int UIScene_PauseMenu::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
- UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)pParam;
Minecraft *pMinecraft=Minecraft::GetInstance();
if(result==C4JStorage::EMessage_ResultAccept)
@@ -985,7 +984,7 @@ int UIScene_PauseMenu::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
#endif
@@ -1004,11 +1003,12 @@ int UIScene_PauseMenu::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::
int UIScene_PauseMenu::SaveGame_SignInReturned(void *pParam,bool bContinue, int iPad)
{
- UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)pParam;
+ UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)ui.GetSceneFromCallbackId((size_t)pParam);
+ if(pClass) pClass->SetIgnoreInput(false);
if(bContinue==true)
{
- pClass->PerformActionSaveGame();
+ if(pClass) pClass->PerformActionSaveGame();
}
return 0;
@@ -1029,24 +1029,23 @@ int UIScene_PauseMenu::BanGameDialogReturned(void *pParam,int iPad,C4JStorage::E
#if defined(__PS3__) || defined (__PSVITA__) || defined(__ORBIS__)
int UIScene_PauseMenu::MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
- UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)pParam;
-
- if(result==C4JStorage::EMessage_ResultAccept)
+ UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)ui.GetSceneFromCallbackId((size_t)pParam);
+ if(result==C4JStorage::EMessage_ResultAccept && pClass)
{
#ifdef __PS3__
switch(pClass->m_eAction)
{
case eAction_ViewLeaderboardsPSN:
- SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::ViewLeaderboards_SignInReturned, pClass);
+ SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::ViewLeaderboards_SignInReturned, pParam);
break;
case eAction_ViewInvitesPSN:
- SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::ViewInvites_SignInReturned, pClass);
+ SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::ViewInvites_SignInReturned, pParam);
break;
case eAction_SaveGamePSN:
- SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::SaveGame_SignInReturned, pClass);
+ SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::SaveGame_SignInReturned, pParam);
break;
case eAction_BuyTexturePackPSN:
- SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::BuyTexturePack_SignInReturned, pClass);
+ SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_PauseMenu::BuyTexturePack_SignInReturned, pParam);
break;
}
#elif defined __PSVITA__
@@ -1059,16 +1058,17 @@ int UIScene_PauseMenu::MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::E
//Force off
CGameNetworkManager::setAdhocMode(false);
//Now Sign-in
- SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::ViewLeaderboards_SignInReturned, pClass);
+ SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::ViewLeaderboards_SignInReturned, pParam);
break;
case eAction_ViewInvitesPSN:
- SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::ViewInvites_SignInReturned, pClass);
+ SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::ViewInvites_SignInReturned, pParam);
break;
case eAction_SaveGamePSN:
- SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::SaveGame_SignInReturned, pClass);
+ pClass->SetIgnoreInput(true);
+ SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::SaveGame_SignInReturned, pParam, true);
break;
case eAction_BuyTexturePackPSN:
- SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::BuyTexturePack_SignInReturned, pClass);
+ SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_PauseMenu::BuyTexturePack_SignInReturned, pParam);
break;
}
#else
@@ -1095,7 +1095,8 @@ int UIScene_PauseMenu::MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::E
int UIScene_PauseMenu::ViewLeaderboards_SignInReturned(void *pParam,bool bContinue, int iPad)
{
- UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)pParam;
+ UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)ui.GetSceneFromCallbackId((size_t)pParam);
+ if(!pClass) return 0;
if(bContinue==true)
{
@@ -1105,7 +1106,7 @@ int UIScene_PauseMenu::ViewLeaderboards_SignInReturned(void *pParam,bool bContin
// guests can't look at leaderboards
if(ProfileManager.IsGuest(pClass->m_iPad))
{
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,NULL, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else if(ProfileManager.IsSignedInLive(iPad))
{
@@ -1115,7 +1116,7 @@ int UIScene_PauseMenu::ViewLeaderboards_SignInReturned(void *pParam,bool bContin
if(bContentRestricted)
{
// you can't see leaderboards
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
#endif
@@ -1130,11 +1131,11 @@ int UIScene_PauseMenu::ViewLeaderboards_SignInReturned(void *pParam,bool bContin
int UIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
- UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)pParam;
+ UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)ui.GetSceneFromCallbackId((size_t)pParam);
#ifdef __ORBIS__
// If a patch is available, can't proceed
- if (pClass->CheckForPatch()) return 0;
+ if (!pClass || pClass->CheckForPatch()) return 0;
#endif
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
@@ -1142,7 +1143,7 @@ int UIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4J
{
if(!ProfileManager.IsSignedInLive(iPad))
{
- pClass->m_eAction=eAction_SaveGamePSN;
+ if(pClass) pClass->m_eAction=eAction_SaveGamePSN;
#ifdef __ORBIS__// Check if PSN is unavailable because of age restriction
int npAvailability = ProfileManager.getNPAvailability(iPad);
if (npAvailability == SCE_NP_ERROR_AGE_RESTRICTION)
@@ -1150,7 +1151,7 @@ int UIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4J
// 4J Stu - This is a bit messy and is due to the library incorrectly returning false for IsSignedInLive is the npAvailability isn't SCE_OK
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
}
else
// Determine why they're not "signed in live"
@@ -1161,20 +1162,20 @@ int UIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4J
UINT uiIDA[1];
uiIDA[0] = IDS_OK;
- ui.RequestMessageBox( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
+ ui.RequestErrorMessage( IDS_ERROR_NETWORK_TITLE, IDS_ERROR_NETWORK, uiIDA, 1, iPad);
}
else
{
UINT uiIDA[1];
uiIDA[0] = IDS_PRO_NOTONLINE_ACCEPT;
- ui.RequestMessageBox( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage( IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 1, iPad, &UIScene_PauseMenu::MustSignInReturnedPSN, pParam);
}
#else // __PS3__
// You're not signed in to PSN!
UINT uiIDA[2];
uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
uiIDA[1]=IDS_PRO_NOTONLINE_DECLINE;
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 2, iPad,&UIScene_PauseMenu::MustSignInReturnedPSN,pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 2, iPad,&UIScene_PauseMenu::MustSignInReturnedPSN,pParam);
#endif
}
else
@@ -1187,7 +1188,7 @@ int UIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4J
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad,NULL,pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
}
else
#endif
@@ -1249,8 +1250,6 @@ int UIScene_PauseMenu::WarningTrialTexturePackReturned(void *pParam,int iPad,C4J
int UIScene_PauseMenu::BuyTexturePack_SignInReturned(void *pParam,bool bContinue, int iPad)
{
- UIScene_PauseMenu* pClass = (UIScene_PauseMenu*)pParam;
-
if(bContinue==true)
{
// Check if we're signed in to LIVE
@@ -1266,7 +1265,7 @@ int UIScene_PauseMenu::BuyTexturePack_SignInReturned(void *pParam,bool bContinue
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad,NULL,pClass, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
}
else
#endif
@@ -1350,7 +1349,6 @@ int UIScene_PauseMenu::ViewInvites_SignInReturned(void *pParam,bool bContinue, i
int UIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
- UIScene_PauseMenu *pClass = (UIScene_PauseMenu *)pParam;
// Exit with or without saving
// Decline means save in this dialog
if(result==C4JStorage::EMessage_ResultDecline || result==C4JStorage::EMessage_ResultThirdOption)
@@ -1383,7 +1381,7 @@ int UIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStora
uiIDA[1]=IDS_CONFIRM_CANCEL;
// Give the player a warning about the trial version of the texture pack
- ui.RequestMessageBox(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad() ,&UIScene_PauseMenu::WarningTrialTexturePackReturned, dynamic_cast<IUIScene_PauseMenu*>(pClass),app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE, IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad() ,&UIScene_PauseMenu::WarningTrialTexturePackReturned, pParam);
return S_OK;
}
@@ -1399,7 +1397,7 @@ int UIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStora
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameAndSaveReturned, dynamic_cast<IUIScene_PauseMenu*>(pClass), app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameAndSaveReturned, pParam);
return 0;
}
else
@@ -1416,7 +1414,7 @@ int UIScene_PauseMenu::ExitGameSaveDialogReturned(void *pParam,int iPad,C4JStora
UINT uiIDA[2];
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_TITLE_DECLINE_SAVE_GAME, IDS_CONFIRM_DECLINE_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameDeclineSaveReturned, dynamic_cast<IUIScene_PauseMenu*>(pClass), app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_TITLE_DECLINE_SAVE_GAME, IDS_CONFIRM_DECLINE_SAVE_GAME, uiIDA, 2, ProfileManager.GetPrimaryPad(),&IUIScene_PauseMenu::ExitGameDeclineSaveReturned, pParam);
return 0;
}
diff --git a/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.cpp b/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.cpp
index 4f1b9742..0cb6cf2b 100644
--- a/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.cpp
@@ -16,41 +16,8 @@ UIScene_QuadrantSignin::UIScene_QuadrantSignin(int iPad, void *_initData, UILaye
m_bIgnoreInput = false;
m_lastRequestedAvatar = -1;
- for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
- {
- m_iconRequested[i] = false;
-
- m_labelPressToJoin[i].init(app.GetString(IDS_MUST_SIGN_IN_TITLE));
- m_labelConnectController[i].init(L"");
- m_labelAccountType[i].init(L"");
-
- //wchar_t num[2];
- //swprintf(num,2,L"%d",i+1);
- //m_labelPlayerNumber[i].init(num);
-
- m_controllerStatus[i] = eControllerStatus_ConnectController;
-
- if(ProfileManager.IsSignedIn(i))
- {
- app.DebugPrintf("Index %d is signed in\n", i);
-
- setControllerState(i, eControllerStatus_PlayerDetails);
- m_labelDisplayName[i].init(ProfileManager.GetDisplayName(i));
- }
- else if(InputManager.IsPadConnected(i))
- {
- app.DebugPrintf("Index %d is not signed in\n", i);
-
- setControllerState(i, eControllerStatus_PressToJoin);
- m_labelDisplayName[i].init(L"");
- }
- else
- {
- app.DebugPrintf("Index %d is not connected\n", i);
-
- setControllerState(i, eControllerStatus_ConnectController);
- }
- }
+
+ _initQuadrants();
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
if(InputManager.IsCircleCrossSwapped())
@@ -96,6 +63,8 @@ bool UIScene_QuadrantSignin::hidesLowerScenes()
void UIScene_QuadrantSignin::tick()
{
+ if(!getMovie()) return;
+
UIScene::tick();
updateState();
@@ -115,7 +84,7 @@ void UIScene_QuadrantSignin::handleInput(int iPad, int key, bool repeat, bool pr
{
if(pressed)
{
-#ifdef _DURANGO
+#ifdef _XBOX_ONE
if(InputManager.IsPadLocked(iPad))
{
if(iPad != ProfileManager.GetPrimaryPad())
@@ -132,7 +101,7 @@ void UIScene_QuadrantSignin::handleInput(int iPad, int key, bool repeat, bool pr
navigateBack();
}
}
-#ifdef _DURANGO
+#ifdef _XBOX_ONE
}
#endif
}
@@ -144,12 +113,16 @@ void UIScene_QuadrantSignin::handleInput(int iPad, int key, bool repeat, bool pr
if(pressed)
{
m_bIgnoreInput = true;
+#ifdef _XBOX_ONE
+ if(ProfileManager.IsSignedIn(iPad)&&InputManager.IsPadLocked(iPad))
+#else
if(ProfileManager.IsSignedIn(iPad))
+#endif
{
app.DebugPrintf("Signed in pad pressed\n");
ProfileManager.CancelProfileAvatarRequest();
-#ifdef _DURANGO
+#ifdef _XBOX_ONE
// On Durango, if we don't navigate forward here, then when we are on the main menu, it (re)gains focus & that causes our users to get cleared
ui.NavigateToScene(m_iPad, eUIScene_Timer);
#endif
@@ -158,8 +131,18 @@ void UIScene_QuadrantSignin::handleInput(int iPad, int key, bool repeat, bool pr
}
else
{
- app.DebugPrintf("Non-signed in pad pressed\n");
- ProfileManager.RequestSignInUI(false, false, false, true, true,&UIScene_QuadrantSignin::SignInReturned, this, iPad);
+#ifdef _XBOX_ONE
+ if(ProfileManager.IsSignedIn(0)&&!InputManager.IsPadLocked(0))
+ {
+ app.DebugPrintf("Signed in pad with no controller bound pressed\n");
+ ProfileManager.RequestSignInUI(false, false, false, true, false,&UIScene_QuadrantSignin::SignInReturned, this, iPad);
+ }
+ else
+#endif
+ {
+ app.DebugPrintf("Non-signed in pad pressed\n");
+ ProfileManager.RequestSignInUI(false, false, false, true, true,&UIScene_QuadrantSignin::SignInReturned, this, iPad);
+ }
}
}
break;
@@ -176,15 +159,23 @@ void UIScene_QuadrantSignin::handleInput(int iPad, int key, bool repeat, bool pr
handled = true;
}
+#ifdef _XBOX_ONE
+int UIScene_QuadrantSignin::SignInReturned(void *pParam,bool bContinue, int iPad, int iController)
+#else
int UIScene_QuadrantSignin::SignInReturned(void *pParam,bool bContinue, int iPad)
+#endif
{
app.DebugPrintf("SignInReturned for pad %d\n", iPad);
UIScene_QuadrantSignin *pClass = (UIScene_QuadrantSignin *)pParam;
-#ifdef _DURANGO
+#ifdef _XBOX_ONE
if(bContinue && pClass->m_signInInfo.requireOnline && ProfileManager.IsSignedIn(iPad))
{
+ if( !InputManager.IsPadLocked(iPad) )
+ {
+ ProfileManager.ForcePrimaryPadController(iController);
+ }
ProfileManager.CheckMultiplayerPrivileges(iPad, true, &checkAllPrivilegesCallback, pClass);
}
else
@@ -197,7 +188,7 @@ int UIScene_QuadrantSignin::SignInReturned(void *pParam,bool bContinue, int iPad
return 0;
}
-#ifdef _DURANGO
+#ifdef _XBOX_ONE
void UIScene_QuadrantSignin::checkAllPrivilegesCallback(LPVOID lpParam, bool hasPrivileges, int iPad)
{
UIScene_QuadrantSignin* pClass = (UIScene_QuadrantSignin*)lpParam;
@@ -219,7 +210,17 @@ void UIScene_QuadrantSignin::updateState()
{
//app.DebugPrintf("Index %d is signed in, display name - '%s'\n", i, ProfileManager.GetDisplayName(i).data());
- setControllerState(i, eControllerStatus_PlayerDetails);
+#ifdef _XBOX_ONE
+ if(!InputManager.IsPadLocked(i))
+ {
+ setControllerState(i, eControllerStatus_PressToJoin_LoggedIn);
+ }
+ else
+#endif
+ {
+ setControllerState(i, eControllerStatus_PlayerDetails);
+ }
+
m_labelDisplayName[i].setLabel(ProfileManager.GetDisplayName(i));
//m_buttonControllers[i].setLabel(app.GetString(IDS_TOOLTIPS_CONTINUE),i);
@@ -289,3 +290,53 @@ int UIScene_QuadrantSignin::AvatarReturned(LPVOID lpParam,PBYTE pbThumbnail,DWOR
return 0;
}
+
+void UIScene_QuadrantSignin::_initQuadrants()
+{
+ for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
+ {
+ m_iconRequested[i] = false;
+
+ m_labelPressToJoin[i].init(IDS_MUST_SIGN_IN_TITLE);
+ m_labelConnectController[i].init(L"");
+ m_labelAccountType[i].init(L"");
+
+ m_controllerStatus[i] = eControllerStatus_ConnectController;
+
+ if(ProfileManager.IsSignedIn(i))
+ {
+ app.DebugPrintf("Index %d is signed in\n", i);
+
+#ifdef _XBOX_ONE
+ if(!InputManager.IsPadLocked(i))
+ {
+ setControllerState(i, eControllerStatus_PressToJoin_LoggedIn);
+ }
+ else
+#endif
+ {
+ setControllerState(i, eControllerStatus_PlayerDetails);
+ }
+
+ m_labelDisplayName[i].init(ProfileManager.GetDisplayName(i));
+ }
+ else if(InputManager.IsPadConnected(i))
+ {
+ app.DebugPrintf("Index %d is not signed in\n", i);
+
+ setControllerState(i, eControllerStatus_PressToJoin);
+ m_labelDisplayName[i].init(L"");
+ }
+ else
+ {
+ app.DebugPrintf("Index %d is not connected\n", i);
+
+ setControllerState(i, eControllerStatus_ConnectController);
+ }
+ }
+}
+
+void UIScene_QuadrantSignin::handleReload()
+{
+ _initQuadrants();
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.h b/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.h
index b500fcc3..691bb199 100644
--- a/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.h
+++ b/Minecraft.Client/Common/UI/UIScene_QuadrantSignin.h
@@ -9,7 +9,9 @@ private:
{
eControllerStatus_ConnectController,
eControllerStatus_PressToJoin,
- eControllerStatus_PlayerDetails
+ eControllerStatus_PlayerDetails,
+ eControllerStatus_PressToJoin_LoggedIn,
+ eControllerStatus_PressToJoin_NoController,
};
bool m_bIgnoreInput;
@@ -98,7 +100,11 @@ public:
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
private:
+#ifdef _XBOX_ONE
+ static int SignInReturned(void *pParam,bool bContinue, int iPad, int iController);
+#else
static int SignInReturned(void *pParam,bool bContinue, int iPad);
+#endif
static int AvatarReturned(LPVOID lpParam,PBYTE pbThumbnail,DWORD dwThumbnailBytes);
void updateState();
@@ -107,4 +113,9 @@ private:
#ifdef _DURANGO
static void checkAllPrivilegesCallback(LPVOID lpParam, bool hasPrivileges, int iPad);
#endif
+
+protected:
+ void _initQuadrants();
+
+ virtual void handleReload();
};
diff --git a/Minecraft.Client/Common/UI/UIScene_SaveMessage.cpp b/Minecraft.Client/Common/UI/UIScene_SaveMessage.cpp
index a91d5aa8..b58f86fd 100644
--- a/Minecraft.Client/Common/UI/UIScene_SaveMessage.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_SaveMessage.cpp
@@ -156,10 +156,10 @@ void UIScene_SaveMessage::handleTimerComplete(int id)
app.SetOptionsCallbackStatus(0,C4JStorage::eOptions_Callback_Read_CorruptDeletePending);
m_bIgnoreInput=false;
// give the option to delete the save
- UINT uiIDA[1];
- uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_CORRUPT_FILE, IDS_CORRUPT_OPTIONS, uiIDA, 1,
- 0,&UIScene_SaveMessage::DeleteOptionsDialogReturned,this, app.GetStringTable());
+ UINT uiIDA[2];
+ uiIDA[0]=IDS_CORRUPT_OPTIONS_RETRY;
+ uiIDA[1]=IDS_CORRUPT_OPTIONS_DELETE;
+ ui.RequestErrorMessage(IDS_CORRUPT_FILE, IDS_CORRUPT_OPTIONS, uiIDA, 2, 0,&UIScene_SaveMessage::DeleteOptionsDialogReturned,this);
break;
}
#endif
@@ -173,10 +173,16 @@ void UIScene_SaveMessage::handleTimerComplete(int id)
int UIScene_SaveMessage::DeleteOptionsDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{
//UIScene_SaveMessage* pClass = (UIScene_SaveMessage*)pParam;
-
- // kick off the delete
- StorageManager.DeleteOptionsData(iPad);
-
+ if(result == C4JStorage::EMessage_ResultAccept)
+ {
+ // retry loading the options file
+ StorageManager.ReadFromProfile(iPad);
+ }
+ else // result == EMessage_ResultDecline
+ {
+ // kick off the delete
+ StorageManager.DeleteOptionsData(iPad);
+ }
return 0;
}
#endif
diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
index 1234121e..9bf3b983 100644
--- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp
@@ -1,11 +1,14 @@
#include "stdafx.h"
#include "UI.h"
#include "UIScene_SettingsGraphicsMenu.h"
+#include "..\..\Minecraft.h"
+#include "..\..\GameRenderer.h"
UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
{
// Setup all the Iggy references we need for this scene
initialiseMovie();
+ Minecraft* pMinecraft = Minecraft::GetInstance();
m_bNotInGame=(Minecraft::GetInstance()->level==NULL);
@@ -18,6 +21,9 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_GAMMA ),app.GetGameSettings(m_iPad,eGameSetting_Gamma));
m_sliderGamma.init(TempString,eControl_Gamma,0,100,app.GetGameSettings(m_iPad,eGameSetting_Gamma));
+
+ swprintf((WCHAR*)TempString, 256, L"FOV: %d%%", (int)pMinecraft->gameRenderer->GetFovVal());
+ m_sliderFOV.init(TempString, eControl_FOV, 70, 110, (int)pMinecraft->gameRenderer->GetFovVal());
swprintf( (WCHAR *)TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
m_sliderInterfaceOpacity.init(TempString,eControl_InterfaceOpacity,0,100,app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity));
@@ -141,6 +147,17 @@ void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentVal
m_sliderGamma.setLabel(TempString);
break;
+
+ case eControl_FOV:
+ {
+ Minecraft* pMinecraft = Minecraft::GetInstance();
+ pMinecraft->gameRenderer->SetFovVal((float)currentValue);
+ WCHAR TempString[256];
+ swprintf((WCHAR*)TempString, 256, L"FOV: %d%%", (int)currentValue);
+ m_sliderFOV.setLabel(TempString);
+ }
+ break;
+
case eControl_InterfaceOpacity:
m_sliderInterfaceOpacity.handleSliderMove(value);
diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h
index e9c4905c..c6e1e394 100644
--- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h
@@ -11,16 +11,18 @@ private:
eControl_BedrockFog,
eControl_CustomSkinAnim,
eControl_Gamma,
+ eControl_FOV,
eControl_InterfaceOpacity
};
UIControl_CheckBox m_checkboxClouds, m_checkboxBedrockFog, m_checkboxCustomSkinAnim; // Checkboxes
- UIControl_Slider m_sliderGamma, m_sliderInterfaceOpacity; // Sliders
+ UIControl_Slider m_sliderGamma, m_sliderFOV, m_sliderInterfaceOpacity; // Sliders
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_checkboxClouds, "Clouds")
UI_MAP_ELEMENT( m_checkboxBedrockFog, "BedrockFog")
UI_MAP_ELEMENT( m_checkboxCustomSkinAnim, "CustomSkinAnim")
UI_MAP_ELEMENT( m_sliderGamma, "Gamma")
+ UI_MAP_ELEMENT(m_sliderFOV, "FOV")
UI_MAP_ELEMENT( m_sliderInterfaceOpacity, "InterfaceOpacity")
UI_END_MAP_ELEMENTS_AND_NAMES()
diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsMenu.cpp
index 4ef7eb5d..39a0b7c6 100644
--- a/Minecraft.Client/Common/UI/UIScene_SettingsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_SettingsMenu.cpp
@@ -10,17 +10,17 @@ UIScene_SettingsMenu::UIScene_SettingsMenu(int iPad, void *initData, UILayer *pa
bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
- m_buttons[BUTTON_ALL_OPTIONS].init(app.GetString(IDS_OPTIONS),BUTTON_ALL_OPTIONS);
- m_buttons[BUTTON_ALL_AUDIO].init(app.GetString(IDS_AUDIO),BUTTON_ALL_AUDIO);
- m_buttons[BUTTON_ALL_CONTROL].init(app.GetString(IDS_CONTROL),BUTTON_ALL_CONTROL);
- m_buttons[BUTTON_ALL_GRAPHICS].init(app.GetString(IDS_GRAPHICS),BUTTON_ALL_GRAPHICS);
- m_buttons[BUTTON_ALL_UI].init(app.GetString(IDS_USER_INTERFACE),BUTTON_ALL_UI);
- m_buttons[BUTTON_ALL_RESETTODEFAULTS].init(app.GetString(IDS_RESET_TO_DEFAULTS),BUTTON_ALL_RESETTODEFAULTS);
+ m_buttons[BUTTON_ALL_OPTIONS].init(IDS_OPTIONS,BUTTON_ALL_OPTIONS);
+ m_buttons[BUTTON_ALL_AUDIO].init(IDS_AUDIO,BUTTON_ALL_AUDIO);
+ m_buttons[BUTTON_ALL_CONTROL].init(IDS_CONTROL,BUTTON_ALL_CONTROL);
+ m_buttons[BUTTON_ALL_GRAPHICS].init(IDS_GRAPHICS,BUTTON_ALL_GRAPHICS);
+ m_buttons[BUTTON_ALL_UI].init(IDS_USER_INTERFACE,BUTTON_ALL_UI);
+ m_buttons[BUTTON_ALL_RESETTODEFAULTS].init(IDS_RESET_TO_DEFAULTS,BUTTON_ALL_RESETTODEFAULTS);
if(ProfileManager.GetPrimaryPad()!=m_iPad)
{
- removeControl( &m_buttons[BUTTON_ALL_AUDIO], true);
- removeControl( &m_buttons[BUTTON_ALL_GRAPHICS], true);
+ removeControl( &m_buttons[BUTTON_ALL_AUDIO], bNotInGame);
+ removeControl( &m_buttons[BUTTON_ALL_GRAPHICS], bNotInGame);
}
doHorizontalResizeCheck();
@@ -51,10 +51,11 @@ wstring UIScene_SettingsMenu::getMoviePath()
void UIScene_SettingsMenu::handleReload()
{
+ bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
if(ProfileManager.GetPrimaryPad()!=m_iPad)
{
- removeControl( &m_buttons[BUTTON_ALL_AUDIO], true);
- removeControl( &m_buttons[BUTTON_ALL_GRAPHICS], true);
+ removeControl( &m_buttons[BUTTON_ALL_AUDIO], bNotInGame);
+ removeControl( &m_buttons[BUTTON_ALL_GRAPHICS], bNotInGame);
}
doHorizontalResizeCheck();
@@ -142,7 +143,7 @@ void UIScene_SettingsMenu::handlePress(F64 controlId, F64 childId)
uiIDA[0]=IDS_CONFIRM_CANCEL;
uiIDA[1]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_DEFAULTS_TITLE, IDS_DEFAULTS_TEXT, uiIDA, 2, m_iPad,&UIScene_SettingsMenu::ResetDefaultsDialogReturned,this, app.GetStringTable(), NULL, 0, false);
+ ui.RequestAlertMessage(IDS_DEFAULTS_TITLE, IDS_DEFAULTS_TEXT, uiIDA, 2, m_iPad,&UIScene_SettingsMenu::ResetDefaultsDialogReturned,this);
}
break;
}
diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.cpp
index 72576ded..6898d489 100644
--- a/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.cpp
@@ -2,6 +2,10 @@
#include "UI.h"
#include "UIScene_SettingsOptionsMenu.h"
+#if defined(_XBOX_ONE)
+#define _ENABLE_LANGUAGE_SELECT
+#endif
+
int UIScene_SettingsOptionsMenu::m_iDifficultySettingA[4]=
{
IDS_DIFFICULTY_PEACEFUL,
@@ -20,22 +24,24 @@ int UIScene_SettingsOptionsMenu::m_iDifficultyTitleSettingA[4]=
UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
{
+ m_bNavigateToLanguageSelector = false;
+
// Setup all the Iggy references we need for this scene
initialiseMovie();
m_bNotInGame=(Minecraft::GetInstance()->level==NULL);
- m_checkboxViewBob.init(app.GetString(IDS_VIEW_BOBBING),eControl_ViewBob,(app.GetGameSettings(m_iPad,eGameSetting_ViewBob)!=0));
- m_checkboxShowHints.init(app.GetString(IDS_HINTS),eControl_ShowHints,(app.GetGameSettings(m_iPad,eGameSetting_Hints)!=0));
- m_checkboxShowTooltips.init(app.GetString(IDS_IN_GAME_TOOLTIPS),eControl_ShowTooltips,(app.GetGameSettings(m_iPad,eGameSetting_Tooltips)!=0));
- m_checkboxInGameGamertags.init(app.GetString(IDS_IN_GAME_GAMERTAGS),eControl_InGameGamertags,(app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible)!=0));
+ m_checkboxViewBob.init(IDS_VIEW_BOBBING,eControl_ViewBob,(app.GetGameSettings(m_iPad,eGameSetting_ViewBob)!=0));
+ m_checkboxShowHints.init(IDS_HINTS,eControl_ShowHints,(app.GetGameSettings(m_iPad,eGameSetting_Hints)!=0));
+ m_checkboxShowTooltips.init(IDS_IN_GAME_TOOLTIPS,eControl_ShowTooltips,(app.GetGameSettings(m_iPad,eGameSetting_Tooltips)!=0));
+ m_checkboxInGameGamertags.init(IDS_IN_GAME_GAMERTAGS,eControl_InGameGamertags,(app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible)!=0));
// check if we should display the mash-up option
if(m_bNotInGame && app.GetMashupPackWorlds(m_iPad)!=0xFFFFFFFF)
{
// the mash-up option is needed
m_bMashUpWorldsUnhideOption=true;
- m_checkboxMashupWorlds.init(app.GetString(IDS_UNHIDE_MASHUP_WORLDS),eControl_ShowMashUpWorlds,false);
+ m_checkboxMashupWorlds.init(IDS_UNHIDE_MASHUP_WORLDS,eControl_ShowMashUpWorlds,false);
}
else
{
@@ -92,7 +98,6 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
bool bRemoveDifficulty=false;
bool bRemoveAutosave=false;
bool bRemoveInGameGamertags=false;
- float fRemoveHeight=0.0f,fWidth,fHeight;
bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
bool bPrimaryPlayer = ProfileManager.GetPrimaryPad()==m_iPad;
@@ -128,6 +133,22 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
removeControl(&m_checkboxInGameGamertags, true);
}
+ // 4J-JEV: Changing languages in-game will produce many a bug.
+ // MGH - disabled the language select for the patch build, we'll re-enable afterwards
+ // 4J Stu - Removed it with a preprocessor def as we turn this off in various places
+#ifdef _ENABLE_LANGUAGE_SELECT
+ if (app.GetGameStarted())
+ {
+ removeControl( &m_buttonLanguageSelect, false );
+ }
+ else
+ {
+ m_buttonLanguageSelect.init(IDS_LANGUAGE_SELECTOR, eControl_Languages);
+ }
+#else
+ removeControl( &m_buttonLanguageSelect, false );
+#endif
+
doHorizontalResizeCheck();
if(app.GetLocalPlayerCount()>1)
@@ -136,12 +157,26 @@ UIScene_SettingsOptionsMenu::UIScene_SettingsOptionsMenu(int iPad, void *initDat
app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad);
#endif
}
+
+ m_labelDifficultyText.disableReinitialisation();
}
UIScene_SettingsOptionsMenu::~UIScene_SettingsOptionsMenu()
{
}
+void UIScene_SettingsOptionsMenu::tick()
+{
+ UIScene::tick();
+
+ if (m_bNavigateToLanguageSelector)
+ {
+ m_bNavigateToLanguageSelector = false;
+ setGameSettings();
+ ui.NavigateToScene(m_iPad, eUIScene_LanguageSelector);
+ }
+}
+
wstring UIScene_SettingsOptionsMenu::getMoviePath()
{
if(app.GetLocalPlayerCount() > 1)
@@ -173,7 +208,6 @@ void UIScene_SettingsOptionsMenu::updateComponents()
if( app.GetLocalPlayerCount() == 1 ) m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,RenderManager.IsHiDef());
else m_parentLayer->showComponent(m_iPad,eUIComponent_Logo,false);
-
}
}
@@ -185,22 +219,7 @@ void UIScene_SettingsOptionsMenu::handleInput(int iPad, int key, bool repeat, bo
case ACTION_MENU_CANCEL:
if(pressed)
{
- // check the checkboxes
- app.SetGameSettings(m_iPad,eGameSetting_ViewBob,m_checkboxViewBob.IsChecked()?1:0);
- app.SetGameSettings(m_iPad,eGameSetting_GamertagsVisible,m_checkboxInGameGamertags.IsChecked()?1:0);
- app.SetGameSettings(m_iPad,eGameSetting_Hints,m_checkboxShowHints.IsChecked()?1:0);
- app.SetGameSettings(m_iPad,eGameSetting_Tooltips,m_checkboxShowTooltips.IsChecked()?1:0);
-
- // the mashup option will only be shown if some worlds have been previously hidden
- if(m_bMashUpWorldsUnhideOption && m_checkboxMashupWorlds.IsChecked())
- {
- // unhide all worlds
- app.EnableMashupPackWorlds(m_iPad);
- }
-
- // 4J-PB - don't action changes here or we might write to the profile on backing out here and then get a change in the settings all, and write again on backing out there
- //app.CheckGameSettingsChanged(true,pInputData->UserIndex);
-
+ setGameSettings();
navigateBack();
}
break;
@@ -219,9 +238,146 @@ void UIScene_SettingsOptionsMenu::handleInput(int iPad, int key, bool repeat, bo
}
}
+void UIScene_SettingsOptionsMenu::handlePress(F64 controlId, F64 childId)
+{
+ //CD - Added for audio
+ ui.PlayUISFX(eSFX_Press);
+
+ switch((int)controlId)
+ {
+ case eControl_Languages:
+ m_bNavigateToLanguageSelector = true;
+ break;
+ }
+}
+
+void UIScene_SettingsOptionsMenu::handleReload()
+{
+ m_bNavigateToLanguageSelector = false;
+
+ m_checkboxViewBob.init(IDS_VIEW_BOBBING,eControl_ViewBob,(app.GetGameSettings(m_iPad,eGameSetting_ViewBob)!=0));
+ m_checkboxShowHints.init(IDS_HINTS,eControl_ShowHints,(app.GetGameSettings(m_iPad,eGameSetting_Hints)!=0));
+ m_checkboxShowTooltips.init(IDS_IN_GAME_TOOLTIPS,eControl_ShowTooltips,(app.GetGameSettings(m_iPad,eGameSetting_Tooltips)!=0));
+ m_checkboxInGameGamertags.init(IDS_IN_GAME_GAMERTAGS,eControl_InGameGamertags,(app.GetGameSettings(m_iPad,eGameSetting_GamertagsVisible)!=0));
+
+ // check if we should display the mash-up option
+ if(m_bNotInGame && app.GetMashupPackWorlds(m_iPad)!=0xFFFFFFFF)
+ {
+ // the mash-up option is needed
+ m_bMashUpWorldsUnhideOption=true;
+ }
+ else
+ {
+ //m_checkboxMashupWorlds.init(L"",eControl_ShowMashUpWorlds,false);
+ removeControl(&m_checkboxMashupWorlds, true);
+ m_bMashUpWorldsUnhideOption=false;
+ }
+
+ unsigned char ucValue=app.GetGameSettings(m_iPad,eGameSetting_Autosave);
+
+ wchar_t autosaveLabels[9][256];
+ for(unsigned int i = 0; i < 9; ++i)
+ {
+ if(i==0)
+ {
+ swprintf( autosaveLabels[i], 256, L"%ls", app.GetString( IDS_SLIDER_AUTOSAVE_OFF ));
+ }
+ else
+ {
+ swprintf( autosaveLabels[i], 256, L"%ls: %d %ls", app.GetString( IDS_SLIDER_AUTOSAVE ),i*15, app.GetString( IDS_MINUTES ));
+ }
+
+ }
+ m_sliderAutosave.setAllPossibleLabels(9,autosaveLabels);
+ m_sliderAutosave.init(autosaveLabels[ucValue],eControl_Autosave,0,8,ucValue);
+
+#if defined(_XBOX_ONE) || defined(__ORBIS__)
+ removeControl(&m_sliderAutosave,true);
+#endif
+
+ ucValue = app.GetGameSettings(m_iPad,eGameSetting_Difficulty);
+
+ wchar_t difficultyLabels[4][256];
+ for(unsigned int i = 0; i < 4; ++i)
+ {
+ swprintf( difficultyLabels[i], 256, L"%ls: %ls", app.GetString( IDS_SLIDER_DIFFICULTY ),app.GetString(m_iDifficultyTitleSettingA[i]));
+ }
+ m_sliderDifficulty.setAllPossibleLabels(4,difficultyLabels);
+ m_sliderDifficulty.init(difficultyLabels[ucValue],eControl_Difficulty,0,3,ucValue);
+
+ wstring wsText=app.GetString(m_iDifficultySettingA[app.GetGameSettings(m_iPad,eGameSetting_Difficulty)]);
+ EHTMLFontSize size = eHTMLSize_Normal;
+ if(!RenderManager.IsHiDef() && !RenderManager.IsWidescreen())
+ {
+ size = eHTMLSize_Splitscreen;
+ }
+ wchar_t startTags[64];
+ swprintf(startTags,64,L"<font color=\"#%08x\">",app.GetHTMLColour(eHTMLColor_White));
+ wsText= startTags + wsText;
+
+ m_labelDifficultyText.init(wsText);
+
+
+ // If you are in-game, only the game host can change in-game gamertags, and you can't change difficulty
+ // only the primary player gets to change the autosave and difficulty settings
+ bool bRemoveDifficulty=false;
+ bool bRemoveAutosave=false;
+ bool bRemoveInGameGamertags=false;
+
+ bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
+ bool bPrimaryPlayer = ProfileManager.GetPrimaryPad()==m_iPad;
+ if(!bPrimaryPlayer)
+ {
+ bRemoveDifficulty=true;
+ bRemoveAutosave=true;
+ bRemoveInGameGamertags=true;
+ }
+
+ if(!bNotInGame) // in the game
+ {
+ bRemoveDifficulty=true;
+ if(!g_NetworkManager.IsHost())
+ {
+ bRemoveAutosave=true;
+ bRemoveInGameGamertags=true;
+ }
+ }
+ if(bRemoveDifficulty)
+ {
+ m_labelDifficultyText.setVisible( false );
+ removeControl(&m_sliderDifficulty, true);
+ }
+
+ if(bRemoveAutosave)
+ {
+ removeControl(&m_sliderAutosave, true);
+ }
+
+ if(bRemoveInGameGamertags)
+ {
+ removeControl(&m_checkboxInGameGamertags, true);
+ }
+
+ // MGH - disabled the language select for the patch build, we'll re-enable afterwards
+ // 4J Stu - Removed it with a preprocessor def as we turn this off in various places
+#ifdef _ENABLE_LANGUAGE_SELECT
+ // 4J-JEV: Changing languages in-game will produce many a bug.
+ if (app.GetGameStarted())
+ {
+ removeControl( &m_buttonLanguageSelect, false );
+ }
+ else
+ {
+ }
+#else
+ removeControl( &m_buttonLanguageSelect, false );
+#endif
+
+ doHorizontalResizeCheck();
+}
+
void UIScene_SettingsOptionsMenu::handleSliderMove(F64 sliderId, F64 currentValue)
{
- WCHAR TempString[256];
int value = (int)currentValue;
switch((int)sliderId)
{
@@ -251,3 +407,22 @@ void UIScene_SettingsOptionsMenu::handleSliderMove(F64 sliderId, F64 currentValu
break;
}
}
+
+void UIScene_SettingsOptionsMenu::setGameSettings()
+{
+ // check the checkboxes
+ app.SetGameSettings(m_iPad,eGameSetting_ViewBob,m_checkboxViewBob.IsChecked()?1:0);
+ app.SetGameSettings(m_iPad,eGameSetting_GamertagsVisible,m_checkboxInGameGamertags.IsChecked()?1:0);
+ app.SetGameSettings(m_iPad,eGameSetting_Hints,m_checkboxShowHints.IsChecked()?1:0);
+ app.SetGameSettings(m_iPad,eGameSetting_Tooltips,m_checkboxShowTooltips.IsChecked()?1:0);
+
+ // the mashup option will only be shown if some worlds have been previously hidden
+ if(m_bMashUpWorldsUnhideOption && m_checkboxMashupWorlds.IsChecked())
+ {
+ // unhide all worlds
+ app.EnableMashupPackWorlds(m_iPad);
+ }
+
+ // 4J-PB - don't action changes here or we might write to the profile on backing out here and then get a change in the settings all, and write again on backing out there
+ //app.CheckGameSettingsChanged(true,pInputData->UserIndex);
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.h b/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.h
index 265a0790..e9abb0a9 100644
--- a/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_SettingsOptionsMenu.h
@@ -13,6 +13,7 @@ private:
eControl_InGameGamertags,
eControl_ShowMashUpWorlds,
eControl_Autosave,
+ eControl_Languages,
eControl_Difficulty
};
protected:
@@ -23,6 +24,8 @@ private:
UIControl_CheckBox m_checkboxViewBob, m_checkboxShowHints, m_checkboxShowTooltips, m_checkboxInGameGamertags, m_checkboxMashupWorlds; // Checkboxes
UIControl_Slider m_sliderAutosave, m_sliderDifficulty; // Sliders
UIControl_Label m_labelDifficultyText; //Text
+ UIControl_Button m_buttonLanguageSelect;
+
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_checkboxViewBob, "ViewBob")
UI_MAP_ELEMENT( m_checkboxShowHints, "ShowHints")
@@ -32,16 +35,21 @@ private:
UI_MAP_ELEMENT( m_sliderAutosave, "Autosave")
UI_MAP_ELEMENT( m_sliderDifficulty, "Difficulty")
UI_MAP_ELEMENT( m_labelDifficultyText, "DifficultyText")
+ UI_MAP_ELEMENT( m_buttonLanguageSelect, "Languages")
UI_END_MAP_ELEMENTS_AND_NAMES()
bool m_bNotInGame;
bool m_bMashUpWorldsUnhideOption;
+ bool m_bNavigateToLanguageSelector;
+
public:
UIScene_SettingsOptionsMenu(int iPad, void *initData, UILayer *parentLayer);
virtual ~UIScene_SettingsOptionsMenu();
virtual EUIScene getSceneType() { return eUIScene_SettingsOptionsMenu;}
+ virtual void tick();
+
virtual void updateTooltips();
virtual void updateComponents();
@@ -52,6 +60,13 @@ protected:
public:
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
+ virtual void handlePress(F64 controlId, F64 childId);
+
+ virtual void handleReload();
virtual void handleSliderMove(F64 sliderId, F64 currentValue);
+
+protected:
+ void setGameSettings();
+
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.cpp
index 33f41994..d4f26ae7 100644
--- a/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.cpp
@@ -222,170 +222,7 @@ void UIScene_SkinSelectMenu::handleInput(int iPad, int key, bool repeat, bool pr
#endif
if(pressed)
{
- ui.AnimateKeyPress(iPad, key, repeat, pressed, released);
- // if the profile data has been changed, then force a profile write
- // It seems we're allowed to break the 5 minute rule if it's the result of a user action
- switch(m_packIndex)
- {
- case SKIN_SELECT_PACK_DEFAULT:
- app.SetPlayerSkin(iPad, m_skinIndex);
- app.SetPlayerCape(iPad, 0);
- m_currentSkinPath = app.GetPlayerSkinName(iPad);
- m_originalSkinId = app.GetPlayerSkinId(iPad);
- setCharacterSelected(true);
- ui.PlayUISFX(eSFX_Press);
- break;
- case SKIN_SELECT_PACK_FAVORITES:
- if(app.GetPlayerFavoriteSkinsCount(iPad)>0)
- {
- // get the pack number from the skin id
- wchar_t chars[256];
- swprintf(chars, 256, L"dlcskin%08d.png", app.GetPlayerFavoriteSkin(iPad,m_skinIndex));
-
- DLCPack *Pack=app.m_dlcManager.getPackContainingSkin(chars);
-
- if(Pack)
- {
- DLCSkinFile *skinFile = Pack->getSkinFile(chars);
- app.SetPlayerSkin(iPad, skinFile->getPath());
- app.SetPlayerCape(iPad, skinFile->getParameterAsString(DLCManager::e_DLCParamType_Cape));
- setCharacterSelected(true);
- m_currentSkinPath = app.GetPlayerSkinName(iPad);
- m_originalSkinId = app.GetPlayerSkinId(iPad);
- app.SetPlayerFavoriteSkinsPos(iPad,m_skinIndex);
- }
- }
- break;
- default:
- if( m_currentPack != NULL )
- {
- DLCSkinFile *skinFile = m_currentPack->getSkinFile(m_skinIndex);
-
- if ( !skinFile->getParameterAsBool( DLCManager::e_DLCParamType_Free ) // Is this a free skin?
- && !m_currentPack->hasPurchasedFile( DLCManager::e_DLCType_Skin, skinFile->getPath() ) // do we have a license?
- )
- {
- // 4J-PB - check for a patch
-#ifdef __ORBIS__
- // 4J-PB - Check if there is a patch for the game
- int errorCode = ProfileManager.getNPAvailability(ProfileManager.GetPrimaryPad());
-
- bool bPatchAvailable;
- switch(errorCode)
- {
- case SCE_NP_ERROR_LATEST_PATCH_PKG_EXIST:
- case SCE_NP_ERROR_LATEST_PATCH_PKG_DOWNLOADED:
- bPatchAvailable=true;
- break;
- default:
- bPatchAvailable=false;
- break;
- }
-
- if(bPatchAvailable)
- {
- int32_t ret=sceErrorDialogInitialize();
- m_bErrorDialogRunning=true;
- if ( ret==SCE_OK )
- {
- SceErrorDialogParam param;
- sceErrorDialogParamInitialize( &param );
- // 4J-PB - We want to display the option to get the patch now
- param.errorCode = SCE_NP_ERROR_LATEST_PATCH_PKG_DOWNLOADED;//pClass->m_errorCode;
- ret = sceUserServiceGetInitialUser( &param.userId );
- if ( ret == SCE_OK )
- {
- ret=sceErrorDialogOpen( &param );
- break;
- }
- }
- }
-#endif
-
- // no
- UINT uiIDA[1] = { IDS_OK };
-#ifdef __ORBIS__
- // Check if PSN is unavailable because of age restriction
- int npAvailability = ProfileManager.getNPAvailability(iPad);
- if (npAvailability == SCE_NP_ERROR_AGE_RESTRICTION)
- {
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable());
- }
- else
-#endif
- // We need to upsell the full version
- if(ProfileManager.IsGuest(iPad))
- {
- // can't buy
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1,iPad,NULL,NULL,app.GetStringTable(),NULL,0,false);
- }
- // are we online?
- else if(!ProfileManager.IsSignedInLive(iPad))
- {
- showNotOnlineDialog(iPad);
- }
- else
- {
- // upsell
-#ifdef _XBOX
- DLC_INFO *pDLCInfo = app.GetDLCInfoForTrialOfferID(m_currentPack->getPurchaseOfferId());
- ULONGLONG ullOfferID_Full;
-
- if(pDLCInfo!=NULL)
- {
- ullOfferID_Full=pDLCInfo->ullOfferID_Full;
- }
- else
- {
- ullOfferID_Full=m_currentPack->getPurchaseOfferId();
- }
-
- // tell sentient about the upsell of the full version of the skin pack
- TelemetryManager->RecordUpsellPresented(iPad, eSet_UpsellID_Skin_DLC, ullOfferID_Full & 0xFFFFFFFF);
-#endif
- bool bContentRestricted=false;
-#if defined(__PS3__) || defined(__PSVITA__)
- ProfileManager.GetChatAndContentRestrictions(m_iPad,true,NULL,&bContentRestricted,NULL);
-#endif
- if(bContentRestricted)
- {
-#if !(defined(_XBOX) || defined(_WIN64)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
- // you can't see the store
- UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad,NULL,this, app.GetStringTable(),NULL,0,false);
-#endif
- }
- else
- {
- // 4J-PB - need to check for an empty store
-#if defined __ORBIS__ || defined __PSVITA__ || defined __PS3__
- if(app.CheckForEmptyStore(iPad)==false)
-#endif
- {
- this->m_bIgnoreInput = true;
-
- UINT uiIDA[2] = { IDS_CONFIRM_OK, IDS_CONFIRM_CANCEL };
- ui.RequestMessageBox(IDS_UNLOCK_DLC_TITLE, IDS_UNLOCK_DLC_SKIN, uiIDA, 2, iPad,&UIScene_SkinSelectMenu::UnlockSkinReturned,this,app.GetStringTable(),NULL,0,false);
- }
- }
- }
- }
- else
- {
- app.SetPlayerSkin(iPad, skinFile->getPath());
- app.SetPlayerCape(iPad, skinFile->getParameterAsString(DLCManager::e_DLCParamType_Cape));
- setCharacterSelected(true);
- m_currentSkinPath = app.GetPlayerSkinName(iPad);
- m_originalSkinId = app.GetPlayerSkinId(iPad);
-
- // push this onto the favorite list
- AddFavoriteSkin(iPad,GET_DLC_SKIN_ID_FROM_BITMASK(m_originalSkinId));
- }
- }
-
- ui.PlayUISFX(eSFX_Press);
- break;
- }
+ InputActionOK(iPad);
}
break;
case ACTION_MENU_UP:
@@ -614,17 +451,62 @@ void UIScene_SkinSelectMenu::InputActionOK(unsigned int iPad)
//if(true)
if(!m_currentPack->hasPurchasedFile( DLCManager::e_DLCType_Skin, skinFile->getPath() ))
{
+#ifdef __ORBIS__
+ // 4J-PB - Check if there is a patch for the game
+ int errorCode = ProfileManager.getNPAvailability(ProfileManager.GetPrimaryPad());
+
+ bool bPatchAvailable;
+ switch(errorCode)
+ {
+ case SCE_NP_ERROR_LATEST_PATCH_PKG_EXIST:
+ case SCE_NP_ERROR_LATEST_PATCH_PKG_DOWNLOADED:
+ bPatchAvailable=true;
+ break;
+ default:
+ bPatchAvailable=false;
+ break;
+ }
+
+ if(bPatchAvailable)
+ {
+ int32_t ret=sceErrorDialogInitialize();
+ m_bErrorDialogRunning=true;
+ if ( ret==SCE_OK )
+ {
+ SceErrorDialogParam param;
+ sceErrorDialogParamInitialize( &param );
+ // 4J-PB - We want to display the option to get the patch now
+ param.errorCode = SCE_NP_ERROR_LATEST_PATCH_PKG_DOWNLOADED;//pClass->m_errorCode;
+ ret = sceUserServiceGetInitialUser( &param.userId );
+ if ( ret == SCE_OK )
+ {
+ ret=sceErrorDialogOpen( &param );
+ break;
+ }
+ }
+ }
+#endif
+
// no
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
+#ifdef __ORBIS__
+ // Check if PSN is unavailable because of age restriction
+ int npAvailability = ProfileManager.getNPAvailability(iPad);
+ if (npAvailability == SCE_NP_ERROR_AGE_RESTRICTION)
+ {
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
+ }
+ else
+#endif
// We need to upsell the full version
if(ProfileManager.IsGuest(iPad))
{
// can't buy
- ui.RequestMessageBox(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1,iPad,NULL,NULL,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_PRO_GUESTPROFILE_TITLE, IDS_PRO_GUESTPROFILE_TEXT, uiIDA, 1,iPad);
}
-#if defined(__PS3__) || defined(__ORBIS__)
+#if defined(__PS3__) || defined(__ORBIS__) || defined __PSVITA__
// are we online?
else if(!ProfileManager.IsSignedInLive(iPad))
{
@@ -656,11 +538,11 @@ void UIScene_SkinSelectMenu::InputActionOK(unsigned int iPad)
#endif
if(bContentRestricted)
{
-#if !(defined(_XBOX) || defined(_WIN64)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
+#if !(defined(_XBOX) || defined(_WINDOWS64) || defined(_XBOX_ONE)) // 4J Stu - Temp to get the win build running, but so we check this for other platforms
// you can't see the store
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,this, app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, iPad);
#endif
}
else
@@ -674,7 +556,7 @@ void UIScene_SkinSelectMenu::InputActionOK(unsigned int iPad)
renableInputAfterOperation = false;
UINT uiIDA[2] = { IDS_CONFIRM_OK, IDS_CONFIRM_CANCEL };
- ui.RequestMessageBox(IDS_UNLOCK_DLC_TITLE, IDS_UNLOCK_DLC_SKIN, uiIDA, 2, iPad,&UIScene_SkinSelectMenu::UnlockSkinReturned,this,app.GetStringTable(),NULL,0,false);
+ ui.RequestAlertMessage(IDS_UNLOCK_DLC_TITLE, IDS_UNLOCK_DLC_SKIN, uiIDA, 2, iPad,&UIScene_SkinSelectMenu::UnlockSkinReturned,this);
}
}
}
@@ -703,7 +585,10 @@ void UIScene_SkinSelectMenu::InputActionOK(unsigned int iPad)
AddFavoriteSkin(iPad,GET_DLC_SKIN_ID_FROM_BITMASK(m_originalSkinId));
}
- if (renableInputAfterOperation) m_bIgnoreInput = false;
+ if (renableInputAfterOperation)
+ {
+ m_bIgnoreInput = false;
+ }
}
ui.PlayUISFX(eSFX_Press);
@@ -1652,7 +1537,18 @@ void UIScene_SkinSelectMenu::showNotOnlineDialog(int iPad)
SQRNetworkManager_PS3::AttemptPSNSignIn(NULL, this);
#elif defined(__PSVITA__)
- SQRNetworkManager_Vita::AttemptPSNSignIn(NULL, this);
+ if(CGameNetworkManager::usingAdhocMode() && SQRNetworkManager_AdHoc_Vita::GetAdhocStatus())
+ {
+ // we're in adhoc mode, we really need to ask before disconnecting
+ UINT uiIDA[2];
+ uiIDA[0]=IDS_PRO_NOTONLINE_ACCEPT;
+ uiIDA[1]=IDS_CANCEL;
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_NOTONLINE_TEXT, uiIDA, 2, ProfileManager.GetPrimaryPad(),&UIScene_SkinSelectMenu::MustSignInReturned,NULL);
+ }
+ else
+ {
+ SQRNetworkManager_Vita::AttemptPSNSignIn(NULL, this);
+ }
#elif defined(__ORBIS__)
SQRNetworkManager_Orbis::AttemptPSNSignIn(NULL, this, false, iPad);
@@ -1660,7 +1556,7 @@ void UIScene_SkinSelectMenu::showNotOnlineDialog(int iPad)
#elif defined(_DURANGO)
UINT uiIDA[1] = { IDS_CONFIRM_OK };
- ui.RequestMessageBox(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad, NULL, NULL, app.GetStringTable() );
+ ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad );
#endif
}
@@ -1723,9 +1619,9 @@ int UIScene_SkinSelectMenu::UnlockSkinReturned(void *pParam,int iPad,C4JStorage:
app.Checkout(chSkuID);
}
}
- // need to re-enable input because the user can back out of the store purchase, and we'll be stuck
- pScene->m_bIgnoreInput = false;
}
+ // need to re-enable input because the user can back out of the store purchase, and we'll be stuck
+ pScene->m_bIgnoreInput = false; // MGH - moved this to outside the pSONYDLCInfo, so we don't get stuck
#elif defined _XBOX_ONE
StorageManager.InstallOffer(1,(WCHAR *)(pScene->m_currentPack->getPurchaseOfferId().c_str()), &RenableInput, pScene, NULL);
#endif
@@ -1810,4 +1706,32 @@ void UIScene_SkinSelectMenu::HandleDLCLicenseChange()
// update the lock flag
handleSkinIndexChanged();
}
-#endif \ No newline at end of file
+#endif
+
+
+
+
+#ifdef __PSVITA__
+int UIScene_SkinSelectMenu::MustSignInReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
+{
+ if(result==C4JStorage::EMessage_ResultAccept)
+ {
+#ifdef __PS3__
+ SQRNetworkManager_PS3::AttemptPSNSignIn(&UIScene_SkinSelectMenu::PSNSignInReturned, pParam,true);
+#elif defined __PSVITA__
+ SQRNetworkManager_Vita::AttemptPSNSignIn(&UIScene_SkinSelectMenu::PSNSignInReturned, pParam,true);
+#elif defined __ORBIS__
+ SQRNetworkManager_Orbis::AttemptPSNSignIn(&UIScene_SkinSelectMenu::PSNSignInReturned, pParam,true);
+#endif
+ }
+ return 0;
+}
+
+int UIScene_SkinSelectMenu::PSNSignInReturned(void* pParam, bool bContinue, int iPad)
+{
+ if( bContinue )
+ {
+ }
+ return 0;
+}
+#endif // __PSVITA__ \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h b/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h
index c9ed6691..e8d76096 100644
--- a/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_SkinSelectMenu.h
@@ -184,6 +184,12 @@ private:
#endif
#ifdef __PSVITA__
+ static int MustSignInReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
+ static int PSNSignInReturned(void* pParam, bool bContinue, int iPad);
+#endif
+
+
+#ifdef __PSVITA__
CRITICAL_SECTION m_DLCInstallCS; // to prevent a race condition between the install and the mounted callback
#endif
};
diff --git a/Minecraft.Client/Common/UI/UIScene_Timer.cpp b/Minecraft.Client/Common/UI/UIScene_Timer.cpp
index 61586e87..3dec20a3 100644
--- a/Minecraft.Client/Common/UI/UIScene_Timer.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_Timer.cpp
@@ -20,7 +20,7 @@ wstring UIScene_Timer::getMoviePath()
return L"Timer";
}
-void UIScene_Timer::reloadMovie()
+void UIScene_Timer::reloadMovie(bool force)
{
// Never needs reloaded
}
diff --git a/Minecraft.Client/Common/UI/UIScene_Timer.h b/Minecraft.Client/Common/UI/UIScene_Timer.h
index 5a75103a..ef6aae94 100644
--- a/Minecraft.Client/Common/UI/UIScene_Timer.h
+++ b/Minecraft.Client/Common/UI/UIScene_Timer.h
@@ -20,7 +20,7 @@ public:
// Returns true if lower scenes in this scenes layer, or in any layer below this scenes layers should be hidden
virtual bool hidesLowerScenes() { return true; }
- virtual void reloadMovie();
+ virtual void reloadMovie(bool force);
virtual bool needsReloaded();
protected:
diff --git a/Minecraft.Client/Common/UI/UIScene_TradingMenu.cpp b/Minecraft.Client/Common/UI/UIScene_TradingMenu.cpp
index dc2bac48..0a35c8e5 100644
--- a/Minecraft.Client/Common/UI/UIScene_TradingMenu.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_TradingMenu.cpp
@@ -1,6 +1,7 @@
#include "stdafx.h"
#include "UI.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.item.trading.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.level.tile.entity.h"
#include "MultiPlayerLocalPlayer.h"
@@ -118,6 +119,15 @@ void UIScene_TradingMenu::handleReload()
m_slotListInventory.addSlots(MerchantMenu::INV_SLOT_START, 27);
m_slotListHotbar.addSlots(MerchantMenu::USE_ROW_SLOT_START, 9);
+
+ updateDisplay();
+
+ IggyDataValue result;
+ IggyDataValue value[1];
+
+ value[0].type = IGGY_DATATYPE_number;
+ value[0].number = m_selectedSlot;
+ IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetActiveSlot , 1 , value );
}
void UIScene_TradingMenu::tick()
@@ -253,16 +263,33 @@ void UIScene_TradingMenu::setTradeRedBox(int index, bool show)
m_slotListTrades.showSlotRedBox(index,show);
}
-void UIScene_TradingMenu::setOfferDescription(const wstring &name, vector<wstring> &unformattedStrings)
+void UIScene_TradingMenu::setOfferDescription(vector<HtmlString> *description)
{
+ wstring descriptionStr = HtmlString::Compose(description);
+
IggyDataValue result;
IggyDataValue value[1];
IggyStringUTF16 stringVal;
- stringVal.string = (IggyUTF16*)name.c_str();
- stringVal.length = name.length();
+ stringVal.string = (IggyUTF16*)descriptionStr.c_str();
+ stringVal.length = descriptionStr.length();
value[0].type = IGGY_DATATYPE_string_UTF16;
value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSetOfferDescription , 1 , value );
}
+
+void UIScene_TradingMenu::HandleMessage(EUIMessage message, void *data)
+{
+ switch(message)
+ {
+ case eUIMessage_InventoryUpdated:
+ handleInventoryUpdated(data);
+ break;
+ };
+}
+
+void UIScene_TradingMenu::handleInventoryUpdated(LPVOID data)
+{
+ HandleInventoryUpdated();
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_TradingMenu.h b/Minecraft.Client/Common/UI/UIScene_TradingMenu.h
index 08263a1c..a22ba0cf 100644
--- a/Minecraft.Client/Common/UI/UIScene_TradingMenu.h
+++ b/Minecraft.Client/Common/UI/UIScene_TradingMenu.h
@@ -23,7 +23,7 @@ protected:
UIControl_Label m_labelTrading, m_labelRequired;
UIControl_Label m_labelRequest1, m_labelRequest2;
- IggyName m_funcMoveSelector, m_funcShowScrollRightArrow, m_funcShowScrollLeftArrow, m_funcSetOfferDescription;
+ IggyName m_funcMoveSelector, m_funcShowScrollRightArrow, m_funcShowScrollLeftArrow, m_funcSetOfferDescription, m_funcSetActiveSlot;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_controlMainPanel, "MainPanel" )
@@ -48,6 +48,7 @@ protected:
UI_MAP_NAME(m_funcShowScrollRightArrow, L"ShowScrollRightArrow")
UI_MAP_NAME(m_funcShowScrollLeftArrow, L"ShowScrollLeftArrow")
UI_MAP_NAME(m_funcSetOfferDescription, L"SetOfferDescription")
+ UI_MAP_NAME(m_funcSetActiveSlot, L"SetSelectorSlot")
UI_END_MAP_ELEMENTS_AND_NAMES()
virtual wstring getMoviePath();
@@ -72,7 +73,10 @@ protected:
virtual void setRequest2RedBox(bool show);
virtual void setTradeRedBox(int index, bool show);
- virtual void setOfferDescription(const wstring &name, vector<wstring> &unformattedStrings);
+ virtual void setOfferDescription(vector<HtmlString> *description);
+
+ virtual void HandleMessage(EUIMessage message, void *data);
+ void handleInventoryUpdated(LPVOID data);
int getPad() { return m_iPad; }
}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIScene_TrialExitUpsell.cpp b/Minecraft.Client/Common/UI/UIScene_TrialExitUpsell.cpp
index b395bc4c..9ef8f189 100644
--- a/Minecraft.Client/Common/UI/UIScene_TrialExitUpsell.cpp
+++ b/Minecraft.Client/Common/UI/UIScene_TrialExitUpsell.cpp
@@ -55,7 +55,7 @@ void UIScene_TrialExitUpsell::handleInput(int iPad, int key, bool repeat, bool p
{
UINT uiIDA[1];
uiIDA[0]=IDS_CONFIRM_OK;
- ui.RequestMessageBox(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad(),NULL,this, app.GetStringTable());
+ ui.RequestErrorMessage(IDS_ONLINE_SERVICE_TITLE, IDS_CONTENT_RESTRICTION, uiIDA, 1, ProfileManager.GetPrimaryPad());
}
else
#endif
diff --git a/Minecraft.Client/Common/UI/UIString.cpp b/Minecraft.Client/Common/UI/UIString.cpp
new file mode 100644
index 00000000..288fa87a
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIString.cpp
@@ -0,0 +1,176 @@
+#include "stdafx.h"
+
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+
+#include "UIString.h"
+
+bool UIString::setCurrentLanguage()
+{
+ int nextLanguage, nextLocale;
+ nextLanguage = XGetLanguage();
+ nextLocale = XGetLocale();
+
+ if ( (nextLanguage != s_currentLanguage) || (nextLocale != s_currentLocale) )
+ {
+ s_currentLanguage = nextLanguage;
+ s_currentLocale = nextLocale;
+ return true;
+ }
+
+ return false;
+}
+
+int UIString::getCurrentLanguage()
+{
+ return s_currentLanguage;
+}
+
+UIString::UIStringCore::UIStringCore(StringBuilder wstrBuilder)
+{
+ m_bIsConstant = false;
+
+ m_lastSetLanguage = m_lastSetLocale = -1;
+ m_lastUpdatedLanguage = m_lastUpdatedLocale = -1;
+
+ m_fStringBuilder = wstrBuilder;
+
+ m_wstrCache = L"";
+ update(true);
+}
+
+UIString::UIStringCore::UIStringCore(const wstring &str)
+{
+ m_bIsConstant = true;
+
+ m_lastSetLanguage = m_lastSetLocale = -1;
+ m_lastUpdatedLanguage = m_lastUpdatedLocale = -1;
+
+ m_wstrCache = str;
+}
+
+wstring &UIString::UIStringCore::getString()
+{
+ if (hasNewString()) update(true);
+ return m_wstrCache;
+}
+
+bool UIString::UIStringCore::hasNewString()
+{
+ if (m_bIsConstant) return false;
+ return (m_lastSetLanguage != s_currentLanguage) || (m_lastSetLocale != s_currentLocale);
+}
+
+bool UIString::UIStringCore::update(bool force)
+{
+ if ( !m_bIsConstant && (force || hasNewString()) )
+ {
+ m_wstrCache = m_fStringBuilder();
+ m_lastSetLanguage = s_currentLanguage;
+ m_lastSetLocale = s_currentLocale;
+ return true;
+ }
+ return false;
+}
+
+bool UIString::UIStringCore::needsUpdating()
+{
+ if (m_bIsConstant) return false;
+ return (m_lastSetLanguage != s_currentLanguage) || (m_lastUpdatedLanguage != m_lastSetLanguage)
+ || (m_lastSetLocale != s_currentLocale) || (m_lastUpdatedLocale != m_lastSetLocale);
+}
+
+void UIString::UIStringCore::setUpdated()
+{
+ m_lastUpdatedLanguage = m_lastSetLanguage;
+ m_lastUpdatedLocale = m_lastSetLocale;
+}
+
+int UIString::s_currentLanguage = -1;
+int UIString::s_currentLocale = -1;
+
+UIString::UIString()
+{
+ m_core = shared_ptr<UIStringCore>();
+}
+
+UIString::UIString(int ids)
+{
+#ifdef __PS3__
+ StringBuilder builder = StringBuilder( new IdsStringBuilder(ids) );
+#else
+ StringBuilder builder = [ids](){ return app.GetString(ids); };
+#endif
+ UIStringCore *core = new UIStringCore( builder );
+ m_core = shared_ptr<UIStringCore>(core);
+}
+
+UIString::UIString(StringBuilder wstrBuilder)
+{
+ UIStringCore *core = new UIStringCore(wstrBuilder);
+ m_core = shared_ptr<UIStringCore>(core);
+}
+
+UIString::UIString(const string &constant)
+{
+ wstring wstr = convStringToWstring(constant);
+ UIStringCore *core = new UIStringCore( wstr );
+ m_core = shared_ptr<UIStringCore>(core);
+}
+
+UIString::UIString(const wstring &constant)
+{
+ UIStringCore *core = new UIStringCore(constant);
+ m_core = shared_ptr<UIStringCore>(core);
+}
+
+UIString::UIString(const wchar_t *constant)
+{
+ wstring str = wstring(constant);
+ UIStringCore *core = new UIStringCore(str);
+ m_core = shared_ptr<UIStringCore>(core);
+}
+
+UIString::~UIString()
+{
+#ifndef __PS3__
+ m_core = nullptr;
+#endif
+}
+
+bool UIString::empty()
+{
+ return m_core.get() == NULL;
+}
+
+bool UIString::compare(const UIString &uiString)
+{
+ return m_core.get() != uiString.m_core.get();
+}
+
+bool UIString::needsUpdating()
+{
+ if (m_core != NULL) return m_core->needsUpdating();
+ else return false;
+}
+
+void UIString::setUpdated()
+{
+ if (m_core != NULL) m_core->setUpdated();
+}
+
+wstring &UIString::getString()
+{
+ static wstring blank(L"");
+ if (m_core != NULL) return m_core->getString();
+ else return blank;
+}
+
+const wchar_t *UIString::c_str()
+{
+ return getString().c_str();
+}
+
+unsigned int UIString::length()
+{
+ return getString().length();
+} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIString.h b/Minecraft.Client/Common/UI/UIString.h
new file mode 100644
index 00000000..29e5a068
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIString.h
@@ -0,0 +1,103 @@
+#pragma once
+
+#include <set>
+#include <functional>
+
+
+#ifndef __PS3__
+
+typedef function<wstring(void)> StringBuilder;
+
+#else
+
+class StringBuilderCore
+{
+public:
+ virtual wstring getString() = 0;
+};
+
+struct StringBuilder
+{
+ shared_ptr<StringBuilderCore> m_coreBuilder;
+ virtual wstring operator()() { return m_coreBuilder->getString(); }
+ StringBuilder() {}
+ StringBuilder(StringBuilderCore *core) { m_coreBuilder = shared_ptr<StringBuilderCore>(core); }
+};
+
+class IdsStringBuilder : public StringBuilderCore
+{
+ const int m_ids;
+public:
+ IdsStringBuilder(int ids) : m_ids(ids) {}
+ virtual wstring getString(void) { return app.GetString(m_ids); }
+};
+#endif
+
+using namespace std;
+
+class UIString
+{
+protected:
+ static int s_currentLanguage;
+ static int s_currentLocale;
+
+public:
+ static bool setCurrentLanguage();
+ static int getCurrentLanguage();
+
+protected:
+ class UIStringCore : public enable_shared_from_this<UIStringCore>
+ {
+ private:
+ int m_lastSetLanguage;
+ int m_lastSetLocale;
+
+ int m_lastUpdatedLanguage;
+ int m_lastUpdatedLocale;
+
+ wstring m_wstrCache;
+
+ bool m_bIsConstant;
+
+ StringBuilder m_fStringBuilder;
+
+ public:
+ UIStringCore(StringBuilder wstrBuilder);
+ UIStringCore(const wstring &str);
+
+ wstring &getString();
+
+ bool hasNewString();
+ bool update(bool force);
+
+ bool needsUpdating();
+ void setUpdated();
+ };
+
+ shared_ptr<UIStringCore> m_core;
+
+public:
+ UIString();
+
+ UIString(int ids); // Create a dynamic UI string from a string id value.
+
+ UIString(StringBuilder wstrBuilder); // Create a dynamic UI string with a custom update function.
+
+ // Create a UIString with a constant value.
+ UIString(const string &constant);
+ UIString(const wstring &constant);
+ UIString(const wchar_t *constant);
+
+ ~UIString();
+
+ bool empty();
+ bool compare(const UIString &uiString);
+
+ bool needsUpdating(); // Language has been change since the last time setUpdated was called.
+ void setUpdated(); // The new text has been used.
+
+ wstring &getString();
+
+ const wchar_t *c_str();
+ unsigned int length();
+}; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UIStructs.h b/Minecraft.Client/Common/UI/UIStructs.h
index 2dd03c8c..c41f2276 100644
--- a/Minecraft.Client/Common/UI/UIStructs.h
+++ b/Minecraft.Client/Common/UI/UIStructs.h
@@ -13,6 +13,10 @@ class SignTileEntity;
class LevelGenerationOptions;
class LocalPlayer;
class Merchant;
+class EntityHorse;
+class BeaconTileEntity;
+class Slot;
+class AbstractContainerMenu;
// 4J Stu - Structs shared by Iggy and Xui scenes.
typedef struct _UIVec2D
@@ -74,7 +78,9 @@ typedef struct _EnchantingScreenInput
int z;
int iPad;
bool bSplitscreen;
-} EnchantingScreenInput;
+ wstring name;
+}
+EnchantingScreenInput;
// Furnace
typedef struct _FurnaceScreenInput
@@ -98,6 +104,18 @@ typedef struct _CraftingPanelScreenInput
}
CraftingPanelScreenInput;
+// Fireworks
+typedef struct _FireworksScreenInput
+{
+ shared_ptr<LocalPlayer> player;
+ bool bSplitscreen;
+ int iPad;
+ int x;
+ int y;
+ int z;
+}
+FireworksScreenInput;
+
// Trading
typedef struct _TradingScreenInput
{
@@ -122,6 +140,37 @@ typedef struct _AnvilScreenInput
}
AnvilScreenInput;
+// Hopper
+typedef struct _HopperScreenInput
+{
+ shared_ptr<Inventory> inventory;
+ shared_ptr<Container> hopper;
+ int iPad;
+ bool bSplitscreen;
+}
+HopperScreenInput;
+
+// Horse
+typedef struct _HorseScreenInput
+{
+ shared_ptr<Inventory> inventory;
+ shared_ptr<Container> container;
+ shared_ptr<EntityHorse> horse;
+ int iPad;
+ bool bSplitscreen;
+}
+HorseScreenInput;
+
+// Beacon
+typedef struct _BeaconScreenInput
+{
+ shared_ptr<Inventory> inventory;
+ shared_ptr<BeaconTileEntity> beacon;
+ int iPad;
+ bool bSplitscreen;
+}
+BeaconScreenInput;
+
// Sign
typedef struct _SignEntryScreenInput
{
@@ -236,24 +285,32 @@ typedef struct _JoinMenuInitData
// More Options
typedef struct _LaunchMoreOptionsMenuInitData
{
- BOOL bOnlineGame;
- BOOL bInviteOnly;
- BOOL bAllowFriendsOfFriends;
+ bool bOnlineGame;
+ bool bInviteOnly;
+ bool bAllowFriendsOfFriends;
+
+ bool bGenerateOptions;
+ bool bStructures;
+ bool bFlatWorld;
+ bool bBonusChest;
- BOOL bGenerateOptions;
- BOOL bStructures;
- BOOL bFlatWorld;
- BOOL bBonusChest;
+ bool bPVP;
+ bool bTrust;
+ bool bFireSpreads;
+ bool bTNT;
- BOOL bPVP;
- BOOL bTrust;
- BOOL bFireSpreads;
- BOOL bTNT;
+ bool bHostPrivileges;
+ bool bResetNether;
- BOOL bHostPrivileges;
- BOOL bResetNether;
+ bool bMobGriefing;
+ bool bKeepInventory;
+ bool bDoMobSpawning;
+ bool bDoMobLoot;
+ bool bDoTileDrops;
+ bool bNaturalRegeneration;
+ bool bDoDaylightCycle;
- BOOL bOnlineSettingChangedBySystem;
+ bool bOnlineSettingChangedBySystem;
int iPad;
@@ -263,18 +320,32 @@ typedef struct _LaunchMoreOptionsMenuInitData
int worldSize;
bool bDisableSaving;
+ EGameHostOptionWorldSize currentWorldSize;
+ EGameHostOptionWorldSize newWorldSize;
+ bool newWorldSizeOverwriteEdges;
+
_LaunchMoreOptionsMenuInitData()
{
memset(this,0,sizeof(_LaunchMoreOptionsMenuInitData));
- bOnlineGame = TRUE;
- bAllowFriendsOfFriends = TRUE;
- bPVP = TRUE;
- bFireSpreads = TRUE;
- bTNT = TRUE;
+ bOnlineGame = true;
+ bAllowFriendsOfFriends = true;
+ bPVP = true;
+ bFireSpreads = true;
+ bTNT = true;
iPad = -1;
worldSize = 3;
seed = L"";
bDisableSaving = false;
+ newWorldSize = e_worldSize_Unknown;
+ newWorldSizeOverwriteEdges = false;
+
+ bMobGriefing = true;
+ bKeepInventory = false;
+ bDoMobSpawning = true;
+ bDoMobLoot = true;
+ bDoTileDrops = true;
+ bNaturalRegeneration = true;
+ bDoDaylightCycle = true;
}
}
LaunchMoreOptionsMenuInitData;
@@ -407,3 +478,10 @@ typedef struct _CustomDrawData
float x0, y0, x1, y1; // the bounding box of the original DisplayObject, in object space
float mat[16];
} CustomDrawData;
+
+typedef struct _ItemEditorInput
+{
+ int iPad;
+ Slot *slot;
+ AbstractContainerMenu *menu;
+} ItemEditorInput; \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UITTFFont.cpp b/Minecraft.Client/Common/UI/UITTFFont.cpp
index eb343382..5d72ed97 100644
--- a/Minecraft.Client/Common/UI/UITTFFont.cpp
+++ b/Minecraft.Client/Common/UI/UITTFFont.cpp
@@ -4,7 +4,8 @@
#include "..\..\..\Minecraft.World\File.h"
#include "UITTFFont.h"
-UITTFFont::UITTFFont(const string &path, S32 fallbackCharacter)
+UITTFFont::UITTFFont(const string &name, const string &path, S32 fallbackCharacter)
+ : m_strFontName(name)
{
app.DebugPrintf("UITTFFont opening %s\n",path.c_str());
@@ -36,9 +37,9 @@ UITTFFont::UITTFFont(const string &path, S32 fallbackCharacter)
}
CloseHandle(file);
- IggyFontInstallTruetypeUTF8 ( (void *)pbData, IGGY_TTC_INDEX_none, "Mojangles_TTF", -1, IGGY_FONTFLAG_none );
+ IggyFontInstallTruetypeUTF8 ( (void *)pbData, IGGY_TTC_INDEX_none, m_strFontName.c_str(), -1, IGGY_FONTFLAG_none );
- IggyFontInstallTruetypeFallbackCodepointUTF8( "Mojangles_TTF", -1, IGGY_FONTFLAG_none, fallbackCharacter );
+ IggyFontInstallTruetypeFallbackCodepointUTF8( m_strFontName.c_str(), -1, IGGY_FONTFLAG_none, fallbackCharacter );
// 4J Stu - These are so we can use the default flash controls
IggyFontInstallTruetypeUTF8 ( (void *)pbData, IGGY_TTC_INDEX_none, "Times New Roman", -1, IGGY_FONTFLAG_none );
@@ -48,4 +49,10 @@ UITTFFont::UITTFFont(const string &path, S32 fallbackCharacter)
UITTFFont::~UITTFFont()
{
+}
+
+
+string UITTFFont::getFontName()
+{
+ return m_strFontName;
} \ No newline at end of file
diff --git a/Minecraft.Client/Common/UI/UITTFFont.h b/Minecraft.Client/Common/UI/UITTFFont.h
index 0de7c4e0..023bd51b 100644
--- a/Minecraft.Client/Common/UI/UITTFFont.h
+++ b/Minecraft.Client/Common/UI/UITTFFont.h
@@ -3,10 +3,14 @@
class UITTFFont
{
private:
+ const string m_strFontName;
+
PBYTE pbData;
//DWORD dwDataSize;
public:
- UITTFFont(const string &path, S32 fallbackCharacter);
+ UITTFFont(const string &name, const string &path, S32 fallbackCharacter);
~UITTFFont();
+
+ string getFontName();
};
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/TexturePack.xzp
index f2e865fc..2eae0020 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/x16Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/x16Data.pck
index 50d5d4ee..7c548119 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/x16Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Candy/Data/x16Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/TexturePack.xzp
new file mode 100644
index 00000000..9ceb5e40
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/x32Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/x32Data.pck
new file mode 100644
index 00000000..f8c3536f
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Cartoon/Data/x32Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/TexturePack.xzp
index b2d02efd..d96eeeee 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/x32Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/x32Data.pck
index 4968ba01..52f0f98f 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/x32Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/City/Data/x32Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/TexturePack.xzp
index 87fc9d91..00b9d61c 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/x32Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/x32Data.pck
index 9d909b93..103a8d82 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/x32Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Fantasy/Data/x32Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/Festive.mcs b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/Festive.mcs
new file mode 100644
index 00000000..1d3dd63d
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/Festive.mcs
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/GameRules.grf b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/GameRules.grf
new file mode 100644
index 00000000..a260f16b
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/GameRules.grf
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/TexturePack.xzp
new file mode 100644
index 00000000..d458e2e8
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/x16Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/x16Data.pck
new file mode 100644
index 00000000..6c9439cb
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/Data/x16Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/TexturePack.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/TexturePack.pck
new file mode 100644
index 00000000..11a01367
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Festive/TexturePack.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/TexturePack.xzp
index ce7ea034..ca0a01ad 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/x16Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/x16Data.pck
index 9da2ef1b..f519e006 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/x16Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halloween/Data/x16Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/TexturePack.xzp
index 73339be4..908ce222 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/x16Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/x16Data.pck
index 63d88194..7e2c79bf 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/x16Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/Data/x16Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/TexturePack.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/TexturePack.pck
index fddfbb38..5820cd20 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/TexturePack.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Halo/TexturePack.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/TexturePack.xzp
index 5b2df78a..3f021e56 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/masseffect.mcs b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/masseffect.mcs
index c3e1cb8d..fdb2b532 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/masseffect.mcs
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/masseffect.mcs
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/x16Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/x16Data.pck
index 2c01acae..85ac50a8 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/x16Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/Data/x16Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/TexturePack.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/TexturePack.pck
index e0576ed8..1b60faf7 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/TexturePack.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/MassEffect/TexturePack.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/TexturePack.xzp
index 34f7dc99..a5509dff 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/x32Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/x32Data.pck
index 4224184c..d211b05c 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/x32Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Natural/Data/x32Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/TexturePack.xzp
index 033840eb..3f3cceea 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/x16Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/x16Data.pck
index b5b5c14a..3e9f17fd 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/x16Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Plastic/Data/x16Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/TexturePack.xzp
index 45c24d41..a0ad5910 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/TexturePack.xzp
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/x16Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/x16Data.pck
index 82a5965d..1560a2c1 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/x16Data.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/Data/x16Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/TexturePack.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/TexturePack.pck
index 2dc382a1..2f52919d 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/TexturePack.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Skyrim/TexturePack.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/TexturePack.xzp b/Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/TexturePack.xzp
new file mode 100644
index 00000000..1672acd8
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/TexturePack.xzp
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/x32Data.pck b/Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/x32Data.pck
new file mode 100644
index 00000000..795346cb
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/DLC/Steampunk/Data/x32Data.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.mcs b/Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.mcs
new file mode 100644
index 00000000..9a50985e
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.mcs
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.pck b/Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.pck
index 8f44945b..e506da13 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.pck
+++ b/Minecraft.Client/Common/res/TitleUpdate/GameRules/Tutorial.pck
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/audio/1.6.4.xwb b/Minecraft.Client/Common/res/TitleUpdate/audio/1.6.4.xwb
new file mode 100644
index 00000000..f2723fcc
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/audio/1.6.4.xwb
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/audio/Minecraft.xgs b/Minecraft.Client/Common/res/TitleUpdate/audio/Minecraft.xgs
index 5d6c55be..c6e34ce0 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/audio/Minecraft.xgs
+++ b/Minecraft.Client/Common/res/TitleUpdate/audio/Minecraft.xgs
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/audio/additional.xsb b/Minecraft.Client/Common/res/TitleUpdate/audio/additional.xsb
index e60b3524..86c6ac69 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/audio/additional.xsb
+++ b/Minecraft.Client/Common/res/TitleUpdate/audio/additional.xsb
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/colours.col b/Minecraft.Client/Common/res/TitleUpdate/res/colours.col
index abe91ebe..ebdcf7a9 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/colours.col
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/colours.col
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml b/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml
index f6a85645..6c45b660 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/colours.xml
@@ -218,6 +218,10 @@ if __name__=="__main__": notecolors()
<colour name="Effect_Hunger" value="587653"/>
<colour name="Effect_Weakness" value="484d48"/>
<colour name="Effect_Poison" value="4e9331"/>
+ <colour name="Effect_Wither" value="352a27"/>
+ <colour name="Effect_HealthBoost" value="f87d23"/>
+ <colour name="Effect_Absorption" value="2552a5"/>
+ <colour name="Effect_Saturation" value="f82423"/>
<colour name="Potion_BaseColour" value="385dc6"/>
<!-- Mob Egg colours -->
@@ -263,6 +267,12 @@ if __name__=="__main__": notecolors()
<colour name="Mob_Ocelot_Colour2" value="564434"/>
<colour name="Mob_Villager_Colour1" value="563c33"/>
<colour name="Mob_Villager_Colour2" value="bd8b72"/>
+ <colour name="Mob_Bat_Colour1" value="4c3e30"/>
+ <colour name="Mob_Bat_Colour2" value="0f0f0f"/>
+ <colour name="Mob_Witch_Colour1" value="340000"/>
+ <colour name="Mob_Witch_Colour2" value="51a03e"/>
+ <colour name="Mob_Horse_Colour1" value="C09E7D"/>
+ <colour name="Mob_Horse_Colour2" value="EEE500"/>
<colour name="Armour_Default_Leather_Colour" value="A06540"/>
@@ -280,4 +290,10 @@ if __name__=="__main__": notecolors()
<colour name="Sign_Text" value="000000"/>
<colour name="Map_Text" value="ff000000"/>
+
+ <colour name="Leash_Light_Colour" value="80664d"/>
+ <colour name="Leash_Dark_Colour" value="5a4736"/>
+
+ <!-- ARGB -->
+ <colour name="Fire_Overlay" value="E5ffffff"/>
</root> \ No newline at end of file
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/font/Default.png b/Minecraft.Client/Common/res/TitleUpdate/res/font/Default.png
index 07ec8d9d..9c499811 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/font/Default.png
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/font/Default.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_11.png b/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_11.png
index cfa86446..32cbd515 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_11.png
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_11.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_7.png b/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_7.png
index 9de84520..7a1b3870 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_7.png
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/font/Mojangles_7.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/item/christmas.png b/Minecraft.Client/Common/res/TitleUpdate/res/item/christmas.png
new file mode 100644
index 00000000..44591121
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/item/christmas.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/item/christmas_double.png b/Minecraft.Client/Common/res/TitleUpdate/res/item/christmas_double.png
new file mode 100644
index 00000000..9e44eebb
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/item/christmas_double.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/item/lead_knot.png b/Minecraft.Client/Common/res/TitleUpdate/res/item/lead_knot.png
new file mode 100644
index 00000000..ab4d3b3a
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/item/lead_knot.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/item/trapped.png b/Minecraft.Client/Common/res/TitleUpdate/res/item/trapped.png
new file mode 100644
index 00000000..3aef1901
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/item/trapped.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/item/trapped_double.png b/Minecraft.Client/Common/res/TitleUpdate/res/item/trapped_double.png
new file mode 100644
index 00000000..00eebe5d
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/item/trapped_double.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/items.png b/Minecraft.Client/Common/res/TitleUpdate/res/items.png
index c86026a0..5456083c 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/items.png
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/items.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/misc/beacon_beam.png b/Minecraft.Client/Common/res/TitleUpdate/res/misc/beacon_beam.png
new file mode 100644
index 00000000..67545b45
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/misc/beacon_beam.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/bat.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/bat.png
new file mode 100644
index 00000000..803860ed
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/bat.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_diamond.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_diamond.png
new file mode 100644
index 00000000..39068f25
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_diamond.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_gold.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_gold.png
new file mode 100644
index 00000000..4a0786de
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_gold.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_iron.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_iron.png
new file mode 100644
index 00000000..533b2dd9
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/armor/horse_armor_iron.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/donkey.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/donkey.png
new file mode 100644
index 00000000..b94bc630
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/donkey.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_black.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_black.png
new file mode 100644
index 00000000..dde716e2
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_black.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_brown.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_brown.png
new file mode 100644
index 00000000..ec0158f4
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_brown.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_chestnut.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_chestnut.png
new file mode 100644
index 00000000..40322ff9
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_chestnut.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_creamy.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_creamy.png
new file mode 100644
index 00000000..bc42bcce
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_creamy.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_darkbrown.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_darkbrown.png
new file mode 100644
index 00000000..b38e914c
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_darkbrown.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_gray.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_gray.png
new file mode 100644
index 00000000..49875329
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_gray.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_blackdots.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_blackdots.png
new file mode 100644
index 00000000..73206486
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_blackdots.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_white.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_white.png
new file mode 100644
index 00000000..b1f0a697
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_white.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitedots.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitedots.png
new file mode 100644
index 00000000..20e19546
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitedots.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitefield.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitefield.png
new file mode 100644
index 00000000..baa2c06f
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_markings_whitefield.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_skeleton.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_skeleton.png
new file mode 100644
index 00000000..29d4ed5d
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_skeleton.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_white.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_white.png
new file mode 100644
index 00000000..e90e6e7f
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_white.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_zombie.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_zombie.png
new file mode 100644
index 00000000..22d55faa
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/horse_zombie.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/mule.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/mule.png
new file mode 100644
index 00000000..241bdaac
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/horse/mule.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/witch.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/witch.png
new file mode 100644
index 00000000..24035708
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/witch.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither.png
new file mode 100644
index 00000000..0882d052
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_armor.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_armor.png
new file mode 100644
index 00000000..a6b5cf5b
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_armor.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_invulnerable.png b/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_invulnerable.png
new file mode 100644
index 00000000..717750b4
--- /dev/null
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/mob/wither/wither_invulnerable.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png b/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png
index d5d3751d..0246b41d 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png
index 771bb2d5..02686b3e 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png
Binary files differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png
index 900ba0f3..dddef615 100644
--- a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png
+++ b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png
Binary files differ