diff --git a/CMakeLists.txt b/CMakeLists.txt index a52c17e1..7e2367df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,13 @@ cmake_minimum_required(VERSION 3.24) +#set(CMAKE_C_COMPILER clang-cl) +#set(CMAKE_CXX_COMPILER clang-cl) + project(MinecraftConsoles LANGUAGES C CXX RC ASM_MASM) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -# set(CMAKE_CXX_COMPILER clang-cl) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) if(NOT WIN32 AND NOT CMAKE_CROSSCOMPILING) @@ -26,15 +29,13 @@ function(configure_compiler_target target) # MSVC and compatible compilers (like Clang-cl) if (MSVC) target_compile_options(${target} PRIVATE - $<$,$>:/W3> - $<$,$>:/W0> + $<$,$>:/W3 /Od> + $<$,$>:/W0 /O2 /Oi /GT /GF /Gw /Gy> $<$:/MP> $<$:/FS> $<$:/GS> $<$:/EHsc> $<$:/GR> - $<$,$>:/Od> - $<$,$>:/O2 /Oi /GT /GF> ) endif() @@ -44,23 +45,21 @@ function(configure_compiler_target target) $<$,$>:/GL> ) target_link_options(${target} PRIVATE - $<$:/LTCG:incremental> + $<$:/LTCG:incremental /OPT:REF /OPT:ICF> ) endif() # Clang - if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") target_compile_options(${target} PRIVATE - $<$,$>:-O0 -Wall> - $<$,$>:-O2 -w -flto> + $<$,$>:/clang:-O3> ) target_link_options(${target} PRIVATE - $<$:-flto> + $<$:/OPT:REF /OPT:ICF> ) endif() endfunction() - # --- # Configuration # --- @@ -112,4 +111,4 @@ set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT Minecraft.Client) # Setup folders for Visual Studio, just hides the build targets under a sub folder set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set_property(TARGET GenerateBuildVer PROPERTY FOLDER "Build") +set_property(TARGET GenerateBuildVer PROPERTY FOLDER "Build") \ No newline at end of file diff --git a/Minecraft.Client/Assets/Localisation/es-ES/stringsGeneric.xml b/Minecraft.Client/Assets/Localisation/es-ES/stringsGeneric.xml index ea4a3b5e..2b341ad6 100644 --- a/Minecraft.Client/Assets/Localisation/es-ES/stringsGeneric.xml +++ b/Minecraft.Client/Assets/Localisation/es-ES/stringsGeneric.xml @@ -93,6 +93,9 @@ Dificultad + + Modo Juego + Música diff --git a/Minecraft.Client/Assets/Localisation/languages.loc b/Minecraft.Client/Assets/Localisation/languages.loc index 9415b17c..4af99479 100644 Binary files a/Minecraft.Client/Assets/Localisation/languages.loc and b/Minecraft.Client/Assets/Localisation/languages.loc differ diff --git a/Minecraft.Client/Assets/Localisation/ru-RU/stringsGeneric.xml b/Minecraft.Client/Assets/Localisation/ru-RU/stringsGeneric.xml index f10519b9..f6998221 100644 --- a/Minecraft.Client/Assets/Localisation/ru-RU/stringsGeneric.xml +++ b/Minecraft.Client/Assets/Localisation/ru-RU/stringsGeneric.xml @@ -96,6 +96,9 @@ Уровень сложности + + Game Mode + Музыка diff --git a/Minecraft.Client/Assets/Localisation/strings.h b/Minecraft.Client/Assets/Localisation/strings.h index f7839b06..235f5bbb 100644 --- a/Minecraft.Client/Assets/Localisation/strings.h +++ b/Minecraft.Client/Assets/Localisation/strings.h @@ -1,7 +1,7 @@ #pragma once // Auto-generated by StringTable builder — do not edit manually. // Source language: en-US -// Total strings: 2346 +// Total strings: 2312 #define IDS_NULL 0 #define IDS_OK 1 @@ -52,2300 +52,2266 @@ #define IDS_PRO_GUESTPROFILE_TEXT 46 #define IDS_STO_SAVING_SHORT 47 #define IDS_STO_SAVING_LONG 48 -#define IDS_PRO_UNLOCKGAME_TITLE 49 -#define IDS_PRO_UNLOCKGAME_TEXT 50 -#define IDS_PRO_PROFILEPROBLEM_TEXT 51 -#define IDS_SAVE_TRANSFER_WRONG_VERSION 52 -#define IDS_UNHIDE_MASHUP_WORLDS 53 -#define IDS_TOOLTIPS_HIDE 54 -#define IDS_GAMENAME 55 -#define IDS_OPTIONSFILE 56 -#define IDS_SAVECACHEFILE 57 -#define IDS_ERROR_NETWORK 58 -#define IDS_ERROR_NETWORK_TITLE 59 -#define IDS_ERROR_NETWORK_EXIT 60 -#define IDS_CHAT_RESTRICTION_UGC 61 -#define IDS_CONTENT_RESTRICTION 62 -#define IDS_ONLINE_SERVICE_TITLE 63 -#define IDS_ERROR_PSN_SIGN_OUT 64 -#define IDS_ERROR_PSN_SIGN_OUT_EXIT 65 -#define IDS_PLAYER_LIST_TITLE 66 -#define IDS_DLC_PRICE_FREE 67 -#define IDS_CORRUPT_OPTIONS 68 -#define IDS_CORRUPT_OPTIONS_DELETE 69 -#define IDS_CORRUPT_OPTIONS_RETRY 70 -#define IDS_CORRUPT_SAVECACHE 71 -#define IDS_SAVEDATA_COPIED_TITLE 72 -#define IDS_SAVEDATA_COPIED_TEXT 73 -#define IDS_FATAL_TROPHY_ERROR 74 -#define IDS_TOOLTIPS_GAME_INVITES 75 -#define IDS_CORRUPT_FILE 76 -#define IDS_CONTROLER_DISCONNECT_TITLE 77 -#define IDS_CONTROLER_DISCONNECT_TEXT 78 -#define IDS_CONTENT_RESTRICTION_MULTIPLAYER 79 -#define IDS_CONTENT_RESTRICTION_PATCH_AVAILABLE 80 -#define IDS_NO_DLCCATEGORIES 81 -#define IDS_INVITATION_SUBJECT_MAX_18_CHARS 82 -#define IDS_INVITATION_BODY 83 -#define IDS_EULA 84 -#define IDS_EULA_SCEE 85 -#define IDS_EULA_SCEA 86 -#define IDS_EULA_SCEE_BD 87 -#define IDS_INCREASE_WORLD_SIZE 88 -#define IDS_INCREASE_WORLD_SIZE_OVERWRITE_EDGES 89 -#define IDS_GAMEOPTION_INCREASE_WORLD_SIZE 90 -#define IDS_GAMEOPTION_INCREASE_WORLD_SIZE_OVERWRITE_EDGES 91 -#define IDS_DYNAFONT 92 -#define IDS_TIPS_GAMETIP_NEWDLC 93 -#define IDS_TIPS_GAMETIP_SKINPACKS 94 -#define IDS_TIPS_GAMETIP_2 95 -#define IDS_TIPS_GAMETIP_3 96 -#define IDS_TIPS_GAMETIP_4 97 -#define IDS_TIPS_GAMETIP_5 98 -#define IDS_TIPS_GAMETIP_6 99 -#define IDS_TIPS_GAMETIP_7 100 -#define IDS_TIPS_GAMETIP_8 101 -#define IDS_TIPS_GAMETIP_9 102 -#define IDS_TIPS_GAMETIP_10 103 -#define IDS_TIPS_GAMETIP_11 104 -#define IDS_TIPS_GAMETIP_12 105 -#define IDS_TIPS_GAMETIP_13 106 -#define IDS_TIPS_GAMETIP_14 107 -#define IDS_TIPS_GAMETIP_15 108 -#define IDS_TIPS_GAMETIP_16 109 -#define IDS_TIPS_GAMETIP_17 110 -#define IDS_TIPS_GAMETIP_18 111 -#define IDS_TIPS_GAMETIP_19 112 -#define IDS_TIPS_GAMETIP_20 113 -#define IDS_TIPS_GAMETIP_21 114 -#define IDS_TIPS_GAMETIP_22 115 -#define IDS_TIPS_GAMETIP_23 116 -#define IDS_TIPS_GAMETIP_24 117 -#define IDS_TIPS_GAMETIP_25 118 -#define IDS_TIPS_GAMETIP_26 119 -#define IDS_TIPS_GAMETIP_27 120 -#define IDS_TIPS_GAMETIP_28 121 -#define IDS_TIPS_GAMETIP_29 122 -#define IDS_TIPS_GAMETIP_30 123 -#define IDS_TIPS_GAMETIP_31 124 -#define IDS_TIPS_GAMETIP_32 125 -#define IDS_TIPS_GAMETIP_33 126 -#define IDS_TIPS_GAMETIP_34 127 -#define IDS_TIPS_GAMETIP_35 128 -#define IDS_TIPS_GAMETIP_36 129 -#define IDS_TIPS_GAMETIP_37 130 -#define IDS_TIPS_GAMETIP_38 131 -#define IDS_TIPS_GAMETIP_39 132 -#define IDS_TIPS_GAMETIP_40 133 -#define IDS_TIPS_GAMETIP_41 134 -#define IDS_TIPS_GAMETIP_42 135 -#define IDS_TIPS_GAMETIP_43 136 -#define IDS_TIPS_GAMETIP_46 137 -#define IDS_TIPS_GAMETIP_47 138 -#define IDS_TIPS_GAMETIP_49 139 -#define IDS_TIPS_GAMETIP_50 140 -#define IDS_TIPS_TRIVIA_1 141 -#define IDS_TIPS_TRIVIA_2 142 -#define IDS_TIPS_TRIVIA_3 143 -#define IDS_TIPS_TRIVIA_5 144 -#define IDS_TIPS_TRIVIA_6 145 -#define IDS_TIPS_TRIVIA_7 146 -#define IDS_TIPS_TRIVIA_8 147 -#define IDS_TIPS_TRIVIA_9 148 -#define IDS_TIPS_TRIVIA_10 149 -#define IDS_TIPS_TRIVIA_11 150 -#define IDS_TIPS_TRIVIA_12 151 -#define IDS_TIPS_TRIVIA_13 152 -#define IDS_TIPS_TRIVIA_14 153 -#define IDS_TIPS_TRIVIA_15 154 -#define IDS_TIPS_TRIVIA_16 155 -#define IDS_TIPS_TRIVIA_18 156 -#define IDS_TIPS_TRIVIA_19 157 -#define IDS_TIPS_TRIVIA_20 158 -#define IDS_HOW_TO_PLAY_BASICS 159 -#define IDS_HOW_TO_PLAY_HUD 160 -#define IDS_HOW_TO_PLAY_INVENTORY 161 -#define IDS_HOW_TO_PLAY_CHEST 162 -#define IDS_HOW_TO_PLAY_LARGECHEST 163 -#define IDS_HOW_TO_PLAY_CRAFTING 164 -#define IDS_HOW_TO_PLAY_CRAFT_TABLE 165 -#define IDS_HOW_TO_PLAY_FURNACE 166 -#define IDS_HOW_TO_PLAY_DISPENSER 167 -#define IDS_HOW_TO_PLAY_BREWING 168 -#define IDS_HOW_TO_PLAY_ENCHANTMENT 169 -#define IDS_HOW_TO_PLAY_FARMANIMALS 170 -#define IDS_HOW_TO_PLAY_BREEDANIMALS 171 -#define IDS_HOW_TO_PLAY_NETHERPORTAL 172 -#define IDS_HOW_TO_PLAY_BANLIST 173 -#define IDS_HOW_TO_PLAY_HOSTOPTIONS 174 -#define IDS_HOW_TO_PLAY_NEXT 175 -#define IDS_HOW_TO_PLAY_PREV 176 -#define IDS_HOW_TO_PLAY_MENU_BASICS 177 -#define IDS_HOW_TO_PLAY_MENU_HUD 178 -#define IDS_HOW_TO_PLAY_MENU_INVENTORY 179 -#define IDS_HOW_TO_PLAY_MENU_CHESTS 180 -#define IDS_HOW_TO_PLAY_MENU_CRAFTING 181 -#define IDS_HOW_TO_PLAY_MENU_FURNACE 182 -#define IDS_HOW_TO_PLAY_MENU_DISPENSER 183 -#define IDS_HOW_TO_PLAY_MENU_FARMANIMALS 184 -#define IDS_HOW_TO_PLAY_MENU_BREEDANIMALS 185 -#define IDS_HOW_TO_PLAY_MENU_BREWING 186 -#define IDS_HOW_TO_PLAY_MENU_ENCHANTMENT 187 -#define IDS_HOW_TO_PLAY_MENU_NETHERPORTAL 188 -#define IDS_HOW_TO_PLAY_MENU_MULTIPLAYER 189 -#define IDS_HOW_TO_PLAY_MENU_SOCIALMEDIA 190 -#define IDS_HOW_TO_PLAY_MENU_BANLIST 191 -#define IDS_HOW_TO_PLAY_MENU_CREATIVE 192 -#define IDS_HOW_TO_PLAY_MENU_HOSTOPTIONS 193 -#define IDS_HOW_TO_PLAY_MENU_TRADING 194 -#define IDS_HOW_TO_PLAY_MENU_ANVIL 195 -#define IDS_HOW_TO_PLAY_MENU_THEEND 196 -#define IDS_HOW_TO_PLAY_THEEND 197 -#define IDS_HOW_TO_PLAY_MENU_SPRINT 198 -#define IDS_HOW_TO_PLAY_MENU_WHATSNEW 199 -#define IDS_HOW_TO_PLAY_WHATSNEW 200 -#define IDS_TITLEUPDATE 201 -#define IDS_HOW_TO_PLAY_MENU_HORSES 202 -#define IDS_HOW_TO_PLAY_HORSES 203 -#define IDS_HOW_TO_PLAY_MENU_BEACONS 204 -#define IDS_HOW_TO_PLAY_BEACONS 205 -#define IDS_HOW_TO_PLAY_MENU_FIREWORKS 206 -#define IDS_HOW_TO_PLAY_FIREWORKS 207 -#define IDS_HOW_TO_PLAY_MENU_HOPPERS 208 -#define IDS_HOW_TO_PLAY_HOPPERS 209 -#define IDS_HOW_TO_PLAY_MENU_DROPPERS 210 -#define IDS_HOW_TO_PLAY_DROPPERS 211 -#define IDS_DESC_SWORD 212 -#define IDS_DESC_SHOVEL 213 -#define IDS_DESC_PICKAXE 214 -#define IDS_DESC_HATCHET 215 -#define IDS_DESC_HOE 216 -#define IDS_DESC_DOOR_WOOD 217 -#define IDS_DESC_DOOR_IRON 218 -#define IDS_DESC_HELMET 219 -#define IDS_DESC_CHESTPLATE 220 -#define IDS_DESC_LEGGINGS 221 -#define IDS_DESC_BOOTS 222 -#define IDS_DESC_HELMET_LEATHER 223 -#define IDS_DESC_CHESTPLATE_LEATHER 224 -#define IDS_DESC_LEGGINGS_LEATHER 225 -#define IDS_DESC_BOOTS_LEATHER 226 -#define IDS_DESC_HELMET_CHAIN 227 -#define IDS_DESC_CHESTPLATE_CHAIN 228 -#define IDS_DESC_LEGGINGS_CHAIN 229 -#define IDS_DESC_BOOTS_CHAIN 230 -#define IDS_DESC_HELMET_IRON 231 -#define IDS_DESC_CHESTPLATE_IRON 232 -#define IDS_DESC_LEGGINGS_IRON 233 -#define IDS_DESC_BOOTS_IRON 234 -#define IDS_DESC_HELMET_GOLD 235 -#define IDS_DESC_CHESTPLATE_GOLD 236 -#define IDS_DESC_LEGGINGS_GOLD 237 -#define IDS_DESC_BOOTS_GOLD 238 -#define IDS_DESC_HELMET_DIAMOND 239 -#define IDS_DESC_CHESTPLATE_DIAMOND 240 -#define IDS_DESC_LEGGINGS_DIAMOND 241 -#define IDS_DESC_BOOTS_DIAMOND 242 -#define IDS_DESC_INGOT 243 -#define IDS_DESC_BLOCK 244 -#define IDS_DESC_PRESSUREPLATE 245 -#define IDS_DESC_STAIRS 246 -#define IDS_DESC_SLAB 247 -#define IDS_DESC_HALFSLAB 248 -#define IDS_DESC_TORCH 249 -#define IDS_DESC_WOODENPLANKS 250 -#define IDS_DESC_SANDSTONE 251 -#define IDS_DESC_STRUCTBLOCK 252 -#define IDS_DESC_STICK 253 -#define IDS_DESC_BED 254 -#define IDS_DESC_CRAFTINGTABLE 255 -#define IDS_DESC_FURNACE 256 -#define IDS_DESC_CHEST 257 -#define IDS_DESC_FENCE 258 -#define IDS_DESC_LADDER 259 -#define IDS_DESC_TRAPDOOR 260 -#define IDS_DESC_TRAPDOOR_IRON 261 -#define IDS_DESC_SIGN 262 -#define IDS_DESC_GLOWSTONE 263 -#define IDS_DESC_TNT 264 -#define IDS_DESC_BOWL 265 -#define IDS_DESC_BUCKET 266 -#define IDS_DESC_BUCKET_WATER 267 -#define IDS_DESC_BUCKET_LAVA 268 -#define IDS_DESC_BUCKET_MILK 269 -#define IDS_DESC_FLINTANDSTEEL 270 -#define IDS_DESC_FISHINGROD 271 -#define IDS_DESC_CLOCK 272 -#define IDS_DESC_COMPASS 273 -#define IDS_DESC_MAP 274 -#define IDS_DESC_MAP_EMPTY 275 -#define IDS_DESC_BOW 276 -#define IDS_DESC_ARROW 277 -#define IDS_DESC_NETHER_STAR 278 -#define IDS_DESC_FIREWORKS 279 -#define IDS_DESC_FIREWORKS_CHARGE 280 -#define IDS_DESC_COMPARATOR 281 -#define IDS_DESC_MINECART_TNT 282 -#define IDS_DESC_DAYLIGHT_DETECTOR 283 -#define IDS_DESC_MINECART_HOPPER 284 -#define IDS_DESC_IRON_HORSE_ARMOR 285 -#define IDS_DESC_GOLD_HORSE_ARMOR 286 -#define IDS_DESC_DIAMOND_HORSE_ARMOR 287 -#define IDS_DESC_LEAD 288 -#define IDS_DESC_NAME_TAG 289 -#define IDS_DESC_BREAD 290 -#define IDS_DESC_CAKE 291 -#define IDS_DESC_COOKIE 292 -#define IDS_DESC_MELON_SLICE 293 -#define IDS_DESC_MUSHROOMSTEW 294 -#define IDS_DESC_CHICKEN_RAW 295 -#define IDS_DESC_CHICKEN_COOKED 296 -#define IDS_DESC_BEEF_RAW 297 -#define IDS_DESC_BEEF_COOKED 298 -#define IDS_DESC_PORKCHOP_RAW 299 -#define IDS_DESC_PORKCHOP_COOKED 300 -#define IDS_DESC_FISH_RAW 301 -#define IDS_DESC_FISH_COOKED 302 -#define IDS_DESC_APPLE 303 -#define IDS_DESC_GOLDENAPPLE 304 -#define IDS_DESC_ROTTEN_FLESH 305 -#define IDS_DESC_SUGAR 306 -#define IDS_DESC_LEVER 307 -#define IDS_DESC_REDSTONETORCH 308 -#define IDS_DESC_REDSTONEREPEATER 309 -#define IDS_DESC_BUTTON 310 -#define IDS_DESC_DISPENSER 311 -#define IDS_DESC_NOTEBLOCK 312 -#define IDS_DESC_RAIL 313 -#define IDS_DESC_POWEREDRAIL 314 -#define IDS_DESC_DETECTORRAIL 315 -#define IDS_DESC_MINECART 316 -#define IDS_DESC_MINECARTWITHCHEST 317 -#define IDS_DESC_MINECARTWITHFURNACE 318 -#define IDS_DESC_BOAT 319 -#define IDS_DESC_WOOL 320 -#define IDS_DESC_WOOLSTRING 321 -#define IDS_DESC_DYE_BLACK 322 -#define IDS_DESC_DYE_GREEN 323 -#define IDS_DESC_DYE_BROWN 324 -#define IDS_DESC_DYE_SILVER 325 -#define IDS_DESC_DYE_YELLOW 326 -#define IDS_DESC_DYE_RED 327 -#define IDS_DESC_DYE_WHITE 328 -#define IDS_DESC_DYE_PINK 329 -#define IDS_DESC_DYE_ORANGE 330 -#define IDS_DESC_DYE_LIME 331 -#define IDS_DESC_DYE_GRAY 332 -#define IDS_DESC_DYE_LIGHTGRAY 333 -#define IDS_DESC_DYE_LIGHTBLUE 334 -#define IDS_DESC_DYE_CYAN 335 -#define IDS_DESC_DYE_PURPLE 336 -#define IDS_DESC_DYE_MAGENTA 337 -#define IDS_DESC_DYE_BLUE 338 -#define IDS_DESC_JUKEBOX 339 -#define IDS_DESC_DIAMONDS 340 -#define IDS_DESC_JACKOLANTERN 341 -#define IDS_DESC_PAPER 342 -#define IDS_DESC_BOOK 343 -#define IDS_DESC_BOOKSHELF 344 -#define IDS_DESC_PICTURE 345 -#define IDS_DESC_ORE_GOLD 346 -#define IDS_DESC_ORE_IRON 347 -#define IDS_DESC_ORE_COAL 348 -#define IDS_DESC_ORE_LAPIS 349 -#define IDS_DESC_ORE_DIAMOND 350 -#define IDS_DESC_ORE_REDSTONE 351 -#define IDS_DESC_STONE 352 -#define IDS_DESC_DIRT 353 -#define IDS_DESC_SAPLING 354 -#define IDS_DESC_BEDROCK 355 -#define IDS_DESC_LAVA 356 -#define IDS_DESC_SAND 357 -#define IDS_DESC_GRAVEL 358 -#define IDS_DESC_LOG 359 -#define IDS_DESC_GLASS 360 -#define IDS_DESC_STONE_BRICK 361 -#define IDS_DESC_BRICK 362 -#define IDS_DESC_CLAY 363 -#define IDS_DESC_CLAY_TILE 364 -#define IDS_DESC_SNOW 365 -#define IDS_DESC_TOP_SNOW 366 -#define IDS_DESC_TALL_GRASS 367 -#define IDS_DESC_FLOWER 368 -#define IDS_DESC_MUSHROOM 369 -#define IDS_DESC_OBSIDIAN 370 -#define IDS_DESC_MOB_SPAWNER 371 -#define IDS_DESC_REDSTONE_DUST 372 -#define IDS_DESC_CROPS 373 -#define IDS_DESC_FARMLAND 374 -#define IDS_DESC_CACTUS 375 -#define IDS_DESC_REEDS 376 -#define IDS_DESC_PUMPKIN 377 -#define IDS_DESC_HELL_ROCK 378 -#define IDS_DESC_HELL_SAND 379 -#define IDS_DESC_PORTAL 380 -#define IDS_DESC_COAL 381 -#define IDS_DESC_STRING 382 -#define IDS_DESC_FEATHER 383 -#define IDS_DESC_SULPHUR 384 -#define IDS_DESC_WHEAT_SEEDS 385 -#define IDS_DESC_WHEAT 386 -#define IDS_DESC_FLINT 387 -#define IDS_DESC_SADDLE 388 -#define IDS_DESC_SNOWBALL 389 -#define IDS_DESC_LEATHER 390 -#define IDS_DESC_SLIMEBALL 391 -#define IDS_DESC_EGG 392 -#define IDS_DESC_YELLOW_DUST 393 -#define IDS_DESC_BONE 394 -#define IDS_DESC_RECORD 395 -#define IDS_DESC_WATER 396 -#define IDS_DESC_LEAVES 397 -#define IDS_DESC_MOSS_STONE 398 -#define IDS_DESC_SHEARS 399 -#define IDS_DESC_PISTON 400 -#define IDS_DESC_STICKY_PISTON 401 -#define IDS_DESC_STONE_BRICK_SMOOTH 402 -#define IDS_DESC_IRON_FENCE 403 -#define IDS_DESC_FENCE_GATE 404 -#define IDS_DESC_MELON_BLOCK 405 -#define IDS_DESC_THIN_GLASS 406 -#define IDS_DESC_PUMPKIN_SEEDS 407 -#define IDS_DESC_MELON_SEEDS 408 -#define IDS_DESC_ENDER_PEARL 409 -#define IDS_DESC_GRASS 410 -#define IDS_DESC_SPONGE 411 -#define IDS_DESC_WEB 412 -#define IDS_DESC_STONE_SILVERFISH 413 -#define IDS_DESC_VINE 414 -#define IDS_DESC_ICE 415 -#define IDS_DESC_DEAD_BUSH 416 -#define IDS_DESC_BLAZE_ROD 417 -#define IDS_DESC_GHAST_TEAR 418 -#define IDS_DESC_GOLD_NUGGET 419 -#define IDS_DESC_NETHER_STALK_SEEDS 420 -#define IDS_DESC_POTION 421 -#define IDS_DESC_GLASS_BOTTLE 422 -#define IDS_DESC_SPIDER_EYE 423 -#define IDS_DESC_FERMENTED_SPIDER_EYE 424 -#define IDS_DESC_BLAZE_POWDER 425 -#define IDS_DESC_MAGMA_CREAM 426 -#define IDS_DESC_BREWING_STAND 427 -#define IDS_DESC_CAULDRON 428 -#define IDS_DESC_EYE_OF_ENDER 429 -#define IDS_DESC_SPECKLED_MELON 430 -#define IDS_DESC_MYCEL 431 -#define IDS_DESC_WATERLILY 432 -#define IDS_DESC_NETHERBRICK 433 -#define IDS_DESC_NETHERFENCE 434 -#define IDS_DESC_NETHERSTALK 435 -#define IDS_DESC_ENCHANTMENTTABLE 436 -#define IDS_DESC_END_PORTAL 437 -#define IDS_DESC_ENDPORTALFRAME 438 -#define IDS_DESC_WHITESTONE 439 -#define IDS_DESC_DRAGONEGG 440 -#define IDS_DESC_EXP_BOTTLE 441 -#define IDS_DESC_FIREBALL 442 -#define IDS_DESC_ITEMFRAME 443 -#define IDS_DESC_MONSTER_SPAWNER 444 -#define IDS_DESC_WOODSLAB 445 -#define IDS_DESC_STONESLAB 446 -#define IDS_DESC_ITEM_NETHERBRICK 447 -#define IDS_DESC_REDSTONE_LIGHT 448 -#define IDS_DESC_COCOA 449 -#define IDS_DESC_SKULL 450 -#define IDS_DESC_COMMAND_BLOCK 451 -#define IDS_DESC_BEACON 452 -#define IDS_DESC_CHEST_TRAP 453 -#define IDS_DESC_WEIGHTED_PLATE_LIGHT 454 -#define IDS_DESC_WEIGHTED_PLATE_HEAVY 455 -#define IDS_DESC_REDSTONE_BLOCK 456 -#define IDS_DESC_HOPPER 457 -#define IDS_DESC_ACTIVATOR_RAIL 458 -#define IDS_DESC_DROPPER 459 -#define IDS_DESC_STAINED_CLAY 460 -#define IDS_DESC_HAY 461 -#define IDS_DESC_HARDENED_CLAY 462 -#define IDS_DESC_STAINED_GLASS 463 -#define IDS_DESC_STAINED_GLASS_PANE 464 -#define IDS_DESC_COAL_BLOCK 465 -#define IDS_SQUID 466 -#define IDS_DESC_SQUID 467 -#define IDS_COW 468 -#define IDS_DESC_COW 469 -#define IDS_SHEEP 470 -#define IDS_DESC_SHEEP 471 -#define IDS_CHICKEN 472 -#define IDS_DESC_CHICKEN 473 -#define IDS_PIG 474 -#define IDS_DESC_PIG 475 -#define IDS_WOLF 476 -#define IDS_DESC_WOLF 477 -#define IDS_CREEPER 478 -#define IDS_DESC_CREEPER 479 -#define IDS_SKELETON 480 -#define IDS_DESC_SKELETON 481 -#define IDS_SPIDER 482 -#define IDS_DESC_SPIDER 483 -#define IDS_ZOMBIE 484 -#define IDS_DESC_ZOMBIE 485 -#define IDS_PIGZOMBIE 486 -#define IDS_DESC_PIGZOMBIE 487 -#define IDS_GHAST 488 -#define IDS_DESC_GHAST 489 -#define IDS_SLIME 490 -#define IDS_DESC_SLIME 491 -#define IDS_ENDERMAN 492 -#define IDS_DESC_ENDERMAN 493 -#define IDS_SILVERFISH 494 -#define IDS_DESC_SILVERFISH 495 -#define IDS_CAVE_SPIDER 496 -#define IDS_DESC_CAVE_SPIDER 497 -#define IDS_MUSHROOM_COW 498 -#define IDS_DESC_MUSHROOM_COW 499 -#define IDS_SNOWMAN 500 -#define IDS_DESC_SNOWMAN 501 -#define IDS_ENDERDRAGON 502 -#define IDS_DESC_ENDERDRAGON 503 -#define IDS_BLAZE 504 -#define IDS_DESC_BLAZE 505 -#define IDS_LAVA_SLIME 506 -#define IDS_DESC_LAVA_SLIME 507 -#define IDS_VILLAGER 508 -#define IDS_OZELOT 509 -#define IDS_DESC_OZELOT 510 -#define IDS_IRONGOLEM 511 -#define IDS_DESC_IRONGOLEM 512 -#define IDS_BAT 513 -#define IDS_DESC_BAT 514 -#define IDS_WITCH 515 -#define IDS_DESC_WITCH 516 -#define IDS_HORSE 517 -#define IDS_DESC_HORSE 518 -#define IDS_DONKEY 519 -#define IDS_DESC_DONKEY 520 -#define IDS_MULE 521 -#define IDS_DESC_MULE 522 -#define IDS_ZOMBIE_HORSE 523 -#define IDS_SKELETON_HORSE 524 -#define IDS_WITHER 525 -#define IDS_DESC_WITHER 526 -#define IDS_CREDITS_EXPLODANIM 527 -#define IDS_CREDITS_CONCEPTART 528 -#define IDS_CREDITS_CRUNCHER 529 -#define IDS_CREDITS_BULLYCOORD 530 -#define IDS_CREDITS_ORIGINALDESIGN 531 -#define IDS_CREDITS_PMPROD 532 -#define IDS_CREDITS_RESTOFMOJANG 533 -#define IDS_CREDITS_LEADPC 534 -#define IDS_CREDITS_CODENINJA 535 -#define IDS_CREDITS_CEO 536 -#define IDS_CREDITS_WCW 537 -#define IDS_CREDITS_CUSTOMERSUPPORT 538 -#define IDS_CREDITS_OFFICEDJ 539 -#define IDS_CREDITS_DESPROG 540 -#define IDS_CREDITS_DEVELOPER 541 -#define IDS_CREDITS_CHIEFARCHITECT 542 -#define IDS_CREDITS_ARTDEVELOPER 543 -#define IDS_CREDITS_GAMECRAFTER 544 -#define IDS_CREDITS_DOF 545 -#define IDS_CREDITS_MUSICANDSOUNDS 546 -#define IDS_CREDITS_PROGRAMMING 547 -#define IDS_CREDITS_ART 548 -#define IDS_CREDITS_QA 549 -#define IDS_CREDITS_EXECPRODUCER 550 -#define IDS_CREDITS_LEADPRODUCER 551 -#define IDS_CREDITS_PRODUCER 552 -#define IDS_CREDITS_TESTLEAD 553 -#define IDS_CREDITS_LEADTESTER 554 -#define IDS_CREDITS_DESIGNTEAM 555 -#define IDS_CREDITS_DEVELOPMENTTEAM 556 -#define IDS_CREDITS_RELEASEMANAGEMENT 557 -#define IDS_CREDITS_XBLADIRECTOR 558 -#define IDS_CREDITS_BIZDEV 559 -#define IDS_CREDITS_PORTFOLIODIRECTOR 560 -#define IDS_CREDITS_PRODUCTMANAGER 561 -#define IDS_CREDITS_MARKETING 562 -#define IDS_CREDITS_COMMUNITYMANAGER 563 -#define IDS_CREDITS_EUROPELOC 564 -#define IDS_CREDITS_REDMONDLOC 565 -#define IDS_CREDITS_ASIALOC 566 -#define IDS_CREDITS_USERRESEARCH 567 -#define IDS_CREDITS_MGSCENTRAL 568 -#define IDS_CREDITS_MILESTONEACCEPT 569 -#define IDS_CREDITS_SPECIALTHANKS 570 -#define IDS_CREDITS_TESTMANAGER 571 -#define IDS_CREDITS_SRTESTLEAD 572 -#define IDS_CREDITS_SDET 573 -#define IDS_CREDITS_PROJECT 574 -#define IDS_CREDITS_ADDITIONALSTE 575 -#define IDS_CREDITS_TESTASSOCIATES 576 -#define IDS_CREDITS_JON_KAGSTROM 577 -#define IDS_CREDITS_TOBIAS_MOLLSTAM 578 -#define IDS_CREDITS_RISE_LUGO 579 -#define IDS_ITEM_SWORD_WOOD 580 -#define IDS_ITEM_SWORD_STONE 581 -#define IDS_ITEM_SWORD_IRON 582 -#define IDS_ITEM_SWORD_DIAMOND 583 -#define IDS_ITEM_SWORD_GOLD 584 -#define IDS_ITEM_SHOVEL_WOOD 585 -#define IDS_ITEM_SHOVEL_STONE 586 -#define IDS_ITEM_SHOVEL_IRON 587 -#define IDS_ITEM_SHOVEL_DIAMOND 588 -#define IDS_ITEM_SHOVEL_GOLD 589 -#define IDS_ITEM_PICKAXE_WOOD 590 -#define IDS_ITEM_PICKAXE_STONE 591 -#define IDS_ITEM_PICKAXE_IRON 592 -#define IDS_ITEM_PICKAXE_DIAMOND 593 -#define IDS_ITEM_PICKAXE_GOLD 594 -#define IDS_ITEM_HATCHET_WOOD 595 -#define IDS_ITEM_HATCHET_STONE 596 -#define IDS_ITEM_HATCHET_IRON 597 -#define IDS_ITEM_HATCHET_DIAMOND 598 -#define IDS_ITEM_HATCHET_GOLD 599 -#define IDS_ITEM_HOE_WOOD 600 -#define IDS_ITEM_HOE_STONE 601 -#define IDS_ITEM_HOE_IRON 602 -#define IDS_ITEM_HOE_DIAMOND 603 -#define IDS_ITEM_HOE_GOLD 604 -#define IDS_ITEM_DOOR_WOOD 605 -#define IDS_ITEM_DOOR_IRON 606 -#define IDS_ITEM_HELMET_CHAIN 607 -#define IDS_ITEM_CHESTPLATE_CHAIN 608 -#define IDS_ITEM_LEGGINGS_CHAIN 609 -#define IDS_ITEM_BOOTS_CHAIN 610 -#define IDS_ITEM_HELMET_CLOTH 611 -#define IDS_ITEM_HELMET_IRON 612 -#define IDS_ITEM_HELMET_DIAMOND 613 -#define IDS_ITEM_HELMET_GOLD 614 -#define IDS_ITEM_CHESTPLATE_CLOTH 615 -#define IDS_ITEM_CHESTPLATE_IRON 616 -#define IDS_ITEM_CHESTPLATE_DIAMOND 617 -#define IDS_ITEM_CHESTPLATE_GOLD 618 -#define IDS_ITEM_LEGGINGS_CLOTH 619 -#define IDS_ITEM_LEGGINGS_IRON 620 -#define IDS_ITEM_LEGGINGS_DIAMOND 621 -#define IDS_ITEM_LEGGINGS_GOLD 622 -#define IDS_ITEM_BOOTS_CLOTH 623 -#define IDS_ITEM_BOOTS_IRON 624 -#define IDS_ITEM_BOOTS_DIAMOND 625 -#define IDS_ITEM_BOOTS_GOLD 626 -#define IDS_ITEM_INGOT_IRON 627 -#define IDS_ITEM_INGOT_GOLD 628 -#define IDS_ITEM_BUCKET 629 -#define IDS_ITEM_BUCKET_WATER 630 -#define IDS_ITEM_BUCKET_LAVA 631 -#define IDS_ITEM_FLINT_AND_STEEL 632 -#define IDS_ITEM_APPLE 633 -#define IDS_ITEM_BOW 634 -#define IDS_ITEM_ARROW 635 -#define IDS_ITEM_COAL 636 -#define IDS_ITEM_CHARCOAL 637 -#define IDS_ITEM_DIAMOND 638 -#define IDS_ITEM_STICK 639 -#define IDS_ITEM_BOWL 640 -#define IDS_ITEM_MUSHROOM_STEW 641 -#define IDS_ITEM_STRING 642 -#define IDS_ITEM_FEATHER 643 -#define IDS_ITEM_SULPHUR 644 -#define IDS_ITEM_WHEAT_SEEDS 645 -#define IDS_ITEM_WHEAT 646 -#define IDS_ITEM_BREAD 647 -#define IDS_ITEM_FLINT 648 -#define IDS_ITEM_PORKCHOP_RAW 649 -#define IDS_ITEM_PORKCHOP_COOKED 650 -#define IDS_ITEM_PAINTING 651 -#define IDS_ITEM_APPLE_GOLD 652 -#define IDS_ITEM_SIGN 653 -#define IDS_ITEM_MINECART 654 -#define IDS_ITEM_SADDLE 655 -#define IDS_ITEM_REDSTONE 656 -#define IDS_ITEM_SNOWBALL 657 -#define IDS_ITEM_BOAT 658 -#define IDS_ITEM_LEATHER 659 -#define IDS_ITEM_BUCKET_MILK 660 -#define IDS_ITEM_BRICK 661 -#define IDS_ITEM_CLAY 662 -#define IDS_ITEM_REEDS 663 -#define IDS_ITEM_PAPER 664 -#define IDS_ITEM_BOOK 665 -#define IDS_ITEM_SLIMEBALL 666 -#define IDS_ITEM_MINECART_CHEST 667 -#define IDS_ITEM_MINECART_FURNACE 668 -#define IDS_ITEM_EGG 669 -#define IDS_ITEM_COMPASS 670 -#define IDS_ITEM_FISHING_ROD 671 -#define IDS_ITEM_CLOCK 672 -#define IDS_ITEM_YELLOW_DUST 673 -#define IDS_ITEM_FISH_RAW 674 -#define IDS_ITEM_FISH_COOKED 675 -#define IDS_ITEM_DYE_POWDER 676 -#define IDS_ITEM_DYE_POWDER_BLACK 677 -#define IDS_ITEM_DYE_POWDER_RED 678 -#define IDS_ITEM_DYE_POWDER_GREEN 679 -#define IDS_ITEM_DYE_POWDER_BROWN 680 -#define IDS_ITEM_DYE_POWDER_BLUE 681 -#define IDS_ITEM_DYE_POWDER_PURPLE 682 -#define IDS_ITEM_DYE_POWDER_CYAN 683 -#define IDS_ITEM_DYE_POWDER_SILVER 684 -#define IDS_ITEM_DYE_POWDER_GRAY 685 -#define IDS_ITEM_DYE_POWDER_PINK 686 -#define IDS_ITEM_DYE_POWDER_LIME 687 -#define IDS_ITEM_DYE_POWDER_YELLOW 688 -#define IDS_ITEM_DYE_POWDER_LIGHT_BLUE 689 -#define IDS_ITEM_DYE_POWDER_MAGENTA 690 -#define IDS_ITEM_DYE_POWDER_ORANGE 691 -#define IDS_ITEM_DYE_POWDER_WHITE 692 -#define IDS_ITEM_BONE 693 -#define IDS_ITEM_SUGAR 694 -#define IDS_ITEM_CAKE 695 -#define IDS_ITEM_BED 696 -#define IDS_ITEM_DIODE 697 -#define IDS_ITEM_COOKIE 698 -#define IDS_ITEM_MAP 699 -#define IDS_ITEM_MAP_EMPTY 700 -#define IDS_ITEM_RECORD_01 701 -#define IDS_ITEM_RECORD_02 702 -#define IDS_ITEM_RECORD_03 703 -#define IDS_ITEM_RECORD_04 704 -#define IDS_ITEM_RECORD_05 705 -#define IDS_ITEM_RECORD_06 706 -#define IDS_ITEM_RECORD_07 707 -#define IDS_ITEM_RECORD_08 708 -#define IDS_ITEM_RECORD_09 709 -#define IDS_ITEM_RECORD_10 710 -#define IDS_ITEM_RECORD_11 711 -#define IDS_ITEM_RECORD_12 712 -#define IDS_ITEM_SHEARS 713 -#define IDS_ITEM_PUMPKIN_SEEDS 714 -#define IDS_ITEM_MELON_SEEDS 715 -#define IDS_ITEM_CHICKEN_RAW 716 -#define IDS_ITEM_CHICKEN_COOKED 717 -#define IDS_ITEM_BEEF_RAW 718 -#define IDS_ITEM_BEEF_COOKED 719 -#define IDS_ITEM_ROTTEN_FLESH 720 -#define IDS_ITEM_ENDER_PEARL 721 -#define IDS_ITEM_MELON_SLICE 722 -#define IDS_ITEM_BLAZE_ROD 723 -#define IDS_ITEM_GHAST_TEAR 724 -#define IDS_ITEM_GOLD_NUGGET 725 -#define IDS_ITEM_NETHER_STALK_SEEDS 726 -#define IDS_ITEM_POTION 727 -#define IDS_ITEM_GLASS_BOTTLE 728 -#define IDS_ITEM_WATER_BOTTLE 729 -#define IDS_ITEM_SPIDER_EYE 730 -#define IDS_ITEM_FERMENTED_SPIDER_EYE 731 -#define IDS_ITEM_BLAZE_POWDER 732 -#define IDS_ITEM_MAGMA_CREAM 733 -#define IDS_ITEM_BREWING_STAND 734 -#define IDS_ITEM_CAULDRON 735 -#define IDS_ITEM_EYE_OF_ENDER 736 -#define IDS_ITEM_SPECKLED_MELON 737 -#define IDS_ITEM_EXP_BOTTLE 738 -#define IDS_ITEM_FIREBALL 739 -#define IDS_ITEM_FIREBALLCHARCOAL 740 -#define IDS_ITEM_FIREBALLCOAL 741 -#define IDS_ITEM_ITEMFRAME 742 -#define IDS_ITEM_MONSTER_SPAWNER 743 -#define IDS_ITEM_NETHERBRICK 744 -#define IDS_ITEM_SKULL 745 -#define IDS_ITEM_SKULL_SKELETON 746 -#define IDS_ITEM_SKULL_WITHER 747 -#define IDS_ITEM_SKULL_ZOMBIE 748 -#define IDS_ITEM_SKULL_CHARACTER 749 -#define IDS_ITEM_SKULL_PLAYER 750 -#define IDS_ITEM_SKULL_CREEPER 751 -#define IDS_NETHER_STAR 752 -#define IDS_FIREWORKS 753 -#define IDS_FIREWORKS_CHARGE 754 -#define IDS_ITEM_COMPARATOR 755 -#define IDS_ITEM_MINECART_TNT 756 -#define IDS_ITEM_MINECART_HOPPER 757 -#define IDS_ITEM_IRON_HORSE_ARMOR 758 -#define IDS_ITEM_GOLD_HORSE_ARMOR 759 -#define IDS_ITEM_DIAMOND_HORSE_ARMOR 760 -#define IDS_ITEM_LEAD 761 -#define IDS_ITEM_NAME_TAG 762 -#define IDS_TILE_STONE 763 -#define IDS_TILE_GRASS 764 -#define IDS_TILE_DIRT 765 -#define IDS_TILE_STONE_BRICK 766 -#define IDS_TILE_OAKWOOD_PLANKS 767 -#define IDS_TILE_SPRUCEWOOD_PLANKS 768 -#define IDS_TILE_BIRCHWOOD_PLANKS 769 -#define IDS_TILE_JUNGLE_PLANKS 770 -#define IDS_TILE_ACACIA_PLANKS 771 -#define IDS_TILE_DARK_OAK_PLANKS 772 -#define IDS_TILE_PLANKS 773 -#define IDS_TILE_SAPLING 774 -#define IDS_TILE_SAPLING_OAK 775 -#define IDS_TILE_SAPLING_SPRUCE 776 -#define IDS_TILE_SAPLING_BIRCH 777 -#define IDS_TILE_SAPLING_JUNGLE 778 -#define IDS_TILE_BEDROCK 779 -#define IDS_TILE_WATER 780 -#define IDS_TILE_LAVA 781 -#define IDS_TILE_SAND 782 -#define IDS_TILE_SANDSTONE 783 -#define IDS_TILE_GRAVEL 784 -#define IDS_TILE_ORE_GOLD 785 -#define IDS_TILE_ORE_IRON 786 -#define IDS_TILE_ORE_COAL 787 -#define IDS_TILE_LOG 788 -#define IDS_TILE_LOG_OAK 789 -#define IDS_TILE_LOG_SPRUCE 790 -#define IDS_TILE_LOG_BIRCH 791 -#define IDS_TILE_LOG_JUNGLE 792 -#define IDS_TILE_LOG_ACACIA 793 -#define IDS_TILE_LOG_DARK_OAK 794 -#define IDS_TILE_OAK 795 -#define IDS_TILE_SPRUCE 796 -#define IDS_TILE_BIRCH 797 -#define IDS_TILE_LEAVES 798 -#define IDS_TILE_LEAVES_OAK 799 -#define IDS_TILE_LEAVES_SPRUCE 800 -#define IDS_TILE_LEAVES_BIRCH 801 -#define IDS_TILE_LEAVES_JUNGLE 802 -#define IDS_TILE_LEAVES_ACACIA 803 -#define IDS_TILE_LEAVES_DARK_OAK 804 -#define IDS_TILE_SPONGE 805 -#define IDS_TILE_GLASS 806 -#define IDS_TILE_CLOTH 807 -#define IDS_TILE_CLOTH_BLACK 808 -#define IDS_TILE_CLOTH_RED 809 -#define IDS_TILE_CLOTH_GREEN 810 -#define IDS_TILE_CLOTH_BROWN 811 -#define IDS_TILE_CLOTH_BLUE 812 -#define IDS_TILE_CLOTH_PURPLE 813 -#define IDS_TILE_CLOTH_CYAN 814 -#define IDS_TILE_CLOTH_SILVER 815 -#define IDS_TILE_CLOTH_GRAY 816 -#define IDS_TILE_CLOTH_PINK 817 -#define IDS_TILE_CLOTH_LIME 818 -#define IDS_TILE_CLOTH_YELLOW 819 -#define IDS_TILE_CLOTH_LIGHT_BLUE 820 -#define IDS_TILE_CLOTH_MAGENTA 821 -#define IDS_TILE_CLOTH_ORANGE 822 -#define IDS_TILE_CLOTH_WHITE 823 -#define IDS_TILE_FLOWER 824 -#define IDS_TILE_ROSE 825 -#define IDS_TILE_MUSHROOM 826 -#define IDS_TILE_BLOCK_GOLD 827 -#define IDS_DESC_BLOCK_GOLD 828 -#define IDS_DESC_BLOCK_IRON 829 -#define IDS_TILE_BLOCK_IRON 830 -#define IDS_TILE_STONESLAB 831 -#define IDS_TILE_STONESLAB_STONE 832 -#define IDS_TILE_STONESLAB_SAND 833 -#define IDS_TILE_STONESLAB_WOOD 834 -#define IDS_TILE_STONESLAB_COBBLE 835 -#define IDS_TILE_STONESLAB_BRICK 836 -#define IDS_TILE_STONESLAB_SMOOTHBRICK 837 -#define IDS_TILE_STONESLAB_OAK 838 -#define IDS_TILE_STONESLAB_SPRUCE 839 -#define IDS_TILE_STONESLAB_BIRCH 840 -#define IDS_TILE_STONESLAB_JUNGLE 841 -#define IDS_TILE_STONESLAB_NETHERBRICK 842 -#define IDS_TILE_BRICK 843 -#define IDS_TILE_TNT 844 -#define IDS_TILE_BOOKSHELF 845 -#define IDS_TILE_STONE_MOSS 846 -#define IDS_TILE_OBSIDIAN 847 -#define IDS_TILE_TORCH 848 -#define IDS_TILE_TORCHCOAL 849 -#define IDS_TILE_TORCHCHARCOAL 850 -#define IDS_TILE_FIRE 851 -#define IDS_TILE_MOB_SPAWNER 852 -#define IDS_TILE_STAIRS_WOOD 853 -#define IDS_TILE_CHEST 854 -#define IDS_TILE_REDSTONE_DUST 855 -#define IDS_TILE_ORE_DIAMOND 856 -#define IDS_TILE_BLOCK_DIAMOND 857 -#define IDS_DESC_BLOCK_DIAMOND 858 -#define IDS_TILE_WORKBENCH 859 -#define IDS_TILE_CROPS 860 -#define IDS_TILE_FARMLAND 861 -#define IDS_TILE_FURNACE 862 -#define IDS_TILE_SIGN 863 -#define IDS_TILE_DOOR_WOOD 864 -#define IDS_TILE_DOOR_SPRUCE 865 -#define IDS_TILE_DOOR_BIRCH 866 -#define IDS_TILE_DOOR_JUNGLE 867 -#define IDS_TILE_DOOR_ACACIA 868 -#define IDS_TILE_DOOR_DARK_OAK 869 -#define IDS_TILE_LADDER 870 -#define IDS_TILE_RAIL 871 -#define IDS_TILE_GOLDEN_RAIL 872 -#define IDS_TILE_DETECTOR_RAIL 873 -#define IDS_TILE_STAIRS_STONE 874 -#define IDS_TILE_LEVER 875 -#define IDS_TILE_PRESSURE_PLATE 876 -#define IDS_TILE_DOOR_IRON 877 -#define IDS_TILE_ORE_REDSTONE 878 -#define IDS_TILE_NOT_GATE 879 -#define IDS_TILE_BUTTON 880 -#define IDS_TILE_SNOW 881 -#define IDS_TILE_ICE 882 -#define IDS_TILE_CACTUS 883 -#define IDS_TILE_CLAY 884 -#define IDS_TILE_REEDS 885 -#define IDS_TILE_JUKEBOX 886 -#define IDS_TILE_FENCE 887 -#define IDS_TILE_FENCE_SPRUCE 888 -#define IDS_TILE_FENCE_BIRCH 889 -#define IDS_TILE_FENCE_JUNGLE 890 -#define IDS_TILE_FENCE_ACACIA 891 -#define IDS_TILE_FENCE_DARK_OAK 892 -#define IDS_TILE_PUMPKIN 893 -#define IDS_TILE_LIT_PUMPKIN 894 -#define IDS_TILE_HELL_ROCK 895 -#define IDS_TILE_HELL_SAND 896 -#define IDS_TILE_LIGHT_GEM 897 -#define IDS_TILE_PORTAL 898 -#define IDS_TILE_ORE_LAPIS 899 -#define IDS_TILE_BLOCK_LAPIS 900 -#define IDS_DESC_BLOCK_LAPIS 901 -#define IDS_TILE_DISPENSER 902 -#define IDS_TILE_MUSIC_BLOCK 903 -#define IDS_TILE_CAKE 904 -#define IDS_TILE_BED 905 -#define IDS_TILE_WEB 906 -#define IDS_TILE_TALL_GRASS 907 -#define IDS_TILE_DEAD_BUSH 908 -#define IDS_TILE_DIODE 909 -#define IDS_TILE_LOCKED_CHEST 910 -#define IDS_TILE_TRAPDOOR 911 -#define IDS_TILE_TRAPDOOR_IRON 912 -#define IDS_ANY_WOOL 913 -#define IDS_TILE_PISTON_BASE 914 -#define IDS_TILE_PISTON_STICK_BASE 915 -#define IDS_TILE_MONSTER_STONE_EGG 916 -#define IDS_TILE_STONE_BRICK_SMOOTH 917 -#define IDS_TILE_STONE_BRICK_SMOOTH_MOSSY 918 -#define IDS_TILE_STONE_BRICK_SMOOTH_CRACKED 919 -#define IDS_TILE_STONE_BRICK_SMOOTH_CHISELED 920 -#define IDS_TILE_HUGE_MUSHROOM_1 921 -#define IDS_TILE_HUGE_MUSHROOM_2 922 -#define IDS_TILE_IRON_FENCE 923 -#define IDS_TILE_THIN_GLASS 924 -#define IDS_TILE_MELON 925 -#define IDS_TILE_PUMPKIN_STEM 926 -#define IDS_TILE_MELON_STEM 927 -#define IDS_TILE_VINE 928 -#define IDS_TILE_FENCE_GATE 929 -#define IDS_TILE_FENCE_GATE_SPRUCE 930 -#define IDS_TILE_FENCE_GATE_BIRCH 931 -#define IDS_TILE_FENCE_GATE_JUNGLE 932 -#define IDS_TILE_FENCE_GATE_ACACIA 933 -#define IDS_TILE_FENCE_GATE_DARK_OAK 934 -#define IDS_TILE_STAIRS_BRICKS 935 -#define IDS_TILE_STAIRS_STONE_BRICKS_SMOOTH 936 -#define IDS_TILE_STONE_SILVERFISH 937 -#define IDS_TILE_STONE_SILVERFISH_COBBLESTONE 938 -#define IDS_TILE_STONE_SILVERFISH_STONE_BRICK 939 -#define IDS_TILE_MYCEL 940 -#define IDS_TILE_WATERLILY 941 -#define IDS_TILE_NETHERBRICK 942 -#define IDS_TILE_NETHERFENCE 943 -#define IDS_TILE_STAIRS_NETHERBRICK 944 -#define IDS_TILE_NETHERSTALK 945 -#define IDS_TILE_ENCHANTMENTTABLE 946 -#define IDS_TILE_BREWINGSTAND 947 -#define IDS_TILE_CAULDRON 948 -#define IDS_TILE_END_PORTAL 949 -#define IDS_TILE_ENDPORTALFRAME 950 -#define IDS_TILE_WHITESTONE 951 -#define IDS_TILE_DRAGONEGG 952 -#define IDS_TILE_SHRUB 953 -#define IDS_TILE_FERN 954 -#define IDS_TILE_STAIRS_SANDSTONE 955 -#define IDS_TILE_STAIRS_SPRUCEWOOD 956 -#define IDS_TILE_STAIRS_BIRCHWOOD 957 -#define IDS_TILE_STAIRS_JUNGLEWOOD 958 -#define IDS_TILE_STAIRS_ACACIA_WOOD 959 -#define IDS_TILE_STAIRS_DARK_OAK_WOOD 960 -#define IDS_TILE_REDSTONE_LIGHT 961 -#define IDS_TILE_COCOA 962 -#define IDS_TILE_SKULL 963 -#define IDS_TILE_COMMAND_BLOCK 964 -#define IDS_TILE_BEACON 965 -#define IDS_TILE_CHEST_TRAP 966 -#define IDS_TILE_WEIGHTED_PLATE_LIGHT 967 -#define IDS_TILE_WEIGHTED_PLATE_HEAVY 968 -#define IDS_TILE_COMPARATOR 969 -#define IDS_TILE_DAYLIGHT_DETECTOR 970 -#define IDS_TILE_REDSTONE_BLOCK 971 -#define IDS_TILE_HOPPER 972 -#define IDS_TILE_ACTIVATOR_RAIL 973 -#define IDS_TILE_DROPPER 974 -#define IDS_TILE_STAINED_CLAY 975 -#define IDS_TILE_HAY 976 -#define IDS_TILE_HARDENED_CLAY 977 -#define IDS_TILE_COAL 978 -#define IDS_TILE_STAINED_CLAY_BLACK 979 -#define IDS_TILE_STAINED_CLAY_RED 980 -#define IDS_TILE_STAINED_CLAY_GREEN 981 -#define IDS_TILE_STAINED_CLAY_BROWN 982 -#define IDS_TILE_STAINED_CLAY_BLUE 983 -#define IDS_TILE_STAINED_CLAY_PURPLE 984 -#define IDS_TILE_STAINED_CLAY_CYAN 985 -#define IDS_TILE_STAINED_CLAY_SILVER 986 -#define IDS_TILE_STAINED_CLAY_GRAY 987 -#define IDS_TILE_STAINED_CLAY_PINK 988 -#define IDS_TILE_STAINED_CLAY_LIME 989 -#define IDS_TILE_STAINED_CLAY_YELLOW 990 -#define IDS_TILE_STAINED_CLAY_LIGHT_BLUE 991 -#define IDS_TILE_STAINED_CLAY_MAGENTA 992 -#define IDS_TILE_STAINED_CLAY_ORANGE 993 -#define IDS_TILE_STAINED_CLAY_WHITE 994 -#define IDS_TILE_STAINED_GLASS 995 -#define IDS_TILE_STAINED_GLASS_BLACK 996 -#define IDS_TILE_STAINED_GLASS_RED 997 -#define IDS_TILE_STAINED_GLASS_GREEN 998 -#define IDS_TILE_STAINED_GLASS_BROWN 999 -#define IDS_TILE_STAINED_GLASS_BLUE 1000 -#define IDS_TILE_STAINED_GLASS_PURPLE 1001 -#define IDS_TILE_STAINED_GLASS_CYAN 1002 -#define IDS_TILE_STAINED_GLASS_SILVER 1003 -#define IDS_TILE_STAINED_GLASS_GRAY 1004 -#define IDS_TILE_STAINED_GLASS_PINK 1005 -#define IDS_TILE_STAINED_GLASS_LIME 1006 -#define IDS_TILE_STAINED_GLASS_YELLOW 1007 -#define IDS_TILE_STAINED_GLASS_LIGHT_BLUE 1008 -#define IDS_TILE_STAINED_GLASS_MAGENTA 1009 -#define IDS_TILE_STAINED_GLASS_ORANGE 1010 -#define IDS_TILE_STAINED_GLASS_WHITE 1011 -#define IDS_TILE_STAINED_GLASS_PANE 1012 -#define IDS_TILE_STAINED_GLASS_PANE_BLACK 1013 -#define IDS_TILE_STAINED_GLASS_PANE_RED 1014 -#define IDS_TILE_STAINED_GLASS_PANE_GREEN 1015 -#define IDS_TILE_STAINED_GLASS_PANE_BROWN 1016 -#define IDS_TILE_STAINED_GLASS_PANE_BLUE 1017 -#define IDS_TILE_STAINED_GLASS_PANE_PURPLE 1018 -#define IDS_TILE_STAINED_GLASS_PANE_CYAN 1019 -#define IDS_TILE_STAINED_GLASS_PANE_SILVER 1020 -#define IDS_TILE_STAINED_GLASS_PANE_GRAY 1021 -#define IDS_TILE_STAINED_GLASS_PANE_PINK 1022 -#define IDS_TILE_STAINED_GLASS_PANE_LIME 1023 -#define IDS_TILE_STAINED_GLASS_PANE_YELLOW 1024 -#define IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE 1025 -#define IDS_TILE_STAINED_GLASS_PANE_MAGENTA 1026 -#define IDS_TILE_STAINED_GLASS_PANE_ORANGE 1027 -#define IDS_TILE_STAINED_GLASS_PANE_WHITE 1028 -#define IDS_FIREWORKS_CHARGE_TYPE_0 1029 -#define IDS_FIREWORKS_CHARGE_TYPE_1 1030 -#define IDS_FIREWORKS_CHARGE_TYPE_2 1031 -#define IDS_FIREWORKS_CHARGE_TYPE_3 1032 -#define IDS_FIREWORKS_CHARGE_TYPE_4 1033 -#define IDS_FIREWORKS_CHARGE_TYPE 1034 -#define IDS_FIREWORKS_CHARGE_BLACK 1035 -#define IDS_FIREWORKS_CHARGE_RED 1036 -#define IDS_FIREWORKS_CHARGE_GREEN 1037 -#define IDS_FIREWORKS_CHARGE_BROWN 1038 -#define IDS_FIREWORKS_CHARGE_BLUE 1039 -#define IDS_FIREWORKS_CHARGE_PURPLE 1040 -#define IDS_FIREWORKS_CHARGE_CYAN 1041 -#define IDS_FIREWORKS_CHARGE_SILVER 1042 -#define IDS_FIREWORKS_CHARGE_GRAY 1043 -#define IDS_FIREWORKS_CHARGE_PINK 1044 -#define IDS_FIREWORKS_CHARGE_LIME 1045 -#define IDS_FIREWORKS_CHARGE_YELLOW 1046 -#define IDS_FIREWORKS_CHARGE_LIGHT_BLUE 1047 -#define IDS_FIREWORKS_CHARGE_MAGENTA 1048 -#define IDS_FIREWORKS_CHARGE_ORANGE 1049 -#define IDS_FIREWORKS_CHARGE_WHITE 1050 -#define IDS_FIREWORKS_CHARGE_CUSTOM 1051 -#define IDS_FIREWORKS_CHARGE_FADE_TO 1052 -#define IDS_FIREWORKS_CHARGE_FLICKER 1053 -#define IDS_FIREWORKS_CHARGE_TRAIL 1054 -#define IDS_ITEM_FIREWORKS_FLIGHT 1055 -#define IDS_CURRENT_LAYOUT 1056 -#define IDS_CONTROLS_LAYOUT 1057 -#define IDS_CONTROLS_MOVE 1058 -#define IDS_CONTROLS_LOOK 1059 -#define IDS_CONTROLS_PAUSE 1060 -#define IDS_CONTROLS_JUMP 1061 -#define IDS_CONTROLS_JUMPFLY 1062 -#define IDS_CONTROLS_INVENTORY 1063 -#define IDS_CONTROLS_HELDITEM 1064 -#define IDS_CONTROLS_ACTION 1065 -#define IDS_CONTROLS_USE 1066 -#define IDS_CONTROLS_CRAFTING 1067 -#define IDS_CONTROLS_DROP 1068 -#define IDS_CONTROLS_SNEAK 1069 -#define IDS_CONTROLS_SNEAKFLY 1070 -#define IDS_CONTROLS_THIRDPERSON 1071 -#define IDS_CONTROLS_PLAYERS 1072 -#define IDS_CONTROLS_DPAD 1073 -#define IDS_CONTROLS_SCHEME0 1074 -#define IDS_CONTROLS_SCHEME1 1075 -#define IDS_CONTROLS_SCHEME2 1076 -#define IDS_CONTROLLER_A 1077 -#define IDS_CONTROLLER_B 1078 -#define IDS_CONTROLLER_X 1079 -#define IDS_CONTROLLER_Y 1080 -#define IDS_CONTROLLER_LEFT_STICK 1081 -#define IDS_CONTROLLER_RIGHT_STICK 1082 -#define IDS_CONTROLLER_LEFT_TRIGGER 1083 -#define IDS_CONTROLLER_RIGHT_TRIGGER 1084 -#define IDS_CONTROLLER_LEFT_BUMPER 1085 -#define IDS_CONTROLLER_RIGHT_BUMPER 1086 -#define IDS_CONTROLLER_BACK 1087 -#define IDS_CONTROLLER_START 1088 -#define IDS_CONTROLLER_RIGHT_THUMBSTICK 1089 -#define IDS_CONTROLLER_LEFT_THUMBSTICK 1090 -#define IDS_CONTROLLER_DPAD_R 1091 -#define IDS_CONTROLLER_DPAD_L 1092 -#define IDS_CONTROLLER_DPAD_U 1093 -#define IDS_CONTROLLER_DPAD_D 1094 -#define IDS_ICON_SHANK_01 1095 -#define IDS_ICON_SHANK_03 1096 -#define IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE 1097 -#define IDS_TUTORIAL_PROMPT_START_TUTORIAL 1098 -#define IDS_TUTORIAL_TASK_OVERVIEW 1099 -#define IDS_TUTORIAL_TASK_LOOK 1100 -#define IDS_TUTORIAL_TASK_MOVE 1101 -#define IDS_TUTORIAL_TASK_SPRINT 1102 -#define IDS_TUTORIAL_TASK_JUMP 1103 -#define IDS_TUTORIAL_TASK_MINE 1104 -#define IDS_TUTORIAL_TASK_CHOP_WOOD 1105 -#define IDS_TUTORIAL_TASK_CRAFTING 1106 -#define IDS_TUTORIAL_TASK_INVENTORY 1107 -#define IDS_TUTORIAL_TASK_FOOD_BAR_DEPLETE 1108 -#define IDS_TUTORIAL_TASK_FOOD_BAR_HEAL 1109 -#define IDS_TUTORIAL_TASK_FOOD_BAR_FEED 1110 -#define IDS_TUTORIAL_TASK_FOOD_BAR_EAT_STEAK 1111 -#define IDS_TUTORIAL_TASK_CREATE_PLANKS 1112 -#define IDS_TUTORIAL_TASK_CREATE_CRAFTING_TABLE 1113 -#define IDS_TUTORIAL_TASK_CREATE_STICKS 1114 -#define IDS_TUTORIAL_TASK_SCROLL 1115 -#define IDS_TUTORIAL_TASK_USE 1116 -#define IDS_TUTORIAL_TASK_PLACE_WORKBENCH 1117 -#define IDS_TUTORIAL_TASK_OPEN_WORKBENCH 1118 -#define IDS_TUTORIAL_TASK_CREATE_WOODEN_SHOVEL 1119 -#define IDS_TUTORIAL_TASK_CREATE_WOODEN_HATCHET 1120 -#define IDS_TUTORIAL_TASK_CREATE_WOODEN_PICKAXE 1121 -#define IDS_TUTORIAL_TASK_OPEN_CONTAINER 1122 -#define IDS_TUTORIAL_TASK_NIGHT_DANGER 1123 -#define IDS_TUTORIAL_TASK_NEARBY_SHELTER 1124 -#define IDS_TUTORIAL_TASK_COLLECT_RESOURCES 1125 -#define IDS_TUTORIAL_TASK_MINE_STONE 1126 -#define IDS_TUTORIAL_TASK_CREATE_FURNACE 1127 -#define IDS_TUTORIAL_TASK_PLACE_AND_OPEN_FURNACE 1128 -#define IDS_TUTORIAL_TASK_CREATE_CHARCOAL 1129 -#define IDS_TUTORIAL_TASK_CREATE_GLASS 1130 -#define IDS_TUTORIAL_TASK_CREATE_WOODEN_DOOR 1131 -#define IDS_TUTORIAL_TASK_PLACE_DOOR 1132 -#define IDS_TUTORIAL_TASK_CREATE_TORCH 1133 -#define IDS_TUTORIAL_TASK_BASIC_COMPLETE 1134 -#define IDS_TUTORIAL_PROMPT_BASIC_COMPLETE 1135 -#define IDS_TUTORIAL_TASK_INV_OVERVIEW 1136 -#define IDS_TUTORIAL_PROMPT_INV_OVERVIEW 1137 -#define IDS_TUTORIAL_TASK_INV_PICK_UP 1138 -#define IDS_TUTORIAL_TASK_INV_MOVE 1139 -#define IDS_TUTORIAL_TASK_INV_DROP 1140 -#define IDS_TUTORIAL_TASK_INV_INFO 1141 -#define IDS_TUTORIAL_TASK_INV_EXIT 1142 -#define IDS_TUTORIAL_TASK_CREATIVE_INV_OVERVIEW 1143 -#define IDS_TUTORIAL_PROMPT_CREATIVE_INV_OVERVIEW 1144 -#define IDS_TUTORIAL_TASK_CREATIVE_INV_PICK_UP 1145 -#define IDS_TUTORIAL_TASK_CREATIVE_INV_MOVE 1146 -#define IDS_TUTORIAL_TASK_CREATIVE_INV_DROP 1147 -#define IDS_TUTORIAL_TASK_CREATIVE_INV_NAV 1148 -#define IDS_TUTORIAL_TASK_CREATIVE_INV_INFO 1149 -#define IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT 1150 -#define IDS_TUTORIAL_TASK_CRAFT_OVERVIEW 1151 -#define IDS_TUTORIAL_PROMPT_CRAFT_OVERVIEW 1152 -#define IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_DESCRIPTION 1153 -#define IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_INGREDIENTS 1154 -#define IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_INVENTORY 1155 -#define IDS_TUTORIAL_TASK_CRAFT_NAV 1156 -#define IDS_TUTORIAL_TASK_CRAFT_CREATE 1157 -#define IDS_TUTORIAL_TASK_CRAFT_CRAFT_TABLE 1158 -#define IDS_TUTORIAL_TASK_CRAFT_INVENTORY 1159 -#define IDS_TUTORIAL_TASK_CRAFT_DESCRIPTION 1160 -#define IDS_TUTORIAL_TASK_CRAFT_INGREDIENTS 1161 -#define IDS_TUTORIAL_TASK_CRAFT_CREATE_PLANKS 1162 -#define IDS_TUTORIAL_TASK_CRAFT_EXIT_AND_PLACE_TABLE 1163 -#define IDS_TUTORIAL_TASK_CRAFT_SELECT_TOOLS 1164 -#define IDS_TUTORIAL_TASK_CRAFT_SELECT_STRUCTURES 1165 -#define IDS_TUTORIAL_TASK_CRAFT_SELECT_WOODEN_SHOVEL 1166 -#define IDS_TUTORIAL_TASK_CRAFT_SELECT_CRAFTING_TABLE 1167 -#define IDS_TUTORIAL_TASK_CRAFT_TOOLS_BUILT 1168 -#define IDS_TUTORIAL_TASK_CRAFT_CREATE_FURNACE 1169 -#define IDS_TUTORIAL_TASK_CRAFT_EXIT_AND_PLACE_FURNACE 1170 -#define IDS_TUTORIAL_TASK_FURNACE_OVERVIEW 1171 -#define IDS_TUTORIAL_PROMPT_FURNACE_OVERVIEW 1172 -#define IDS_TUTORIAL_TASK_FURNACE_METHOD 1173 -#define IDS_TUTORIAL_TASK_FURNACE_FUELS 1174 -#define IDS_TUTORIAL_TASK_FURNACE_INGREDIENTS 1175 -#define IDS_TUTORIAL_TASK_FURNACE_CREATE_CHARCOAL 1176 -#define IDS_TUTORIAL_TASK_FURNACE_CHARCOAL_USES 1177 -#define IDS_TUTORIAL_TASK_FURNACE_CREATE_GLASS 1178 -#define IDS_TUTORIAL_TASK_BREWING_MENU_OVERVIEW 1179 -#define IDS_TUTORIAL_PROMPT_BREWING_MENU_OVERVIEW 1180 -#define IDS_TUTORIAL_TASK_BREWING_MENU_METHOD 1181 -#define IDS_TUTORIAL_TASK_BREWING_MENU_BASIC_INGREDIENTS 1182 -#define IDS_TUTORIAL_TASK_BREWING_MENU_EXTENDED_INGREDIENTS 1183 -#define IDS_TUTORIAL_TASK_BREWING_MENU_EXTENDED_INGREDIENTS_2 1184 -#define IDS_TUTORIAL_TASK_BREWING_MENU_CREATE_FIRE_POTION 1185 -#define IDS_TUTORIAL_TASK_BREWING_MENU_EXIT 1186 -#define IDS_TUTORIAL_TASK_BREWING_OVERVIEW 1187 -#define IDS_TUTORIAL_PROMPT_BREWING_OVERVIEW 1188 -#define IDS_TUTORIAL_TASK_BREWING_GET_GLASS_BOTTLE 1189 -#define IDS_TUTORIAL_TASK_BREWING_FILL_GLASS_BOTTLE 1190 -#define IDS_TUTORIAL_TASK_BREWING_FILL_CAULDRON 1191 -#define IDS_TUTORIAL_TASK_BREWING_CREATE_FIRE_POTION 1192 -#define IDS_TUTORIAL_TASK_BREWING_USE_POTION 1193 -#define IDS_TUTORIAL_TASK_BREWING_DRINK_FIRE_POTION 1194 -#define IDS_TUTORIAL_TASK_BREWING_USE_EFFECTS 1195 -#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_OVERVIEW 1196 -#define IDS_TUTORIAL_PROMPT_ENCHANTING_MENU_OVERVIEW 1197 -#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_START 1198 -#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_ENCHANTMENTS 1199 -#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_COST 1200 -#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_ENCHANT 1201 -#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_BETTER_ENCHANTMENTS 1202 -#define IDS_TUTORIAL_TASK_ENCHANTING_OVERVIEW 1203 -#define IDS_TUTORIAL_PROMPT_ENCHANTING_OVERVIEW 1204 -#define IDS_TUTORIAL_TASK_ENCHANTING_SUMMARY 1205 -#define IDS_TUTORIAL_TASK_ENCHANTING_BOOKCASES 1206 -#define IDS_TUTORIAL_TASK_ENCHANTING_EXPERIENCE 1207 -#define IDS_TUTORIAL_TASK_ENCHANTING_BOTTLE_O_ENCHANTING 1208 -#define IDS_TUTORIAL_TASK_ENCHANTING_USE_CHESTS 1209 -#define IDS_TUTORIAL_TASK_MINECART_OVERVIEW 1210 -#define IDS_TUTORIAL_PROMPT_MINECART_OVERVIEW 1211 -#define IDS_TUTORIAL_TASK_MINECART_RAILS 1212 -#define IDS_TUTORIAL_TASK_MINECART_POWERED_RAILS 1213 -#define IDS_TUTORIAL_TASK_BOAT_OVERVIEW 1214 -#define IDS_TUTORIAL_PROMPT_BOAT_OVERVIEW 1215 -#define IDS_TUTORIAL_TASK_BOAT_STEER 1216 -#define IDS_TUTORIAL_TASK_FISHING_OVERVIEW 1217 -#define IDS_TUTORIAL_PROMPT_FISHING_OVERVIEW 1218 -#define IDS_TUTORIAL_TASK_FISHING_CAST 1219 -#define IDS_TUTORIAL_TASK_FISHING_FISH 1220 -#define IDS_TUTORIAL_TASK_FISHING_USES 1221 -#define IDS_TUTORIAL_TASK_BED_OVERVIEW 1222 -#define IDS_TUTORIAL_PROMPT_BED_OVERVIEW 1223 -#define IDS_TUTORIAL_TASK_BED_PLACEMENT 1224 -#define IDS_TUTORIAL_TASK_BED_MULTIPLAYER 1225 -#define IDS_TUTORIAL_REDSTONE_OVERVIEW 1226 -#define IDS_TUTORIAL_PROMPT_REDSTONE_OVERVIEW 1227 -#define IDS_TUTORIAL_TASK_REDSTONE_POWER_SOURCES 1228 -#define IDS_TUTORIAL_TASK_REDSTONE_POWER_SOURCES_POSITION 1229 -#define IDS_TUTORIAL_TASK_REDSTONE_DUST 1230 -#define IDS_TUTORIAL_TASK_REDSTONE_REPEATER 1231 -#define IDS_TUTORIAL_TASK_PISTONS 1232 -#define IDS_TUTORIAL_TASK_TRY_IT 1233 -#define IDS_TUTORIAL_PORTAL_OVERVIEW 1234 -#define IDS_TUTORIAL_PROMPT_PORTAL_OVERVIEW 1235 -#define IDS_TUTORIAL_TASK_BUILD_PORTAL 1236 -#define IDS_TUTORIAL_TASK_ACTIVATE_PORTAL 1237 -#define IDS_TUTORIAL_TASK_USE_PORTAL 1238 -#define IDS_TUTORIAL_TASK_NETHER 1239 -#define IDS_TUTORIAL_TASK_NETHER_FAST_TRAVEL 1240 -#define IDS_TUTORIAL_CREATIVE_OVERVIEW 1241 -#define IDS_TUTORIAL_PROMPT_CREATIVE_OVERVIEW 1242 -#define IDS_TUTORIAL_TASK_CREATIVE_MODE 1243 -#define IDS_TUTORIAL_TASK_OPEN_CREATIVE_INVENTORY 1244 -#define IDS_TUTORIAL_TASK_CREATIVE_EXIT 1245 -#define IDS_TUTORIAL_TASK_CREATIVE_COMPLETE 1246 -#define IDS_TUTORIAL_FARMING_OVERVIEW 1247 -#define IDS_TUTORIAL_PROMPT_FARMING_OVERVIEW 1248 -#define IDS_TUTORIAL_TASK_FARMING_SEEDS 1249 -#define IDS_TUTORIAL_TASK_FARMING_FARMLAND 1250 -#define IDS_TUTORIAL_TASK_FARMING_WHEAT 1251 -#define IDS_TUTORIAL_TASK_FARMING_PUMPKIN_AND_MELON 1252 -#define IDS_TUTORIAL_TASK_FARMING_SUGARCANE 1253 -#define IDS_TUTORIAL_TASK_FARMING_CACTUS 1254 -#define IDS_TUTORIAL_TASK_FARMING_MUSHROOM 1255 -#define IDS_TUTORIAL_TASK_FARMING_BONEMEAL 1256 -#define IDS_TUTORIAL_TASK_FARMING_COMPLETE 1257 -#define IDS_TUTORIAL_BREEDING_OVERVIEW 1258 -#define IDS_TUTORIAL_PROMPT_BREEDING_OVERVIEW 1259 -#define IDS_TUTORIAL_TASK_BREEDING_FEED 1260 -#define IDS_TUTORIAL_TASK_BREEDING_FEED_FOOD 1261 -#define IDS_TUTORIAL_TASK_BREEDING_BABY 1262 -#define IDS_TUTORIAL_TASK_BREEDING_DELAY 1263 -#define IDS_TUTORIAL_TASK_BREEDING_FOLLOW 1264 -#define IDS_TUTORIAL_TASK_BREEDING_WOLF_TAMING 1265 -#define IDS_TUTORIAL_TASK_BREEDING_COMPLETE 1266 -#define IDS_TUTORIAL_GOLEM_OVERVIEW 1267 -#define IDS_TUTORIAL_PROMPT_GOLEM_OVERVIEW 1268 -#define IDS_TUTORIAL_TASK_GOLEM_PUMPKIN 1269 -#define IDS_TUTORIAL_TASK_GOLEM_SNOW 1270 -#define IDS_TUTORIAL_TASK_GOLEM_IRON 1271 -#define IDS_TUTORIAL_TASK_GOLEM_IRON_VILLAGE 1272 -#define IDS_TUTORIAL_CONSTRAINT_TUTORIAL_AREA 1273 -#define IDS_TUTORIAL_HINT_DIGGER_ITEM_SHOVEL 1274 -#define IDS_TUTORIAL_HINT_DIGGER_ITEM_HATCHET 1275 -#define IDS_TUTORIAL_HINT_DIGGER_ITEM_PICKAXE 1276 -#define IDS_TUTORIAL_HINT_ATTACK_WITH_TOOL 1277 -#define IDS_TUTORIAL_HINT_HOLD_TO_MINE 1278 -#define IDS_TUTORIAL_HINT_TOOL_DAMAGED 1279 -#define IDS_TUTORIAL_HINT_SWIM_UP 1280 -#define IDS_TUTORIAL_HINT_MINECART 1281 -#define IDS_TUTORIAL_HINT_BOAT 1282 -#define IDS_TUTORIAL_HINT_FISHING 1283 -#define IDS_TUTORIAL_HINT_PISTON_SELF_REPAIRING_BRIDGE 1284 -#define IDS_TUTORIAL_HINT_INV_DROP 1285 -#define IDS_TUTORIAL_HINT_CRAFT_NO_INGREDIENTS 1286 -#define IDS_TUTORIAL_COMPLETED 1287 -#define IDS_TUTORIAL_COMPLETED_EXPLORE 1288 -#define IDS_TUTORIAL_REMINDER 1289 -#define IDS_TUTORIAL_HTML_EXIT_PICTURE 1290 -#define IDS_TUTORIAL_NEW_FEATURES_CHOICE 1291 -#define IDS_TUTORIAL_PROMPT_NEW_FEATURES_CHOICE 1292 -#define IDS_TUTORIAL_FEATURES_IN_THIS_AREA 1293 -#define IDS_TUTORIAL_FEATURES_OUTSIDE_THIS_AREA 1294 -#define IDS_TUTORIAL_TASK_FOOD_BAR_OVERVIEW 1295 -#define IDS_TUTORIAL_PROMPT_FOOD_BAR_OVERVIEW 1296 -#define IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW 1297 -#define IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW 1298 -#define IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT 1299 -#define IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT 1300 -#define IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS 1301 -#define IDS_TUTORIAL_TASK_HORSE_OVERVIEW 1302 -#define IDS_TUTORIAL_TASK_DONKEY_OVERVIEW 1303 -#define IDS_TUTORIAL_TASK_MULE_OVERVIEW 1304 -#define IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW 1305 -#define IDS_TUTORIAL_TASK_HORSE_INTRO 1306 -#define IDS_TUTORIAL_TASK_HORSE_PURPOSE 1307 -#define IDS_TUTORIAL_TASK_HORSE_TAMING 1308 -#define IDS_TUTORIAL_TASK_HORSE_TAMING2 1309 -#define IDS_TUTORIAL_TASK_HORSE_RIDE 1310 -#define IDS_TUTORIAL_TASK_HORSE_SADDLES 1311 -#define IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS 1312 -#define IDS_TUTORIAL_TASK_HORSE_BREEDING 1313 -#define IDS_TUTORIAL_TASK_HORSE_AREA 1314 -#define IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW 1315 -#define IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW 1316 -#define IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS 1317 -#define IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER 1318 -#define IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION 1319 -#define IDS_TUTORIAL_TASK_BEACON_OVERVIEW 1320 -#define IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW 1321 -#define IDS_TUTORIAL_TASK_BEACON_PURPOSE 1322 -#define IDS_TUTORIAL_TASK_BEACON_DESIGN 1323 -#define IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS 1324 -#define IDS_TUTORIAL_TASK_HOPPER_OVERVIEW 1325 -#define IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW 1326 -#define IDS_TUTORIAL_TASK_HOPPER_PURPOSE 1327 -#define IDS_TUTORIAL_TASK_HOPPER_CONTAINERS 1328 -#define IDS_TUTORIAL_TASK_HOPPER_MECHANICS 1329 -#define IDS_TUTORIAL_TASK_HOPPER_REDSTONE 1330 -#define IDS_TUTORIAL_TASK_HOPPER_OUTPUT 1331 -#define IDS_TUTORIAL_TASK_HOPPER_AREA 1332 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW 1333 -#define IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW 1334 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START 1335 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS 1336 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT 1337 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT 1338 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START 1339 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR 1340 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE 1341 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT 1342 -#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE 1343 -#define IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW 1344 -#define IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW 1345 -#define IDS_TUTORIAL_TASK_FIREWORK_PURPOSE 1346 -#define IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE 1347 -#define IDS_TUTORIAL_TASK_FIREWORK_CRAFTING 1348 -#define IDS_TOOLTIPS_SELECT 1349 -#define IDS_TOOLTIPS_USE 1350 -#define IDS_TOOLTIPS_BACK 1351 -#define IDS_TOOLTIPS_EXIT 1352 -#define IDS_TOOLTIPS_CANCEL 1353 -#define IDS_TOOLTIPS_CANCEL_JOIN 1354 -#define IDS_TOOLTIPS_REFRESH 1355 -#define IDS_TOOLTIPS_PARTY_GAMES 1356 -#define IDS_TOOLTIPS_ALL_GAMES 1357 -#define IDS_TOOLTIPS_CHANGE_GROUP 1358 -#define IDS_TOOLTIPS_SHOW_INVENTORY 1359 -#define IDS_TOOLTIPS_SHOW_DESCRIPTION 1360 -#define IDS_TOOLTIPS_SHOW_INGREDIENTS 1361 -#define IDS_TOOLTIPS_CRAFTING 1362 -#define IDS_TOOLTIPS_CREATE 1363 -#define IDS_TOOLTIPS_PICKUPPLACE 1364 -#define IDS_TOOLTIPS_PICKUP_GENERIC 1365 -#define IDS_TOOLTIPS_PICKUP_ALL 1366 -#define IDS_TOOLTIPS_PICKUP_HALF 1367 -#define IDS_TOOLTIPS_PLACE_GENERIC 1368 -#define IDS_TOOLTIPS_PLACE_ALL 1369 -#define IDS_TOOLTIPS_PLACE_ONE 1370 -#define IDS_TOOLTIPS_DROP_GENERIC 1371 -#define IDS_TOOLTIPS_DROP_ALL 1372 -#define IDS_TOOLTIPS_DROP_ONE 1373 -#define IDS_TOOLTIPS_SWAP 1374 -#define IDS_TOOLTIPS_QUICK_MOVE 1375 -#define IDS_TOOLTIPS_CLEAR_QUICK_SELECT 1376 -#define IDS_TOOLTIPS_WHAT_IS_THIS 1377 -#define IDS_TOOLTIPS_SHARE 1378 -#define IDS_TOOLTIPS_CHANGE_FILTER 1379 -#define IDS_TOOLTIPS_SEND_FRIEND_REQUEST 1380 -#define IDS_TOOLTIPS_PAGE_DOWN 1381 -#define IDS_TOOLTIPS_PAGE_UP 1382 -#define IDS_TOOLTIPS_NEXT 1383 -#define IDS_TOOLTIPS_PREVIOUS 1384 -#define IDS_TOOLTIPS_KICK 1385 -#define IDS_TOOLTIPS_DYE 1386 -#define IDS_TOOLTIPS_MINE 1387 -#define IDS_TOOLTIPS_FEED 1388 -#define IDS_TOOLTIPS_TAME 1389 -#define IDS_TOOLTIPS_HEAL 1390 -#define IDS_TOOLTIPS_SIT 1391 -#define IDS_TOOLTIPS_FOLLOWME 1392 -#define IDS_TOOLTIPS_EJECT 1393 -#define IDS_TOOLTIPS_EMPTY 1394 -#define IDS_TOOLTIPS_SADDLE 1395 -#define IDS_TOOLTIPS_PLACE 1396 -#define IDS_TOOLTIPS_HIT 1397 -#define IDS_TOOLTIPS_MILK 1398 -#define IDS_TOOLTIPS_COLLECT 1399 -#define IDS_TOOLTIPS_EAT 1400 -#define IDS_TOOLTIPS_SLEEP 1401 -#define IDS_TOOLTIPS_WAKEUP 1402 -#define IDS_TOOLTIPS_PLAY 1403 -#define IDS_TOOLTIPS_RIDE 1404 -#define IDS_TOOLTIPS_SAIL 1405 -#define IDS_TOOLTIPS_GROW 1406 -#define IDS_TOOLTIPS_SWIMUP 1407 -#define IDS_TOOLTIPS_OPEN 1408 -#define IDS_TOOLTIPS_CHANGEPITCH 1409 -#define IDS_TOOLTIPS_DETONATE 1410 -#define IDS_TOOLTIPS_READ 1411 -#define IDS_TOOLTIPS_HANG 1412 -#define IDS_TOOLTIPS_THROW 1413 -#define IDS_TOOLTIPS_PLANT 1414 -#define IDS_TOOLTIPS_TILL 1415 -#define IDS_TOOLTIPS_HARVEST 1416 -#define IDS_TOOLTIPS_CONTINUE 1417 -#define IDS_TOOLTIPS_UNLOCKFULLVERSION 1418 -#define IDS_TOOLTIPS_DELETESAVE 1419 -#define IDS_TOOLTIPS_DELETE 1420 -#define IDS_TOOLTIPS_OPTIONS 1421 -#define IDS_TOOLTIPS_INVITE_FRIENDS 1422 -#define IDS_TOOLTIPS_ACCEPT 1423 -#define IDS_TOOLTIPS_SHEAR 1424 -#define IDS_TOOLTIPS_BANLEVEL 1425 -#define IDS_TOOLTIPS_SELECT_SKIN 1426 -#define IDS_TOOLTIPS_IGNITE 1427 -#define IDS_TOOLTIPS_NAVIGATE 1428 -#define IDS_TOOLTIPS_INSTALL_FULL 1429 -#define IDS_TOOLTIPS_INSTALL_TRIAL 1430 -#define IDS_TOOLTIPS_INSTALL 1431 -#define IDS_TOOLTIPS_REINSTALL 1432 -#define IDS_TOOLTIPS_SAVEOPTIONS 1433 -#define IDS_TOOLTIPS_EXECUTE_COMMAND 1434 -#define IDS_TOOLTIPS_CREATIVE 1435 -#define IDS_TOOLTIPS_QUICK_MOVE_INGREDIENT 1436 -#define IDS_TOOLTIPS_QUICK_MOVE_FUEL 1437 -#define IDS_TOOLTIPS_QUICK_MOVE_TOOL 1438 -#define IDS_TOOLTIPS_QUICK_MOVE_ARMOR 1439 -#define IDS_TOOLTIPS_QUICK_MOVE_WEAPON 1440 -#define IDS_TOOLTIPS_EQUIP 1441 -#define IDS_TOOLTIPS_DRAW_BOW 1442 -#define IDS_TOOLTIPS_RELEASE_BOW 1443 -#define IDS_TOOLTIPS_PRIVILEGES 1444 -#define IDS_TOOLTIPS_BLOCK 1445 -#define IDS_TOOLTIPS_PAGEUP 1446 -#define IDS_TOOLTIPS_PAGEDOWN 1447 -#define IDS_TOOLTIPS_LOVEMODE 1448 -#define IDS_TOOLTIPS_DRINK 1449 -#define IDS_TOOLTIPS_ROTATE 1450 -#define IDS_TOOLTIPS_CLEARSLOTS 1451 -#define IDS_TOOLTIPS_MOUNT 1452 -#define IDS_TOOLTIPS_DISMOUNT 1453 -#define IDS_TOOLTIPS_SADDLEBAGS 1454 -#define IDS_TOOLTIPS_FIREWORK_LAUNCH 1455 -#define IDS_TOOLTIPS_LEASH 1456 -#define IDS_TOOLTIPS_UNLEASH 1457 -#define IDS_TOOLTIPS_ATTACH 1458 -#define IDS_TOOLTIPS_NAME 1459 -#define IDS_CONFIRM_OK 1460 -#define IDS_CONFIRM_CANCEL 1461 -#define IDS_DOWNLOADABLECONTENT 1462 -#define IDS_CONFIRM_LEAVE_VIA_INVITE 1463 -#define IDS_EXIT_GAME 1464 -#define IDS_TITLE_SAVE_GAME 1465 -#define IDS_TITLE_DECLINE_SAVE_GAME 1466 -#define IDS_CONFIRM_SAVE_GAME 1467 -#define IDS_CONFIRM_DECLINE_SAVE_GAME 1468 -#define IDS_TITLE_START_GAME 1469 -#define IDS_CORRUPT_OR_DAMAGED_SAVE_TITLE 1470 -#define IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT 1471 -#define IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE 1472 -#define IDS_EXIT_GAME_SAVE 1473 -#define IDS_EXIT_GAME_NO_SAVE 1474 -#define IDS_CONFIRM_EXIT_GAME 1475 -#define IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST 1476 -#define IDS_CREATE_NEW_WORLD 1477 -#define IDS_PLAY_TUTORIAL 1478 -#define IDS_TUTORIALSAVENAME 1479 -#define IDS_NAME_WORLD 1480 -#define IDS_NAME_WORLD_TEXT 1481 -#define IDS_CREATE_NEW_WORLD_SEEDTEXT 1482 -#define IDS_LOAD_SAVED_WORLD 1483 -#define IDS_PRESS_START_TO_JOIN 1484 -#define IDS_EXITING_GAME 1485 -#define IDS_GENERIC_ERROR 1486 -#define IDS_CONNECTION_FAILED 1487 -#define IDS_CONNECTION_LOST 1488 -#define IDS_CONNECTION_LOST_SERVER 1489 -#define IDS_DISCONNECTED 1490 -#define IDS_DISCONNECTED_KICKED 1491 -#define IDS_DISCONNECTED_FLYING 1492 -#define IDS_DISCONNECTED_LOGIN_TOO_LONG 1493 -#define IDS_DISCONNECTED_SERVER_FULL 1494 -#define IDS_DISCONNECTED_SERVER_QUIT 1495 -#define IDS_DISCONNECTED_NO_FRIENDS_IN_GAME 1496 -#define IDS_DISCONNECTED_BANNED 1497 -#define IDS_DISCONNECTED_SERVER_OLD 1498 -#define IDS_DISCONNECTED_CLIENT_OLD 1499 -#define IDS_DEFAULT_SAVENAME 1500 -#define IDS_AWARD_TITLE 1501 -#define IDS_AWARD_GAMERPIC1 1502 -#define IDS_AWARD_GAMERPIC2 1503 -#define IDS_UNLOCK_TITLE 1504 -#define IDS_UNLOCK_TOSAVE_TEXT 1505 -#define IDS_LEADERBOARD_LOADING 1506 -#define IDS_LEADERBOARD_NORESULTS 1507 -#define IDS_LEADERBOARD_FILTER 1508 -#define IDS_LEADERBOARD_FILTER_FRIENDS 1509 -#define IDS_LEADERBOARD_FILTER_MYSCORE 1510 -#define IDS_LEADERBOARD_FILTER_OVERALL 1511 -#define IDS_LEADERBOARD_ENTRIES 1512 -#define IDS_LEADERBOARD_RANK 1513 -#define IDS_PROGRESS_SAVING_LEVEL 1514 -#define IDS_PROGRESS_SAVING_CHUNKS 1515 -#define IDS_PROGRESS_SAVING_TO_DISC 1516 -#define IDS_PROGRESS_BUILDING_TERRAIN 1517 -#define IDS_PROGRESS_SIMULATING_WORLD 1518 -#define IDS_PROGRESS_INITIALISING_SERVER 1519 -#define IDS_PROGRESS_GENERATING_SPAWN_AREA 1520 -#define IDS_PROGRESS_LOADING_SPAWN_AREA 1521 -#define IDS_PROGRESS_ENTERING_NETHER 1522 -#define IDS_PROGRESS_LEAVING_NETHER 1523 -#define IDS_PROGRESS_RESPAWNING 1524 -#define IDS_PROGRESS_GENERATING_LEVEL 1525 -#define IDS_PROGRESS_LOADING_LEVEL 1526 -#define IDS_PROGRESS_SAVING_PLAYERS 1527 -#define IDS_PROGRESS_CONNECTING 1528 -#define IDS_PROGRESS_DOWNLOADING_TERRAIN 1529 -#define IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME 1530 -#define IDS_PROGRESS_HOST_SAVING 1531 -#define IDS_PROGRESS_ENTERING_END 1532 -#define IDS_PROGRESS_LEAVING_END 1533 -#define IDS_PROGRESS_NEW_WORLD_SEED 1534 -#define IDS_TILE_BED_OCCUPIED 1535 -#define IDS_TILE_BED_NO_SLEEP 1536 -#define IDS_TILE_BED_PLAYERSLEEP 1537 -#define IDS_TILE_BED_NOT_VALID 1538 -#define IDS_TILE_BED_NOTSAFE 1539 -#define IDS_TILE_BED_MESLEEP 1540 -#define IDS_GROUPNAME_TOOLS 1541 -#define IDS_GROUPNAME_WEAPONS 1542 -#define IDS_GROUPNAME_FOOD 1543 -#define IDS_GROUPNAME_STRUCTURES 1544 -#define IDS_GROUPNAME_ARMOUR 1545 -#define IDS_GROUPNAME_MECHANISMS 1546 -#define IDS_GROUPNAME_TRANSPORT 1547 -#define IDS_GROUPNAME_DECORATIONS 1548 -#define IDS_GROUPNAME_BUILDING_BLOCKS 1549 -#define IDS_GROUPNAME_REDSTONE_AND_TRANSPORT 1550 -#define IDS_GROUPNAME_MISCELLANEOUS 1551 -#define IDS_GROUPNAME_POTIONS 1552 -#define IDS_GROUPNAME_TOOLS_WEAPONS_ARMOR 1553 -#define IDS_GROUPNAME_MATERIALS 1554 -#define IDS_RETURNEDTOMENU_TITLE 1555 -#define IDS_SLIDER_DIFFICULTY 1556 -#define IDS_SLIDER_GAMEMODE 1557 -#define IDS_SLIDER_MUSIC 1558 -#define IDS_SLIDER_SOUND 1559 -#define IDS_SLIDER_GAMMA 1560 -#define IDS_SLIDER_SENSITIVITY_INGAME 1561 -#define IDS_SLIDER_SENSITIVITY_INMENU 1562 -#define IDS_DIFFICULTY_TITLE_PEACEFUL 1563 -#define IDS_DIFFICULTY_TITLE_EASY 1564 -#define IDS_DIFFICULTY_TITLE_NORMAL 1565 -#define IDS_DIFFICULTY_TITLE_HARD 1566 -#define IDS_DIFFICULTY_PEACEFUL 1567 -#define IDS_DIFFICULTY_EASY 1568 -#define IDS_DIFFICULTY_NORMAL 1569 -#define IDS_DIFFICULTY_HARD 1570 -#define IDS_TRIALOVER_TITLE 1571 -#define IDS_MULTIPLAYER_FULL_TITLE 1572 -#define IDS_MULTIPLAYER_FULL_TEXT 1573 -#define IDS_SIGN_TITLE 1574 -#define IDS_SIGN_TITLE_TEXT 1575 -#define IDS_NAME_TITLE 1576 -#define IDS_NAME_TITLE_TEXT 1577 -#define IDS_NAME_CAPTION 1578 -#define IDS_NAME_CAPTION_TEXT 1579 -#define IDS_NAME_DESC 1580 -#define IDS_NAME_DESC_TEXT 1581 -#define IDS_INVENTORY 1582 -#define IDS_INGREDIENTS 1583 -#define IDS_BREWING_STAND 1584 -#define IDS_CHEST 1585 -#define IDS_ENCHANT 1586 -#define IDS_FURNACE 1587 -#define IDS_INGREDIENT 1588 -#define IDS_FUEL 1589 -#define IDS_DISPENSER 1590 -#define IDS_CONTAINER_ANIMAL 1591 -#define IDS_CONTAINER_DROPPER 1592 -#define IDS_CONTAINER_HOPPER 1593 -#define IDS_CONTAINER_BEACON 1594 -#define IDS_CONTAINER_BEACON_PRIMARY_POWER 1595 -#define IDS_CONTAINER_BEACON_SECONDARY_POWER 1596 -#define IDS_CONTAINER_MINECART 1597 -#define IDS_NO_DLCOFFERS 1598 -#define IDS_PLAYER_JOINED 1599 -#define IDS_PLAYER_LEFT 1600 -#define IDS_PLAYER_KICKED 1601 -#define IDS_TEXT_DELETE_SAVE 1602 -#define IDS_STRINGVERIFY_AWAITING_APPROVAL 1603 -#define IDS_STRINGVERIFY_CENSORED 1604 -#define IDS_NOWPLAYING 1605 -#define IDS_DEFAULTS_TITLE 1606 -#define IDS_DEFAULTS_TEXT 1607 -#define IDS_FATAL_ERROR_TITLE 1608 -#define IDS_GAME_HOST_NAME 1609 -#define IDS_GAME_HOST_NAME_UNKNOWN 1610 -#define IDS_GUEST_ORDER_CHANGED_TITLE 1611 -#define IDS_GUEST_ORDER_CHANGED_TEXT 1612 -#define IDS_MUST_SIGN_IN_TITLE 1613 -#define IDS_MUST_SIGN_IN_TEXT 1614 -#define IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE 1615 -#define IDS_FAILED_TO_CREATE_GAME_TITLE 1616 -#define IDS_DEFAULT_SKINS 1617 -#define IDS_NO_SKIN_PACK 1618 -#define IDS_FAVORITES_SKIN_PACK 1619 -#define IDS_BANNED_LEVEL_TITLE 1620 -#define IDS_PLAYER_BANNED_LEVEL 1621 -#define IDS_ACTION_BAN_LEVEL_TITLE 1622 -#define IDS_ACTION_BAN_LEVEL_DESCRIPTION 1623 -#define IDS_BUTTON_REMOVE_FROM_BAN_LIST 1624 -#define IDS_SLIDER_AUTOSAVE 1625 -#define IDS_SLIDER_AUTOSAVE_OFF 1626 -#define IDS_MINUTES 1627 -#define IDS_CANT_PLACE_NEAR_SPAWN_TITLE 1628 -#define IDS_CANT_PLACE_NEAR_SPAWN_TEXT 1629 -#define IDS_SLIDER_INTERFACEOPACITY 1630 -#define IDS_PROGRESS_AUTOSAVING_LEVEL 1631 -#define IDS_SLIDER_UISIZE 1632 -#define IDS_SLIDER_UISIZESPLITSCREEN 1633 -#define IDS_SEED 1634 -#define IDS_UNLOCK_DLC_TITLE 1635 -#define IDS_UNLOCK_DLC_SKIN 1636 -#define IDS_UNLOCK_DLC_TEXTUREPACK_TITLE 1637 -#define IDS_UNLOCK_DLC_TEXTUREPACK_TEXT 1638 -#define IDS_WARNING_DLC_TRIALTEXTUREPACK_TITLE 1639 -#define IDS_WARNING_DLC_TRIALTEXTUREPACK_TEXT 1640 -#define IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE 1641 -#define IDS_DLC_TEXTUREPACK_UNLOCK_TITLE 1642 -#define IDS_DLC_TEXTUREPACK_GET_TRIAL_TITLE 1643 -#define IDS_DLC_TEXTUREPACK_GET_FULL_TITLE 1644 -#define IDS_DLC_TEXTUREPACK_NOT_PRESENT 1645 -#define IDS_TEXTURE_PACK_TRIALVERSION 1646 -#define IDS_TEXTUREPACK_FULLVERSION 1647 -#define IDS_UNLOCK_KICK_PLAYER_TITLE 1648 -#define IDS_UNLOCK_KICK_PLAYER 1649 -#define IDS_GAMERPICS 1650 -#define IDS_THEMES 1651 -#define IDS_SKINS 1652 -#define IDS_ALLOWFRIENDSOFFRIENDS 1653 -#define IDS_NOTALLOWED_FRIENDSOFFRIENDS 1654 -#define IDS_CANTJOIN_TITLE 1655 -#define IDS_SELECTED 1656 -#define IDS_SELECTED_SKIN 1657 -#define IDS_CORRUPT_DLC_TITLE 1658 -#define IDS_CORRUPT_DLC 1659 -#define IDS_CORRUPT_DLC_MULTIPLE 1660 -#define IDS_GAME_MODE_CHANGED 1661 -#define IDS_RENAME_WORLD_TITLE 1662 -#define IDS_RENAME_WORLD_TEXT 1663 -#define IDS_GAMEMODE_SURVIVAL 1664 -#define IDS_GAMEMODE_CREATIVE 1665 -#define IDS_GAMEMODE_ADVENTURE 1666 -#define IDS_SURVIVAL 1667 -#define IDS_CREATIVE 1668 -#define IDS_ADVENTURE 1669 -#define IDS_CREATED_IN_SURVIVAL 1670 -#define IDS_CREATED_IN_CREATIVE 1671 -#define IDS_CHECKBOX_RENDER_CLOUDS 1672 -#define IDS_TEXT_SAVEOPTIONS 1673 -#define IDS_TITLE_RENAMESAVE 1674 -#define IDS_AUTOSAVE_COUNTDOWN 1675 -#define IDS_ON 1676 -#define IDS_OFF 1677 -#define IDS_LEVELTYPE_NORMAL 1678 -#define IDS_LEVELTYPE_SUPERFLAT 1679 -#define IDS_GAMEOPTION_SEED 1680 -#define IDS_GAMEOPTION_ONLINE 1681 -#define IDS_GAMEOPTION_INVITEONLY 1682 -#define IDS_GAMEOPTION_ALLOWFOF 1683 -#define IDS_GAMEOPTION_PVP 1684 -#define IDS_GAMEOPTION_TRUST 1685 -#define IDS_GAMEOPTION_FIRE_SPREADS 1686 -#define IDS_GAMEOPTION_TNT_EXPLODES 1687 -#define IDS_GAMEOPTION_RESET_NETHER 1688 -#define IDS_GAMEOPTION_STRUCTURES 1689 -#define IDS_GAMEOPTION_SUPERFLAT 1690 -#define IDS_GAMEOPTION_BONUS_CHEST 1691 -#define IDS_GAMEOPTION_MOB_GRIEFING 1692 -#define IDS_GAMEOPTION_KEEP_INVENTORY 1693 -#define IDS_GAMEOPTION_MOB_SPAWNING 1694 -#define IDS_GAMEOPTION_MOB_LOOT 1695 -#define IDS_GAMEOPTION_TILE_DROPS 1696 -#define IDS_GAMEOPTION_NATURAL_REGEN 1697 -#define IDS_GAMEOPTION_DAYLIGHT_CYCLE 1698 -#define IDS_DLC_MENU_SKINPACKS 1699 -#define IDS_DLC_MENU_THEMES 1700 -#define IDS_DLC_MENU_GAMERPICS 1701 -#define IDS_DLC_MENU_AVATARITEMS 1702 -#define IDS_DLC_MENU_TEXTUREPACKS 1703 -#define IDS_DLC_MENU_MASHUPPACKS 1704 -#define IDS_DEATH_INFIRE 1705 -#define IDS_DEATH_ONFIRE 1706 -#define IDS_DEATH_LAVA 1707 -#define IDS_DEATH_INWALL 1708 -#define IDS_DEATH_DROWN 1709 -#define IDS_DEATH_STARVE 1710 -#define IDS_DEATH_CACTUS 1711 -#define IDS_DEATH_FALL 1712 -#define IDS_DEATH_OUTOFWORLD 1713 -#define IDS_DEATH_GENERIC 1714 -#define IDS_DEATH_EXPLOSION 1715 -#define IDS_DEATH_MAGIC 1716 -#define IDS_DEATH_DRAGON_BREATH 1717 -#define IDS_DEATH_MOB 1718 -#define IDS_DEATH_PLAYER 1719 -#define IDS_DEATH_ARROW 1720 -#define IDS_DEATH_FIREBALL 1721 -#define IDS_DEATH_THROWN 1722 -#define IDS_DEATH_INDIRECT_MAGIC 1723 -#define IDS_DEATH_FELL_ACCIDENT_LADDER 1724 -#define IDS_DEATH_FELL_ACCIDENT_VINES 1725 -#define IDS_DEATH_FELL_ACCIDENT_WATER 1726 -#define IDS_DEATH_FELL_ACCIDENT_GENERIC 1727 -#define IDS_DEATH_FELL_KILLER 1728 -#define IDS_DEATH_FELL_ASSIST 1729 -#define IDS_DEATH_FELL_ASSIST_ITEM 1730 -#define IDS_DEATH_FELL_FINISH 1731 -#define IDS_DEATH_FELL_FINISH_ITEM 1732 -#define IDS_DEATH_INFIRE_PLAYER 1733 -#define IDS_DEATH_ONFIRE_PLAYER 1734 -#define IDS_DEATH_LAVA_PLAYER 1735 -#define IDS_DEATH_DROWN_PLAYER 1736 -#define IDS_DEATH_CACTUS_PLAYER 1737 -#define IDS_DEATH_EXPLOSION_PLAYER 1738 -#define IDS_DEATH_WITHER 1739 -#define IDS_DEATH_PLAYER_ITEM 1740 -#define IDS_DEATH_ARROW_ITEM 1741 -#define IDS_DEATH_FIREBALL_ITEM 1742 -#define IDS_DEATH_THROWN_ITEM 1743 -#define IDS_DEATH_INDIRECT_MAGIC_ITEM 1744 -#define IDS_CHECKBOX_RENDER_BEDROCKFOG 1745 -#define IDS_CHECKBOX_DISPLAY_HUD 1746 -#define IDS_CHECKBOX_DISPLAY_HAND 1747 -#define IDS_CHECKBOX_DEATH_MESSAGES 1748 -#define IDS_CHECKBOX_ANIMATED_CHARACTER 1749 -#define IDS_CHECKBOX_CUSTOM_SKIN_ANIM 1750 -#define IDS_PRIV_MINE_TOGGLE_ON 1751 -#define IDS_PRIV_MINE_TOGGLE_OFF 1752 -#define IDS_PRIV_BUILD_TOGGLE_ON 1753 -#define IDS_PRIV_BUILD_TOGGLE_OFF 1754 -#define IDS_PRIV_USE_DOORS_TOGGLE_ON 1755 -#define IDS_PRIV_USE_DOORS_TOGGLE_OFF 1756 -#define IDS_PRIV_USE_CONTAINERS_TOGGLE_ON 1757 -#define IDS_PRIV_USE_CONTAINERS_TOGGLE_OFF 1758 -#define IDS_PRIV_ATTACK_MOB_TOGGLE_ON 1759 -#define IDS_PRIV_ATTACK_MOB_TOGGLE_OFF 1760 -#define IDS_PRIV_ATTACK_PLAYER_TOGGLE_ON 1761 -#define IDS_PRIV_ATTACK_PLAYER_TOGGLE_OFF 1762 -#define IDS_PRIV_ATTACK_ANIMAL_TOGGLE_ON 1763 -#define IDS_PRIV_ATTACK_ANIMAL_TOGGLE_OFF 1764 -#define IDS_PRIV_MODERATOR_TOGGLE_ON 1765 -#define IDS_PRIV_MODERATOR_TOGGLE_OFF 1766 -#define IDS_PRIV_FLY_TOGGLE_ON 1767 -#define IDS_PRIV_FLY_TOGGLE_OFF 1768 -#define IDS_PRIV_EXHAUSTION_TOGGLE_ON 1769 -#define IDS_PRIV_EXHAUSTION_TOGGLE_OFF 1770 -#define IDS_PRIV_INVISIBLE_TOGGLE_ON 1771 -#define IDS_PRIV_INVISIBLE_TOGGLE_OFF 1772 -#define IDS_PRIV_INVULNERABLE_TOGGLE_ON 1773 -#define IDS_PRIV_INVULNERABLE_TOGGLE_OFF 1774 -#define IDS_DLC_COST 1775 -#define IDS_BOSS_ENDERDRAGON_HEALTH 1776 -#define IDS_PLAYER_ENTERED_END 1777 -#define IDS_PLAYER_LEFT_END 1778 -#define IDS_WIN_TEXT 1779 -#define IDS_WIN_TEXT_PART_2 1780 -#define IDS_WIN_TEXT_PART_3 1781 -#define IDS_RESETNETHER_TITLE 1782 -#define IDS_RESETNETHER_TEXT 1783 -#define IDS_RESET_NETHER 1784 -#define IDS_DONT_RESET_NETHER 1785 -#define IDS_CANT_SHEAR_MOOSHROOM 1786 -#define IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED 1787 -#define IDS_MAX_MOOSHROOMS_SPAWNED 1788 -#define IDS_MAX_WOLVES_SPAWNED 1789 -#define IDS_MAX_CHICKENS_SPAWNED 1790 -#define IDS_MAX_SQUID_SPAWNED 1791 -#define IDS_MAX_BATS_SPAWNED 1792 -#define IDS_MAX_ENEMIES_SPAWNED 1793 -#define IDS_MAX_VILLAGERS_SPAWNED 1794 -#define IDS_MAX_HANGINGENTITIES 1795 -#define IDS_CANT_SPAWN_IN_PEACEFUL 1796 -#define IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED 1797 -#define IDS_MAX_WOLVES_BRED 1798 -#define IDS_MAX_CHICKENS_BRED 1799 -#define IDS_MAX_HORSES_BRED 1800 -#define IDS_MAX_MUSHROOMCOWS_BRED 1801 -#define IDS_MAX_BOATS 1802 -#define IDS_MAX_SKULL_TILES 1803 -#define IDS_INVERT_LOOK 1804 -#define IDS_SOUTHPAW 1805 -#define IDS_YOU_DIED 1806 -#define IDS_RESPAWN 1807 -#define IDS_DOWNLOADABLE_CONTENT_OFFERS 1808 -#define IDS_CHANGE_SKIN 1809 -#define IDS_HOW_TO_PLAY 1810 -#define IDS_CONTROLS 1811 -#define IDS_SETTINGS 1812 -#define IDS_LANGUAGE_SELECTOR 1813 -#define IDS_CREDITS 1814 -#define IDS_REINSTALL_CONTENT 1815 -#define IDS_DEBUG_SETTINGS 1816 -#define IDS_FIRE_SPREADS 1817 -#define IDS_TNT_EXPLODES 1818 -#define IDS_PLAYER_VS_PLAYER 1819 -#define IDS_TRUST_PLAYERS 1820 -#define IDS_HOST_PRIVILEGES 1821 -#define IDS_GENERATE_STRUCTURES 1822 -#define IDS_SUPERFLAT_WORLD 1823 -#define IDS_BONUS_CHEST 1824 -#define IDS_WORLD_OPTIONS 1825 -#define IDS_GAME_OPTIONS 1826 -#define IDS_MOB_GRIEFING 1827 -#define IDS_KEEP_INVENTORY 1828 -#define IDS_MOB_SPAWNING 1829 -#define IDS_MOB_LOOT 1830 -#define IDS_TILE_DROPS 1831 -#define IDS_NATURAL_REGEN 1832 -#define IDS_DAYLIGHT_CYCLE 1833 -#define IDS_CAN_BUILD_AND_MINE 1834 -#define IDS_CAN_USE_DOORS_AND_SWITCHES 1835 -#define IDS_CAN_OPEN_CONTAINERS 1836 -#define IDS_CAN_ATTACK_PLAYERS 1837 -#define IDS_CAN_ATTACK_ANIMALS 1838 -#define IDS_MODERATOR 1839 -#define IDS_KICK_PLAYER 1840 -#define IDS_CAN_FLY 1841 -#define IDS_DISABLE_EXHAUSTION 1842 -#define IDS_INVISIBLE 1843 -#define IDS_HOST_OPTIONS 1844 -#define IDS_PLAYERS_INVITE 1845 -#define IDS_ONLINE_GAME 1846 -#define IDS_INVITE_ONLY 1847 -#define IDS_MORE_OPTIONS 1848 -#define IDS_LOAD 1849 -#define IDS_DEFAULT_WORLD_NAME 1850 -#define IDS_WORLD_NAME 1851 -#define IDS_CREATE_NEW_WORLD_SEED 1852 -#define IDS_CREATE_NEW_WORLD_RANDOM_SEED 1853 -#define IDS_PLAYERS 1854 -#define IDS_JOIN_GAME 1855 -#define IDS_START_GAME 1856 -#define IDS_NO_GAMES_FOUND 1857 -#define IDS_PLAY_GAME 1858 -#define IDS_LEADERBOARDS 1859 -#define IDS_HELP_AND_OPTIONS 1860 -#define IDS_UNLOCK_FULL_GAME 1861 -#define IDS_RESUME_GAME 1862 -#define IDS_SAVE_GAME 1863 -#define IDS_LABEL_DIFFICULTY 1864 -#define IDS_LABEL_GAME_TYPE 1865 -#define IDS_LABEL_STRUCTURES 1866 -#define IDS_LABEL_LEVEL_TYPE 1867 -#define IDS_LABEL_PvP 1868 -#define IDS_LABEL_TRUST 1869 -#define IDS_LABEL_TNT 1870 -#define IDS_LABEL_FIRE_SPREADS 1871 -#define IDS_REINSTALL_THEME 1872 -#define IDS_REINSTALL_GAMERPIC_1 1873 -#define IDS_REINSTALL_GAMERPIC_2 1874 -#define IDS_REINSTALL_AVATAR_ITEM_1 1875 -#define IDS_REINSTALL_AVATAR_ITEM_2 1876 -#define IDS_REINSTALL_AVATAR_ITEM_3 1877 -#define IDS_OPTIONS 1878 -#define IDS_AUDIO 1879 -#define IDS_CONTROL 1880 -#define IDS_GRAPHICS 1881 -#define IDS_USER_INTERFACE 1882 -#define IDS_RESET_TO_DEFAULTS 1883 -#define IDS_VIEW_BOBBING 1884 -#define IDS_HINTS 1885 -#define IDS_IN_GAME_TOOLTIPS 1886 -#define IDS_CHECKBOX_VERTICAL_SPLIT_SCREEN 1887 -#define IDS_DONE 1888 -#define IDS_EDIT_SIGN_MESSAGE 1889 -#define IDS_SOCIAL_TEXT 1890 -#define IDS_SOCIAL_LABEL_CAPTION 1891 -#define IDS_SOCIAL_DEFAULT_CAPTION 1892 -#define IDS_SOCIAL_LABEL_DESCRIPTION 1893 -#define IDS_DEFAULT_TEXTUREPACK 1894 -#define IDS_POTION_EMPTY 1895 -#define IDS_POTION_MOVESPEED 1896 -#define IDS_POTION_MOVESLOWDOWN 1897 -#define IDS_POTION_DIGSPEED 1898 -#define IDS_POTION_DIGSLOWDOWN 1899 -#define IDS_POTION_DAMAGEBOOST 1900 -#define IDS_POTION_WEAKNESS 1901 -#define IDS_POTION_HEAL 1902 -#define IDS_POTION_HARM 1903 -#define IDS_POTION_JUMP 1904 -#define IDS_POTION_CONFUSION 1905 -#define IDS_POTION_REGENERATION 1906 -#define IDS_POTION_RESISTANCE 1907 -#define IDS_POTION_FIRERESISTANCE 1908 -#define IDS_POTION_WATERBREATHING 1909 -#define IDS_POTION_INVISIBILITY 1910 -#define IDS_POTION_BLINDNESS 1911 -#define IDS_POTION_NIGHTVISION 1912 -#define IDS_POTION_HUNGER 1913 -#define IDS_POTION_POISON 1914 -#define IDS_POTION_WITHER 1915 -#define IDS_POTION_HEALTHBOOST 1916 -#define IDS_POTION_ABSORPTION 1917 -#define IDS_POTION_SATURATION 1918 -#define IDS_POTION_MOVESPEED_POSTFIX 1919 -#define IDS_POTION_MOVESLOWDOWN_POSTFIX 1920 -#define IDS_POTION_DIGSPEED_POSTFIX 1921 -#define IDS_POTION_DIGSLOWDOWN_POSTFIX 1922 -#define IDS_POTION_DAMAGEBOOST_POSTFIX 1923 -#define IDS_POTION_WEAKNESS_POSTFIX 1924 -#define IDS_POTION_HEAL_POSTFIX 1925 -#define IDS_POTION_HARM_POSTFIX 1926 -#define IDS_POTION_JUMP_POSTFIX 1927 -#define IDS_POTION_CONFUSION_POSTFIX 1928 -#define IDS_POTION_REGENERATION_POSTFIX 1929 -#define IDS_POTION_RESISTANCE_POSTFIX 1930 -#define IDS_POTION_FIRERESISTANCE_POSTFIX 1931 -#define IDS_POTION_WATERBREATHING_POSTFIX 1932 -#define IDS_POTION_INVISIBILITY_POSTFIX 1933 -#define IDS_POTION_BLINDNESS_POSTFIX 1934 -#define IDS_POTION_NIGHTVISION_POSTFIX 1935 -#define IDS_POTION_HUNGER_POSTFIX 1936 -#define IDS_POTION_POISON_POSTFIX 1937 -#define IDS_POTION_WITHER_POSTFIX 1938 -#define IDS_POTION_HEALTHBOOST_POSTFIX 1939 -#define IDS_POTION_ABSORPTION_POSTFIX 1940 -#define IDS_POTION_SATURATION_POSTFIX 1941 -#define IDS_POTION_POTENCY_0 1942 -#define IDS_POTION_POTENCY_1 1943 -#define IDS_POTION_POTENCY_2 1944 -#define IDS_POTION_POTENCY_3 1945 -#define IDS_POTION_PREFIX_GRENADE 1946 -#define IDS_POTION_PREFIX_MUNDANE 1947 -#define IDS_POTION_PREFIX_UNINTERESTING 1948 -#define IDS_POTION_PREFIX_BLAND 1949 -#define IDS_POTION_PREFIX_CLEAR 1950 -#define IDS_POTION_PREFIX_MILKY 1951 -#define IDS_POTION_PREFIX_DIFFUSE 1952 -#define IDS_POTION_PREFIX_ARTLESS 1953 -#define IDS_POTION_PREFIX_THIN 1954 -#define IDS_POTION_PREFIX_AWKWARD 1955 -#define IDS_POTION_PREFIX_FLAT 1956 -#define IDS_POTION_PREFIX_BULKY 1957 -#define IDS_POTION_PREFIX_BUNGLING 1958 -#define IDS_POTION_PREFIX_BUTTERED 1959 -#define IDS_POTION_PREFIX_SMOOTH 1960 -#define IDS_POTION_PREFIX_SUAVE 1961 -#define IDS_POTION_PREFIX_DEBONAIR 1962 -#define IDS_POTION_PREFIX_THICK 1963 -#define IDS_POTION_PREFIX_ELEGANT 1964 -#define IDS_POTION_PREFIX_FANCY 1965 -#define IDS_POTION_PREFIX_CHARMING 1966 -#define IDS_POTION_PREFIX_DASHING 1967 -#define IDS_POTION_PREFIX_REFINED 1968 -#define IDS_POTION_PREFIX_CORDIAL 1969 -#define IDS_POTION_PREFIX_SPARKLING 1970 -#define IDS_POTION_PREFIX_POTENT 1971 -#define IDS_POTION_PREFIX_FOUL 1972 -#define IDS_POTION_PREFIX_ODORLESS 1973 -#define IDS_POTION_PREFIX_RANK 1974 -#define IDS_POTION_PREFIX_HARSH 1975 -#define IDS_POTION_PREFIX_ACRID 1976 -#define IDS_POTION_PREFIX_GROSS 1977 -#define IDS_POTION_PREFIX_STINKY 1978 -#define IDS_POTION_DESC_WATER_BOTTLE 1979 -#define IDS_POTION_DESC_EMPTY 1980 -#define IDS_POTION_DESC_MOVESPEED 1981 -#define IDS_POTION_DESC_MOVESLOWDOWN 1982 -#define IDS_POTION_DESC_DAMAGEBOOST 1983 -#define IDS_POTION_DESC_WEAKNESS 1984 -#define IDS_POTION_DESC_HEAL 1985 -#define IDS_POTION_DESC_HARM 1986 -#define IDS_POTION_DESC_REGENERATION 1987 -#define IDS_POTION_DESC_FIRERESISTANCE 1988 -#define IDS_POTION_DESC_POISON 1989 -#define IDS_POTION_EFFECTS_WHENDRANK 1990 -#define IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH 1991 -#define IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS 1992 -#define IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH 1993 -#define IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE 1994 -#define IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE 1995 -#define IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED 1996 -#define IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE 1997 -#define IDS_ENCHANTMENT_DAMAGE_ALL 1998 -#define IDS_ENCHANTMENT_DAMAGE_UNDEAD 1999 -#define IDS_ENCHANTMENT_DAMAGE_ARTHROPODS 2000 -#define IDS_ENCHANTMENT_KNOCKBACK 2001 -#define IDS_ENCHANTMENT_FIRE 2002 -#define IDS_ENCHANTMENT_PROTECT_ALL 2003 -#define IDS_ENCHANTMENT_PROTECT_FIRE 2004 -#define IDS_ENCHANTMENT_PROTECT_FALL 2005 -#define IDS_ENCHANTMENT_PROTECT_EXPLOSION 2006 -#define IDS_ENCHANTMENT_PROTECT_PROJECTILE 2007 -#define IDS_ENCHANTMENT_OXYGEN 2008 -#define IDS_ENCHANTMENT_WATER_WORKER 2009 -#define IDS_ENCHANTMENT_DIGGING 2010 -#define IDS_ENCHANTMENT_UNTOUCHING 2011 -#define IDS_ENCHANTMENT_DURABILITY 2012 -#define IDS_ENCHANTMENT_LOOT_BONUS 2013 -#define IDS_ENCHANTMENT_LOOT_BONUS_DIGGER 2014 -#define IDS_ENCHANTMENT_ARROW_DAMAGE 2015 -#define IDS_ENCHANTMENT_ARROW_FIRE 2016 -#define IDS_ENCHANTMENT_ARROW_KNOCKBACK 2017 -#define IDS_ENCHANTMENT_ARROW_INFINITE 2018 -#define IDS_ENCHANTMENT_LEVEL_1 2019 -#define IDS_ENCHANTMENT_LEVEL_2 2020 -#define IDS_ENCHANTMENT_LEVEL_3 2021 -#define IDS_ENCHANTMENT_LEVEL_4 2022 -#define IDS_ENCHANTMENT_LEVEL_5 2023 -#define IDS_ENCHANTMENT_LEVEL_6 2024 -#define IDS_ENCHANTMENT_LEVEL_7 2025 -#define IDS_ENCHANTMENT_LEVEL_8 2026 -#define IDS_ENCHANTMENT_LEVEL_9 2027 -#define IDS_ENCHANTMENT_LEVEL_10 2028 -#define IDS_DESC_EMERALDORE 2029 -#define IDS_DESC_ENDERCHEST 2030 -#define IDS_DESC_TRIPWIRE_SOURCE 2031 -#define IDS_DESC_TRIPWIRE 2032 -#define IDS_DESC_EMERALDBLOCK 2033 -#define IDS_DESC_COBBLESTONE_WALL 2034 -#define IDS_DESC_ANVIL 2035 -#define IDS_DESC_NETHER_QUARTZ_ORE 2036 -#define IDS_DESC_QUARTZ_BLOCK 2037 -#define IDS_DESC_EMERALD 2038 -#define IDS_DESC_FLOWERPOT 2039 -#define IDS_DESC_CARROTS 2040 -#define IDS_DESC_POTATO 2041 -#define IDS_DESC_POTATO_BAKED 2042 -#define IDS_DESC_POTATO_POISONOUS 2043 -#define IDS_DESC_CARROT_GOLDEN 2044 -#define IDS_DESC_CARROT_ON_A_STICK 2045 -#define IDS_DESC_PUMPKIN_PIE 2046 -#define IDS_DESC_ENCHANTED_BOOK 2047 -#define IDS_DESC_NETHER_QUARTZ 2048 -#define IDS_DESC_CARPET 2049 -#define IDS_ITEM_EMERALD 2050 -#define IDS_FLOWERPOT 2051 -#define IDS_CARROTS 2052 -#define IDS_POTATO 2053 -#define IDS_ITEM_POTATO_BAKED 2054 -#define IDS_ITEM_POTATO_POISONOUS 2055 -#define IDS_ITEM_CARROT_GOLDEN 2056 -#define IDS_ITEM_CARROT_ON_A_STICK 2057 -#define IDS_ITEM_PUMPKIN_PIE 2058 -#define IDS_ITEM_ENCHANTED_BOOK 2059 -#define IDS_ITEM_NETHER_QUARTZ 2060 -#define IDS_TILE_EMERALDORE 2061 -#define IDS_TILE_ENDERCHEST 2062 -#define IDS_TILE_TRIPWIRE_SOURCE 2063 -#define IDS_TILE_TRIPWIRE 2064 -#define IDS_TILE_EMERALDBLOCK 2065 -#define IDS_TILE_COBBLESTONE_WALL 2066 -#define IDS_TILE_COBBLESTONE_WALL_MOSSY 2067 -#define IDS_TILE_FLOWERPOT 2068 -#define IDS_TILE_CARROTS 2069 -#define IDS_TILE_POTATOES 2070 -#define IDS_TILE_ANVIL 2071 -#define IDS_TILE_ANVIL_INTACT 2072 -#define IDS_TILE_ANVIL_SLIGHTLYDAMAGED 2073 -#define IDS_TILE_ANVIL_VERYDAMAGED 2074 -#define IDS_TILE_NETHER_QUARTZ 2075 -#define IDS_TILE_QUARTZ_BLOCK 2076 -#define IDS_TILE_QUARTZ_BLOCK_CHISELED 2077 -#define IDS_TILE_QUARTZ_BLOCK_LINES 2078 -#define IDS_TILE_STAIRS_QUARTZ 2079 -#define IDS_TILE_CARPET 2080 -#define IDS_TILE_CARPET_BLACK 2081 -#define IDS_TILE_CARPET_RED 2082 -#define IDS_TILE_CARPET_GREEN 2083 -#define IDS_TILE_CARPET_BROWN 2084 -#define IDS_TILE_CARPET_BLUE 2085 -#define IDS_TILE_CARPET_PURPLE 2086 -#define IDS_TILE_CARPET_CYAN 2087 -#define IDS_TILE_CARPET_SILVER 2088 -#define IDS_TILE_CARPET_GRAY 2089 -#define IDS_TILE_CARPET_PINK 2090 -#define IDS_TILE_CARPET_LIME 2091 -#define IDS_TILE_CARPET_YELLOW 2092 -#define IDS_TILE_CARPET_LIGHT_BLUE 2093 -#define IDS_TILE_CARPET_MAGENTA 2094 -#define IDS_TILE_CARPET_ORANGE 2095 -#define IDS_TILE_CARPET_WHITE 2096 -#define IDS_TILE_SANDSTONE_CHISELED 2097 -#define IDS_TILE_SANDSTONE_SMOOTH 2098 -#define IDS_DEATH_THORNS 2099 -#define IDS_DEATH_FALLING_ANVIL 2100 -#define IDS_DEATH_FALLING_TILE 2101 -#define IDS_COMMAND_TELEPORT_SUCCESS 2102 -#define IDS_COMMAND_TELEPORT_ME 2103 -#define IDS_COMMAND_TELEPORT_TO_ME 2104 -#define IDS_ENCHANTMENT_THORNS 2105 -#define IDS_TILE_STONESLAB_QUARTZ 2106 -#define IDS_POTION_DESC_NIGHTVISION 2107 -#define IDS_POTION_DESC_INVISIBILITY 2108 -#define IDS_REPAIR_AND_NAME 2109 -#define IDS_REPAIR_COST 2110 -#define IDS_REPAIR_EXPENSIVE 2111 -#define IDS_TITLE_RENAME 2112 -#define IDS_YOU_HAVE 2113 -#define IDS_REQUIRED_ITEMS_FOR_TRADE 2114 -#define IDS_VILLAGER_OFFERS_ITEM 2115 -#define IDS_TOOLTIPS_REPAIR 2116 -#define IDS_TOOLTIPS_TRADE 2117 -#define IDS_TOOLTIPS_DYECOLLAR 2118 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_OVERVIEW 2119 -#define IDS_TUTORIAL_PROMPT_ANVIL_MENU_OVERVIEW 2120 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_START 2121 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_REPAIR 2122 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_SACRIFICE 2123 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_ENCHANT 2124 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_COST 2125 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_RENAMING 2126 -#define IDS_TUTORIAL_TASK_ANVIL_MENU_SMITH 2127 -#define IDS_TUTORIAL_TASK_ANVIL_OVERVIEW 2128 -#define IDS_TUTORIAL_PROMPT_ANVIL_OVERVIEW 2129 -#define IDS_TUTORIAL_TASK_ANVIL_SUMMARY 2130 -#define IDS_TUTORIAL_TASK_ANVIL_ENCHANTED_BOOKS 2131 -#define IDS_TUTORIAL_TASK_ANVIL_COST 2132 -#define IDS_TUTORIAL_TASK_ANVIL_COST2 2133 -#define IDS_TUTORIAL_TASK_ANVIL_RENAMING 2134 -#define IDS_TUTORIAL_TASK_ANVIL_USE_CHESTS 2135 -#define IDS_TUTORIAL_TASK_TRADING_MENU_OVERVIEW 2136 -#define IDS_TUTORIAL_PROMPT_TRADING_MENU_OVERVIEW 2137 -#define IDS_TUTORIAL_TASK_TRADING_MENU_START 2138 -#define IDS_TUTORIAL_TASK_TRADING_MENU_UNAVAILABLE 2139 -#define IDS_TUTORIAL_TASK_TRADING_MENU_DETAILS 2140 -#define IDS_TUTORIAL_TASK_TRADING_MENU_INVENTORY 2141 -#define IDS_TUTORIAL_TASK_TRADING_MENU_TRADE 2142 -#define IDS_TUTORIAL_TASK_TRADING_OVERVIEW 2143 -#define IDS_TUTORIAL_PROMPT_TRADING_OVERVIEW 2144 -#define IDS_TUTORIAL_TASK_TRADING_SUMMARY 2145 -#define IDS_TUTORIAL_TASK_TRADING_TRADES 2146 -#define IDS_TUTORIAL_TASK_TRADING_INCREASE_TRADES 2147 -#define IDS_TUTORIAL_TASK_TRADING_DECREASE_TRADES 2148 -#define IDS_TUTORIAL_TASK_TRADING_USE_CHESTS 2149 -#define IDS_TUTORIAL_TASK_ENDERCHEST_OVERVIEW 2150 -#define IDS_TUTORIAL_PROMPT_ENDERCHEST_OVERVIEW 2151 -#define IDS_TUTORIAL_TASK_ENDERCHEST_SUMMARY 2152 -#define IDS_TUTORIAL_TASK_ENDERCHEST_PLAYERS 2153 -#define IDS_TUTORIAL_TASK_ENDERCHEST_FUNCTION 2154 -#define IDS_DESC_ENCHANTED_GOLDENAPPLE 2155 -#define IDS_ENABLE_TELEPORT 2156 -#define IDS_TELEPORT 2157 -#define IDS_TELEPORT_TO_PLAYER 2158 -#define IDS_TELEPORT_TO_ME 2159 -#define IDS_CAN_DISABLE_EXHAUSTION 2160 -#define IDS_CAN_INVISIBLE 2161 -#define IDS_PRIV_CAN_INVISIBLE_TOGGLE_ON 2162 -#define IDS_PRIV_CAN_INVISIBLE_TOGGLE_OFF 2163 -#define IDS_PRIV_CAN_FLY_TOGGLE_ON 2164 -#define IDS_PRIV_CAN_FLY_TOGGLE_OFF 2165 -#define IDS_PRIV_CAN_EXHAUSTION_TOGGLE_ON 2166 -#define IDS_PRIV_CAN_EXHAUSTION_TOGGLE_OFF 2167 -#define IDS_PRIV_CAN_TELEPORT_TOGGLE_ON 2168 -#define IDS_PRIV_CAN_TELEPORT_TOGGLE_OFF 2169 -#define IDS_HOW_TO_PLAY_ANVIL 2170 -#define IDS_HOW_TO_PLAY_TRADING 2171 -#define IDS_HOW_TO_PLAY_ENDERCHEST 2172 -#define IDS_VILLAGER_FARMER 2173 -#define IDS_VILLAGER_LIBRARIAN 2174 -#define IDS_VILLAGER_PRIEST 2175 -#define IDS_VILLAGER_SMITH 2176 -#define IDS_VILLAGER_BUTCHER 2177 -#define IDS_DESC_VILLAGER 2178 -#define IDS_CHEST_LARGE 2179 -#define IDS_TUTORIAL_TASK_ENCHANTING_BOOKS 2180 -#define IDS_TUTORIAL_TASK_REDSTONE_TRIPWIRE 2181 -#define IDS_TUTORIAL_TASK_BREEDING_WOLF_COLLAR 2182 -#define IDS_TUTORIAL_TASK_FARMING_CARROTS_AND_POTATOES 2183 -#define IDS_TUTORIAL_TASK_BREEDING_RIDING_PIGS 2184 -#define IDS_TUTORIAL_TASK_MINECART_PUSHING 2185 -#define IDS_CONNECTION_FAILED_NO_SD_SPLITSCREEN 2186 -#define IDS_TOOLTIPS_CURE 2187 -#define IDS_WINDOWS_EXIT 2188 -#define IDS_LANG_SYSTEM 2189 -#define IDS_LANG_ENGLISH 2190 -#define IDS_LANG_GERMAN 2191 -#define IDS_LANG_SPANISH 2192 -#define IDS_LANG_SPANISH_SPAIN 2193 -#define IDS_LANG_SPANISH_LATIN_AMERICA 2194 -#define IDS_LANG_FRENCH 2195 -#define IDS_LANG_ITALIAN 2196 -#define IDS_LANG_PORTUGUESE 2197 -#define IDS_LANG_PORTUGUESE_PORTUGAL 2198 -#define IDS_LANG_PORTUGUESE_BRAZIL 2199 -#define IDS_LANG_JAPANESE 2200 -#define IDS_LANG_KOREAN 2201 -#define IDS_LANG_CHINESE_TRADITIONAL 2202 -#define IDS_LANG_CHINESE_SIMPLIFIED 2203 -#define IDS_LANG_DANISH 2204 -#define IDS_LANG_FINISH 2205 -#define IDS_LANG_DUTCH 2206 -#define IDS_LANG_POLISH 2207 -#define IDS_LANG_RUSSIAN 2208 -#define IDS_LANG_SWEDISH 2209 -#define IDS_LANG_NORWEGIAN 2210 -#define IDS_LANG_GREEK 2211 -#define IDS_LANG_TURKISH 2212 -#define IDS_LEADERBOARD_KILLS_EASY 2213 -#define IDS_LEADERBOARD_KILLS_NORMAL 2214 -#define IDS_LEADERBOARD_KILLS_HARD 2215 -#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2216 -#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2217 -#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2218 -#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2219 -#define IDS_LEADERBOARD_FARMING_PEACEFUL 2220 -#define IDS_LEADERBOARD_FARMING_EASY 2221 -#define IDS_LEADERBOARD_FARMING_NORMAL 2222 -#define IDS_LEADERBOARD_FARMING_HARD 2223 -#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2224 -#define IDS_LEADERBOARD_TRAVELLING_EASY 2225 -#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2226 -#define IDS_LEADERBOARD_TRAVELLING_HARD 2227 -#define IDS_TIPS_GAMETIP_0 2228 -#define IDS_TIPS_GAMETIP_1 2229 -#define IDS_TIPS_GAMETIP_48 2230 -#define IDS_TIPS_GAMETIP_44 2231 -#define IDS_TIPS_GAMETIP_45 2232 -#define IDS_TIPS_TRIVIA_4 2233 -#define IDS_TIPS_TRIVIA_17 2234 -#define IDS_HOW_TO_PLAY_MULTIPLAYER 2235 -#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2236 -#define IDS_HOW_TO_PLAY_CREATIVE 2237 -#define IDS_TUTORIAL_TASK_FLY 2238 -#define IDS_TOOLTIPS_SELECTDEVICE 2239 -#define IDS_TOOLTIPS_CHANGEDEVICE 2240 -#define IDS_TOOLTIPS_VIEW_GAMERCARD 2241 -#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2242 -#define IDS_TOOLTIPS_INVITE_PARTY 2243 -#define IDS_CONFIRM_START_CREATIVE 2244 -#define IDS_CONFIRM_START_SAVEDINCREATIVE 2245 -#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2246 -#define IDS_CONFIRM_START_HOST_PRIVILEGES 2247 -#define IDS_CONNECTION_LOST_LIVE 2248 -#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2249 -#define IDS_AWARD_AVATAR1 2250 -#define IDS_AWARD_AVATAR2 2251 -#define IDS_AWARD_AVATAR3 2252 -#define IDS_AWARD_THEME 2253 -#define IDS_UNLOCK_ACHIEVEMENT_TEXT 2254 -#define IDS_UNLOCK_AVATAR_TEXT 2255 -#define IDS_UNLOCK_GAMERPIC_TEXT 2256 -#define IDS_UNLOCK_THEME_TEXT 2257 -#define IDS_UNLOCK_ACCEPT_INVITE 2258 -#define IDS_UNLOCK_GUEST_TEXT 2259 -#define IDS_LEADERBOARD_GAMERTAG 2260 -#define IDS_GROUPNAME_POTIONS_480 2261 -#define IDS_RETURNEDTOTITLESCREEN_TEXT 2262 -#define IDS_TRIALOVER_TEXT 2263 -#define IDS_FATAL_ERROR_TEXT 2264 -#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2265 -#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2266 -#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2267 -#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2268 -#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2269 -#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2270 -#define IDS_SAVE_ICON_MESSAGE 2271 -#define IDS_GAMEOPTION_HOST_PRIVILEGES 2272 -#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2273 -#define IDS_ACHIEVEMENTS 2274 -#define IDS_LABEL_GAMERTAGS 2275 -#define IDS_IN_GAME_GAMERTAGS 2276 -#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2277 -#define IDS_TITLE_UPDATE_NAME 2278 -#define IDS_PLATFORM_NAME 2279 -#define IDS_BACK_BUTTON 2280 -#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2281 -#define IDS_KICK_PLAYER_DESCRIPTION 2282 -#define IDS_USING_TRIAL_TEXUREPACK_WARNING 2283 -#define IDS_WORLD_SIZE_TITLE_SMALL 2284 -#define IDS_WORLD_SIZE_TITLE_MEDIUM 2285 -#define IDS_WORLD_SIZE_TITLE_LARGE 2286 -#define IDS_WORLD_SIZE_TITLE_CLASSIC 2287 -#define IDS_WORLD_SIZE 2288 -#define IDS_GAMEOPTION_WORLD_SIZE 2289 -#define IDS_DISABLE_SAVING 2290 -#define IDS_GAMEOPTION_DISABLE_SAVING 2291 -#define IDS_CHECKBOX_FULLSCREEN 2292 -#define IDS_CHECKBOX_VSYNC 2293 -#define IDS_SLIDER_FOV 2294 -#define IDS_SLIDER_RENDERDISTANCE 2295 -#define IDS_IN_GAME_OLDSWINGANIMATION 2296 -#define IDS_CHECKBOX_CAVESOUNDS 2297 -#define IDS_CHECKBOX_CLASSICCRAFTING 2298 -#define IDS_GRAPHICSMODE_POTATO 2299 -#define IDS_GRAPHICSMODE_FAST 2300 -#define IDS_GRAPHICSMODE_FANCY 2301 -#define IDS_GRAPHICSMODE_EXTRA 2302 -#define IDS_CREATE 2303 -#define IDS_JOIN 2304 -#define IDS_GENERAL 2305 -#define IDS_QUALITY 2306 -#define IDS_GENERAL_OPTIONS 2307 -#define IDS_QUALITY_OPTIONS 2308 -#define IDS_SERVER_ADD 2309 -#define IDS_SERVER_ADDRESS 2310 -#define IDS_SERVER_PORT 2311 -#define IDS_SERVER_NAME 2312 -#define IDS_SERVER_MINECRAFT 2313 -#define IDS_SERVER_EDIT 2314 -#define IDS_SERVER_DELETE 2315 -#define IDS_RICHPRESENCE_GAMESTATE 2316 -#define IDS_RICHPRESENCE_IDLE 2317 -#define IDS_RICHPRESENCE_MENUS 2318 -#define IDS_RICHPRESENCE_MULTIPLAYER 2319 -#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2320 -#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2321 -#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2322 -#define IDS_RICHPRESENCESTATE_BLANK 2323 -#define IDS_RICHPRESENCESTATE_RIDING_PIG 2324 -#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2325 -#define IDS_RICHPRESENCESTATE_BOATING 2326 -#define IDS_RICHPRESENCESTATE_FISHING 2327 -#define IDS_RICHPRESENCESTATE_CRAFTING 2328 -#define IDS_RICHPRESENCESTATE_FORGING 2329 -#define IDS_RICHPRESENCESTATE_NETHER 2330 -#define IDS_RICHPRESENCESTATE_CD 2331 -#define IDS_RICHPRESENCESTATE_MAP 2332 -#define IDS_RICHPRESENCESTATE_ENCHANTING 2333 -#define IDS_RICHPRESENCESTATE_BREWING 2334 -#define IDS_RICHPRESENCESTATE_ANVIL 2335 -#define IDS_RICHPRESENCESTATE_TRADING 2336 -#define IDS_RICHPRESENCESTATE_BEACON 2337 -#define IDS_RICHPRESENCESTATE_END 2338 -#define IDS_RICHPRESENCESTATE_END_POEM 2339 -#define IDS_RICHPRESENCESTATE_FIREWORKS 2340 -#define IDS_RICHPRESENCESTATE_FURNACE 2341 -#define IDS_RICHPRESENCESTATE_HOPPER 2342 -#define IDS_RICHPRESENCESTATE_HORSE 2343 -#define IDS_RICHPRESENCESTATE_RIDING_HORSE 2344 -#define IDS_RICHPRESENCESTATE_SIGN 2345 +#define IDS_PRO_PROFILEPROBLEM_TEXT 49 +#define IDS_SAVE_TRANSFER_WRONG_VERSION 50 +#define IDS_UNHIDE_MASHUP_WORLDS 51 +#define IDS_TOOLTIPS_HIDE 52 +#define IDS_GAMENAME 53 +#define IDS_OPTIONSFILE 54 +#define IDS_SAVECACHEFILE 55 +#define IDS_ERROR_NETWORK 56 +#define IDS_ERROR_NETWORK_TITLE 57 +#define IDS_ERROR_NETWORK_EXIT 58 +#define IDS_CHAT_RESTRICTION_UGC 59 +#define IDS_CONTENT_RESTRICTION 60 +#define IDS_ONLINE_SERVICE_TITLE 61 +#define IDS_ERROR_PSN_SIGN_OUT 62 +#define IDS_ERROR_PSN_SIGN_OUT_EXIT 63 +#define IDS_PLAYER_LIST_TITLE 64 +#define IDS_DLC_PRICE_FREE 65 +#define IDS_CORRUPT_OPTIONS 66 +#define IDS_CORRUPT_OPTIONS_DELETE 67 +#define IDS_CORRUPT_OPTIONS_RETRY 68 +#define IDS_CORRUPT_SAVECACHE 69 +#define IDS_SAVEDATA_COPIED_TITLE 70 +#define IDS_SAVEDATA_COPIED_TEXT 71 +#define IDS_FATAL_TROPHY_ERROR 72 +#define IDS_TOOLTIPS_GAME_INVITES 73 +#define IDS_CORRUPT_FILE 74 +#define IDS_CONTROLER_DISCONNECT_TITLE 75 +#define IDS_CONTROLER_DISCONNECT_TEXT 76 +#define IDS_CONTENT_RESTRICTION_MULTIPLAYER 77 +#define IDS_CONTENT_RESTRICTION_PATCH_AVAILABLE 78 +#define IDS_NO_DLCCATEGORIES 79 +#define IDS_INVITATION_SUBJECT_MAX_18_CHARS 80 +#define IDS_INVITATION_BODY 81 +#define IDS_INCREASE_WORLD_SIZE 82 +#define IDS_INCREASE_WORLD_SIZE_OVERWRITE_EDGES 83 +#define IDS_GAMEOPTION_INCREASE_WORLD_SIZE 84 +#define IDS_GAMEOPTION_INCREASE_WORLD_SIZE_OVERWRITE_EDGES 85 +#define IDS_DYNAFONT 86 +#define IDS_TIPS_GAMETIP_NEWDLC 87 +#define IDS_TIPS_GAMETIP_SKINPACKS 88 +#define IDS_TIPS_GAMETIP_2 89 +#define IDS_TIPS_GAMETIP_3 90 +#define IDS_TIPS_GAMETIP_4 91 +#define IDS_TIPS_GAMETIP_5 92 +#define IDS_TIPS_GAMETIP_6 93 +#define IDS_TIPS_GAMETIP_7 94 +#define IDS_TIPS_GAMETIP_8 95 +#define IDS_TIPS_GAMETIP_9 96 +#define IDS_TIPS_GAMETIP_10 97 +#define IDS_TIPS_GAMETIP_11 98 +#define IDS_TIPS_GAMETIP_12 99 +#define IDS_TIPS_GAMETIP_13 100 +#define IDS_TIPS_GAMETIP_14 101 +#define IDS_TIPS_GAMETIP_15 102 +#define IDS_TIPS_GAMETIP_16 103 +#define IDS_TIPS_GAMETIP_17 104 +#define IDS_TIPS_GAMETIP_18 105 +#define IDS_TIPS_GAMETIP_19 106 +#define IDS_TIPS_GAMETIP_20 107 +#define IDS_TIPS_GAMETIP_21 108 +#define IDS_TIPS_GAMETIP_22 109 +#define IDS_TIPS_GAMETIP_23 110 +#define IDS_TIPS_GAMETIP_24 111 +#define IDS_TIPS_GAMETIP_25 112 +#define IDS_TIPS_GAMETIP_26 113 +#define IDS_TIPS_GAMETIP_27 114 +#define IDS_TIPS_GAMETIP_28 115 +#define IDS_TIPS_GAMETIP_29 116 +#define IDS_TIPS_GAMETIP_30 117 +#define IDS_TIPS_GAMETIP_31 118 +#define IDS_TIPS_GAMETIP_32 119 +#define IDS_TIPS_GAMETIP_33 120 +#define IDS_TIPS_GAMETIP_34 121 +#define IDS_TIPS_GAMETIP_35 122 +#define IDS_TIPS_GAMETIP_36 123 +#define IDS_TIPS_GAMETIP_37 124 +#define IDS_TIPS_GAMETIP_38 125 +#define IDS_TIPS_GAMETIP_39 126 +#define IDS_TIPS_GAMETIP_40 127 +#define IDS_TIPS_GAMETIP_41 128 +#define IDS_TIPS_GAMETIP_42 129 +#define IDS_TIPS_GAMETIP_43 130 +#define IDS_TIPS_GAMETIP_46 131 +#define IDS_TIPS_GAMETIP_47 132 +#define IDS_TIPS_GAMETIP_49 133 +#define IDS_TIPS_GAMETIP_50 134 +#define IDS_TIPS_TRIVIA_1 135 +#define IDS_TIPS_TRIVIA_2 136 +#define IDS_TIPS_TRIVIA_3 137 +#define IDS_TIPS_TRIVIA_5 138 +#define IDS_TIPS_TRIVIA_6 139 +#define IDS_TIPS_TRIVIA_7 140 +#define IDS_TIPS_TRIVIA_8 141 +#define IDS_TIPS_TRIVIA_9 142 +#define IDS_TIPS_TRIVIA_10 143 +#define IDS_TIPS_TRIVIA_11 144 +#define IDS_TIPS_TRIVIA_12 145 +#define IDS_TIPS_TRIVIA_13 146 +#define IDS_TIPS_TRIVIA_14 147 +#define IDS_TIPS_TRIVIA_15 148 +#define IDS_TIPS_TRIVIA_16 149 +#define IDS_TIPS_TRIVIA_18 150 +#define IDS_TIPS_TRIVIA_19 151 +#define IDS_TIPS_TRIVIA_20 152 +#define IDS_HOW_TO_PLAY_BASICS 153 +#define IDS_HOW_TO_PLAY_HUD 154 +#define IDS_HOW_TO_PLAY_INVENTORY 155 +#define IDS_HOW_TO_PLAY_CHEST 156 +#define IDS_HOW_TO_PLAY_LARGECHEST 157 +#define IDS_HOW_TO_PLAY_CRAFTING 158 +#define IDS_HOW_TO_PLAY_CRAFT_TABLE 159 +#define IDS_HOW_TO_PLAY_FURNACE 160 +#define IDS_HOW_TO_PLAY_DISPENSER 161 +#define IDS_HOW_TO_PLAY_BREWING 162 +#define IDS_HOW_TO_PLAY_ENCHANTMENT 163 +#define IDS_HOW_TO_PLAY_FARMANIMALS 164 +#define IDS_HOW_TO_PLAY_BREEDANIMALS 165 +#define IDS_HOW_TO_PLAY_NETHERPORTAL 166 +#define IDS_HOW_TO_PLAY_BANLIST 167 +#define IDS_HOW_TO_PLAY_HOSTOPTIONS 168 +#define IDS_HOW_TO_PLAY_NEXT 169 +#define IDS_HOW_TO_PLAY_PREV 170 +#define IDS_HOW_TO_PLAY_MENU_BASICS 171 +#define IDS_HOW_TO_PLAY_MENU_HUD 172 +#define IDS_HOW_TO_PLAY_MENU_INVENTORY 173 +#define IDS_HOW_TO_PLAY_MENU_CHESTS 174 +#define IDS_HOW_TO_PLAY_MENU_CRAFTING 175 +#define IDS_HOW_TO_PLAY_MENU_FURNACE 176 +#define IDS_HOW_TO_PLAY_MENU_DISPENSER 177 +#define IDS_HOW_TO_PLAY_MENU_FARMANIMALS 178 +#define IDS_HOW_TO_PLAY_MENU_BREEDANIMALS 179 +#define IDS_HOW_TO_PLAY_MENU_BREWING 180 +#define IDS_HOW_TO_PLAY_MENU_ENCHANTMENT 181 +#define IDS_HOW_TO_PLAY_MENU_NETHERPORTAL 182 +#define IDS_HOW_TO_PLAY_MENU_MULTIPLAYER 183 +#define IDS_HOW_TO_PLAY_MENU_SOCIALMEDIA 184 +#define IDS_HOW_TO_PLAY_MENU_BANLIST 185 +#define IDS_HOW_TO_PLAY_MENU_CREATIVE 186 +#define IDS_HOW_TO_PLAY_MENU_HOSTOPTIONS 187 +#define IDS_HOW_TO_PLAY_MENU_TRADING 188 +#define IDS_HOW_TO_PLAY_MENU_ANVIL 189 +#define IDS_HOW_TO_PLAY_MENU_THEEND 190 +#define IDS_HOW_TO_PLAY_THEEND 191 +#define IDS_HOW_TO_PLAY_MENU_SPRINT 192 +#define IDS_HOW_TO_PLAY_MENU_WHATSNEW 193 +#define IDS_HOW_TO_PLAY_WHATSNEW 194 +#define IDS_TITLEUPDATE 195 +#define IDS_HOW_TO_PLAY_MENU_HORSES 196 +#define IDS_HOW_TO_PLAY_HORSES 197 +#define IDS_HOW_TO_PLAY_MENU_BEACONS 198 +#define IDS_HOW_TO_PLAY_BEACONS 199 +#define IDS_HOW_TO_PLAY_MENU_FIREWORKS 200 +#define IDS_HOW_TO_PLAY_FIREWORKS 201 +#define IDS_HOW_TO_PLAY_MENU_HOPPERS 202 +#define IDS_HOW_TO_PLAY_HOPPERS 203 +#define IDS_HOW_TO_PLAY_MENU_DROPPERS 204 +#define IDS_HOW_TO_PLAY_DROPPERS 205 +#define IDS_DESC_SWORD 206 +#define IDS_DESC_SHOVEL 207 +#define IDS_DESC_PICKAXE 208 +#define IDS_DESC_HATCHET 209 +#define IDS_DESC_HOE 210 +#define IDS_DESC_DOOR_WOOD 211 +#define IDS_DESC_DOOR_IRON 212 +#define IDS_DESC_HELMET 213 +#define IDS_DESC_CHESTPLATE 214 +#define IDS_DESC_LEGGINGS 215 +#define IDS_DESC_BOOTS 216 +#define IDS_DESC_HELMET_LEATHER 217 +#define IDS_DESC_CHESTPLATE_LEATHER 218 +#define IDS_DESC_LEGGINGS_LEATHER 219 +#define IDS_DESC_BOOTS_LEATHER 220 +#define IDS_DESC_HELMET_CHAIN 221 +#define IDS_DESC_CHESTPLATE_CHAIN 222 +#define IDS_DESC_LEGGINGS_CHAIN 223 +#define IDS_DESC_BOOTS_CHAIN 224 +#define IDS_DESC_HELMET_IRON 225 +#define IDS_DESC_CHESTPLATE_IRON 226 +#define IDS_DESC_LEGGINGS_IRON 227 +#define IDS_DESC_BOOTS_IRON 228 +#define IDS_DESC_HELMET_GOLD 229 +#define IDS_DESC_CHESTPLATE_GOLD 230 +#define IDS_DESC_LEGGINGS_GOLD 231 +#define IDS_DESC_BOOTS_GOLD 232 +#define IDS_DESC_HELMET_DIAMOND 233 +#define IDS_DESC_CHESTPLATE_DIAMOND 234 +#define IDS_DESC_LEGGINGS_DIAMOND 235 +#define IDS_DESC_BOOTS_DIAMOND 236 +#define IDS_DESC_INGOT 237 +#define IDS_DESC_BLOCK 238 +#define IDS_DESC_PRESSUREPLATE 239 +#define IDS_DESC_STAIRS 240 +#define IDS_DESC_SLAB 241 +#define IDS_DESC_HALFSLAB 242 +#define IDS_DESC_TORCH 243 +#define IDS_DESC_WOODENPLANKS 244 +#define IDS_DESC_SANDSTONE 245 +#define IDS_DESC_STRUCTBLOCK 246 +#define IDS_DESC_STICK 247 +#define IDS_DESC_BED 248 +#define IDS_DESC_CRAFTINGTABLE 249 +#define IDS_DESC_FURNACE 250 +#define IDS_DESC_CHEST 251 +#define IDS_DESC_FENCE 252 +#define IDS_DESC_LADDER 253 +#define IDS_DESC_TRAPDOOR 254 +#define IDS_DESC_TRAPDOOR_IRON 255 +#define IDS_DESC_SIGN 256 +#define IDS_DESC_GLOWSTONE 257 +#define IDS_DESC_TNT 258 +#define IDS_DESC_BOWL 259 +#define IDS_DESC_BUCKET 260 +#define IDS_DESC_BUCKET_WATER 261 +#define IDS_DESC_BUCKET_LAVA 262 +#define IDS_DESC_BUCKET_MILK 263 +#define IDS_DESC_FLINTANDSTEEL 264 +#define IDS_DESC_FISHINGROD 265 +#define IDS_DESC_CLOCK 266 +#define IDS_DESC_COMPASS 267 +#define IDS_DESC_MAP 268 +#define IDS_DESC_MAP_EMPTY 269 +#define IDS_DESC_BOW 270 +#define IDS_DESC_ARROW 271 +#define IDS_DESC_NETHER_STAR 272 +#define IDS_DESC_FIREWORKS 273 +#define IDS_DESC_FIREWORKS_CHARGE 274 +#define IDS_DESC_COMPARATOR 275 +#define IDS_DESC_MINECART_TNT 276 +#define IDS_DESC_DAYLIGHT_DETECTOR 277 +#define IDS_DESC_MINECART_HOPPER 278 +#define IDS_DESC_IRON_HORSE_ARMOR 279 +#define IDS_DESC_GOLD_HORSE_ARMOR 280 +#define IDS_DESC_DIAMOND_HORSE_ARMOR 281 +#define IDS_DESC_LEAD 282 +#define IDS_DESC_NAME_TAG 283 +#define IDS_DESC_BREAD 284 +#define IDS_DESC_CAKE 285 +#define IDS_DESC_COOKIE 286 +#define IDS_DESC_MELON_SLICE 287 +#define IDS_DESC_MUSHROOMSTEW 288 +#define IDS_DESC_CHICKEN_RAW 289 +#define IDS_DESC_CHICKEN_COOKED 290 +#define IDS_DESC_BEEF_RAW 291 +#define IDS_DESC_BEEF_COOKED 292 +#define IDS_DESC_PORKCHOP_RAW 293 +#define IDS_DESC_PORKCHOP_COOKED 294 +#define IDS_DESC_FISH_RAW 295 +#define IDS_DESC_FISH_COOKED 296 +#define IDS_DESC_APPLE 297 +#define IDS_DESC_GOLDENAPPLE 298 +#define IDS_DESC_ROTTEN_FLESH 299 +#define IDS_DESC_SUGAR 300 +#define IDS_DESC_LEVER 301 +#define IDS_DESC_REDSTONETORCH 302 +#define IDS_DESC_REDSTONEREPEATER 303 +#define IDS_DESC_BUTTON 304 +#define IDS_DESC_DISPENSER 305 +#define IDS_DESC_NOTEBLOCK 306 +#define IDS_DESC_RAIL 307 +#define IDS_DESC_POWEREDRAIL 308 +#define IDS_DESC_DETECTORRAIL 309 +#define IDS_DESC_MINECART 310 +#define IDS_DESC_MINECARTWITHCHEST 311 +#define IDS_DESC_MINECARTWITHFURNACE 312 +#define IDS_DESC_BOAT 313 +#define IDS_DESC_WOOL 314 +#define IDS_DESC_WOOLSTRING 315 +#define IDS_DESC_DYE_BLACK 316 +#define IDS_DESC_DYE_GREEN 317 +#define IDS_DESC_DYE_BROWN 318 +#define IDS_DESC_DYE_SILVER 319 +#define IDS_DESC_DYE_YELLOW 320 +#define IDS_DESC_DYE_RED 321 +#define IDS_DESC_DYE_WHITE 322 +#define IDS_DESC_DYE_PINK 323 +#define IDS_DESC_DYE_ORANGE 324 +#define IDS_DESC_DYE_LIME 325 +#define IDS_DESC_DYE_GRAY 326 +#define IDS_DESC_DYE_LIGHTGRAY 327 +#define IDS_DESC_DYE_LIGHTBLUE 328 +#define IDS_DESC_DYE_CYAN 329 +#define IDS_DESC_DYE_PURPLE 330 +#define IDS_DESC_DYE_MAGENTA 331 +#define IDS_DESC_DYE_BLUE 332 +#define IDS_DESC_JUKEBOX 333 +#define IDS_DESC_DIAMONDS 334 +#define IDS_DESC_JACKOLANTERN 335 +#define IDS_DESC_PAPER 336 +#define IDS_DESC_BOOK 337 +#define IDS_DESC_BOOKSHELF 338 +#define IDS_DESC_PICTURE 339 +#define IDS_DESC_ORE_GOLD 340 +#define IDS_DESC_ORE_IRON 341 +#define IDS_DESC_ORE_COAL 342 +#define IDS_DESC_ORE_LAPIS 343 +#define IDS_DESC_ORE_DIAMOND 344 +#define IDS_DESC_ORE_REDSTONE 345 +#define IDS_DESC_STONE 346 +#define IDS_DESC_DIRT 347 +#define IDS_DESC_SAPLING 348 +#define IDS_DESC_BEDROCK 349 +#define IDS_DESC_LAVA 350 +#define IDS_DESC_SAND 351 +#define IDS_DESC_GRAVEL 352 +#define IDS_DESC_LOG 353 +#define IDS_DESC_GLASS 354 +#define IDS_DESC_STONE_BRICK 355 +#define IDS_DESC_BRICK 356 +#define IDS_DESC_CLAY 357 +#define IDS_DESC_CLAY_TILE 358 +#define IDS_DESC_SNOW 359 +#define IDS_DESC_TOP_SNOW 360 +#define IDS_DESC_TALL_GRASS 361 +#define IDS_DESC_FLOWER 362 +#define IDS_DESC_MUSHROOM 363 +#define IDS_DESC_OBSIDIAN 364 +#define IDS_DESC_MOB_SPAWNER 365 +#define IDS_DESC_REDSTONE_DUST 366 +#define IDS_DESC_CROPS 367 +#define IDS_DESC_FARMLAND 368 +#define IDS_DESC_CACTUS 369 +#define IDS_DESC_REEDS 370 +#define IDS_DESC_PUMPKIN 371 +#define IDS_DESC_HELL_ROCK 372 +#define IDS_DESC_HELL_SAND 373 +#define IDS_DESC_PORTAL 374 +#define IDS_DESC_COAL 375 +#define IDS_DESC_STRING 376 +#define IDS_DESC_FEATHER 377 +#define IDS_DESC_SULPHUR 378 +#define IDS_DESC_WHEAT_SEEDS 379 +#define IDS_DESC_WHEAT 380 +#define IDS_DESC_FLINT 381 +#define IDS_DESC_SADDLE 382 +#define IDS_DESC_SNOWBALL 383 +#define IDS_DESC_LEATHER 384 +#define IDS_DESC_SLIMEBALL 385 +#define IDS_DESC_EGG 386 +#define IDS_DESC_YELLOW_DUST 387 +#define IDS_DESC_BONE 388 +#define IDS_DESC_RECORD 389 +#define IDS_DESC_WATER 390 +#define IDS_DESC_LEAVES 391 +#define IDS_DESC_MOSS_STONE 392 +#define IDS_DESC_SHEARS 393 +#define IDS_DESC_PISTON 394 +#define IDS_DESC_STICKY_PISTON 395 +#define IDS_DESC_STONE_BRICK_SMOOTH 396 +#define IDS_DESC_IRON_FENCE 397 +#define IDS_DESC_FENCE_GATE 398 +#define IDS_DESC_MELON_BLOCK 399 +#define IDS_DESC_THIN_GLASS 400 +#define IDS_DESC_PUMPKIN_SEEDS 401 +#define IDS_DESC_MELON_SEEDS 402 +#define IDS_DESC_ENDER_PEARL 403 +#define IDS_DESC_GRASS 404 +#define IDS_DESC_SPONGE 405 +#define IDS_DESC_WEB 406 +#define IDS_DESC_STONE_SILVERFISH 407 +#define IDS_DESC_VINE 408 +#define IDS_DESC_ICE 409 +#define IDS_DESC_DEAD_BUSH 410 +#define IDS_DESC_BLAZE_ROD 411 +#define IDS_DESC_GHAST_TEAR 412 +#define IDS_DESC_GOLD_NUGGET 413 +#define IDS_DESC_NETHER_STALK_SEEDS 414 +#define IDS_DESC_POTION 415 +#define IDS_DESC_GLASS_BOTTLE 416 +#define IDS_DESC_SPIDER_EYE 417 +#define IDS_DESC_FERMENTED_SPIDER_EYE 418 +#define IDS_DESC_BLAZE_POWDER 419 +#define IDS_DESC_MAGMA_CREAM 420 +#define IDS_DESC_BREWING_STAND 421 +#define IDS_DESC_CAULDRON 422 +#define IDS_DESC_EYE_OF_ENDER 423 +#define IDS_DESC_SPECKLED_MELON 424 +#define IDS_DESC_MYCEL 425 +#define IDS_DESC_WATERLILY 426 +#define IDS_DESC_NETHERBRICK 427 +#define IDS_DESC_NETHERFENCE 428 +#define IDS_DESC_NETHERSTALK 429 +#define IDS_DESC_ENCHANTMENTTABLE 430 +#define IDS_DESC_END_PORTAL 431 +#define IDS_DESC_ENDPORTALFRAME 432 +#define IDS_DESC_WHITESTONE 433 +#define IDS_DESC_DRAGONEGG 434 +#define IDS_DESC_EXP_BOTTLE 435 +#define IDS_DESC_FIREBALL 436 +#define IDS_DESC_ITEMFRAME 437 +#define IDS_DESC_MONSTER_SPAWNER 438 +#define IDS_DESC_WOODSLAB 439 +#define IDS_DESC_STONESLAB 440 +#define IDS_DESC_ITEM_NETHERBRICK 441 +#define IDS_DESC_REDSTONE_LIGHT 442 +#define IDS_DESC_COCOA 443 +#define IDS_DESC_SKULL 444 +#define IDS_DESC_COMMAND_BLOCK 445 +#define IDS_DESC_BEACON 446 +#define IDS_DESC_CHEST_TRAP 447 +#define IDS_DESC_WEIGHTED_PLATE_LIGHT 448 +#define IDS_DESC_WEIGHTED_PLATE_HEAVY 449 +#define IDS_DESC_REDSTONE_BLOCK 450 +#define IDS_DESC_HOPPER 451 +#define IDS_DESC_ACTIVATOR_RAIL 452 +#define IDS_DESC_DROPPER 453 +#define IDS_DESC_STAINED_CLAY 454 +#define IDS_DESC_HAY 455 +#define IDS_DESC_HARDENED_CLAY 456 +#define IDS_DESC_STAINED_GLASS 457 +#define IDS_DESC_STAINED_GLASS_PANE 458 +#define IDS_DESC_COAL_BLOCK 459 +#define IDS_SQUID 460 +#define IDS_DESC_SQUID 461 +#define IDS_COW 462 +#define IDS_DESC_COW 463 +#define IDS_SHEEP 464 +#define IDS_DESC_SHEEP 465 +#define IDS_CHICKEN 466 +#define IDS_DESC_CHICKEN 467 +#define IDS_PIG 468 +#define IDS_DESC_PIG 469 +#define IDS_WOLF 470 +#define IDS_DESC_WOLF 471 +#define IDS_CREEPER 472 +#define IDS_DESC_CREEPER 473 +#define IDS_SKELETON 474 +#define IDS_DESC_SKELETON 475 +#define IDS_SPIDER 476 +#define IDS_DESC_SPIDER 477 +#define IDS_ZOMBIE 478 +#define IDS_DESC_ZOMBIE 479 +#define IDS_PIGZOMBIE 480 +#define IDS_DESC_PIGZOMBIE 481 +#define IDS_GHAST 482 +#define IDS_DESC_GHAST 483 +#define IDS_SLIME 484 +#define IDS_DESC_SLIME 485 +#define IDS_ENDERMAN 486 +#define IDS_DESC_ENDERMAN 487 +#define IDS_SILVERFISH 488 +#define IDS_DESC_SILVERFISH 489 +#define IDS_CAVE_SPIDER 490 +#define IDS_DESC_CAVE_SPIDER 491 +#define IDS_MUSHROOM_COW 492 +#define IDS_DESC_MUSHROOM_COW 493 +#define IDS_SNOWMAN 494 +#define IDS_DESC_SNOWMAN 495 +#define IDS_ENDERDRAGON 496 +#define IDS_DESC_ENDERDRAGON 497 +#define IDS_BLAZE 498 +#define IDS_DESC_BLAZE 499 +#define IDS_LAVA_SLIME 500 +#define IDS_DESC_LAVA_SLIME 501 +#define IDS_VILLAGER 502 +#define IDS_OZELOT 503 +#define IDS_DESC_OZELOT 504 +#define IDS_IRONGOLEM 505 +#define IDS_DESC_IRONGOLEM 506 +#define IDS_BAT 507 +#define IDS_DESC_BAT 508 +#define IDS_WITCH 509 +#define IDS_DESC_WITCH 510 +#define IDS_HORSE 511 +#define IDS_DESC_HORSE 512 +#define IDS_DONKEY 513 +#define IDS_DESC_DONKEY 514 +#define IDS_MULE 515 +#define IDS_DESC_MULE 516 +#define IDS_ZOMBIE_HORSE 517 +#define IDS_SKELETON_HORSE 518 +#define IDS_WITHER 519 +#define IDS_DESC_WITHER 520 +#define IDS_CREDITS_EXPLODANIM 521 +#define IDS_CREDITS_CONCEPTART 522 +#define IDS_CREDITS_CRUNCHER 523 +#define IDS_CREDITS_BULLYCOORD 524 +#define IDS_CREDITS_ORIGINALDESIGN 525 +#define IDS_CREDITS_PMPROD 526 +#define IDS_CREDITS_RESTOFMOJANG 527 +#define IDS_CREDITS_LEADPC 528 +#define IDS_CREDITS_CODENINJA 529 +#define IDS_CREDITS_CEO 530 +#define IDS_CREDITS_WCW 531 +#define IDS_CREDITS_CUSTOMERSUPPORT 532 +#define IDS_CREDITS_OFFICEDJ 533 +#define IDS_CREDITS_DESPROG 534 +#define IDS_CREDITS_DEVELOPER 535 +#define IDS_CREDITS_CHIEFARCHITECT 536 +#define IDS_CREDITS_ARTDEVELOPER 537 +#define IDS_CREDITS_GAMECRAFTER 538 +#define IDS_CREDITS_DOF 539 +#define IDS_CREDITS_MUSICANDSOUNDS 540 +#define IDS_CREDITS_PROGRAMMING 541 +#define IDS_CREDITS_ART 542 +#define IDS_CREDITS_QA 543 +#define IDS_CREDITS_EXECPRODUCER 544 +#define IDS_CREDITS_LEADPRODUCER 545 +#define IDS_CREDITS_PRODUCER 546 +#define IDS_CREDITS_TESTLEAD 547 +#define IDS_CREDITS_LEADTESTER 548 +#define IDS_CREDITS_DESIGNTEAM 549 +#define IDS_CREDITS_DEVELOPMENTTEAM 550 +#define IDS_CREDITS_RELEASEMANAGEMENT 551 +#define IDS_CREDITS_XBLADIRECTOR 552 +#define IDS_CREDITS_BIZDEV 553 +#define IDS_CREDITS_PORTFOLIODIRECTOR 554 +#define IDS_CREDITS_PRODUCTMANAGER 555 +#define IDS_CREDITS_MARKETING 556 +#define IDS_CREDITS_COMMUNITYMANAGER 557 +#define IDS_CREDITS_EUROPELOC 558 +#define IDS_CREDITS_REDMONDLOC 559 +#define IDS_CREDITS_ASIALOC 560 +#define IDS_CREDITS_USERRESEARCH 561 +#define IDS_CREDITS_MGSCENTRAL 562 +#define IDS_CREDITS_MILESTONEACCEPT 563 +#define IDS_CREDITS_SPECIALTHANKS 564 +#define IDS_CREDITS_TESTMANAGER 565 +#define IDS_CREDITS_SRTESTLEAD 566 +#define IDS_CREDITS_SDET 567 +#define IDS_CREDITS_PROJECT 568 +#define IDS_CREDITS_ADDITIONALSTE 569 +#define IDS_CREDITS_TESTASSOCIATES 570 +#define IDS_CREDITS_JON_KAGSTROM 571 +#define IDS_CREDITS_TOBIAS_MOLLSTAM 572 +#define IDS_CREDITS_RISE_LUGO 573 +#define IDS_ITEM_SWORD_WOOD 574 +#define IDS_ITEM_SWORD_STONE 575 +#define IDS_ITEM_SWORD_IRON 576 +#define IDS_ITEM_SWORD_DIAMOND 577 +#define IDS_ITEM_SWORD_GOLD 578 +#define IDS_ITEM_SHOVEL_WOOD 579 +#define IDS_ITEM_SHOVEL_STONE 580 +#define IDS_ITEM_SHOVEL_IRON 581 +#define IDS_ITEM_SHOVEL_DIAMOND 582 +#define IDS_ITEM_SHOVEL_GOLD 583 +#define IDS_ITEM_PICKAXE_WOOD 584 +#define IDS_ITEM_PICKAXE_STONE 585 +#define IDS_ITEM_PICKAXE_IRON 586 +#define IDS_ITEM_PICKAXE_DIAMOND 587 +#define IDS_ITEM_PICKAXE_GOLD 588 +#define IDS_ITEM_HATCHET_WOOD 589 +#define IDS_ITEM_HATCHET_STONE 590 +#define IDS_ITEM_HATCHET_IRON 591 +#define IDS_ITEM_HATCHET_DIAMOND 592 +#define IDS_ITEM_HATCHET_GOLD 593 +#define IDS_ITEM_HOE_WOOD 594 +#define IDS_ITEM_HOE_STONE 595 +#define IDS_ITEM_HOE_IRON 596 +#define IDS_ITEM_HOE_DIAMOND 597 +#define IDS_ITEM_HOE_GOLD 598 +#define IDS_ITEM_DOOR_WOOD 599 +#define IDS_ITEM_DOOR_IRON 600 +#define IDS_ITEM_HELMET_CHAIN 601 +#define IDS_ITEM_CHESTPLATE_CHAIN 602 +#define IDS_ITEM_LEGGINGS_CHAIN 603 +#define IDS_ITEM_BOOTS_CHAIN 604 +#define IDS_ITEM_HELMET_CLOTH 605 +#define IDS_ITEM_HELMET_IRON 606 +#define IDS_ITEM_HELMET_DIAMOND 607 +#define IDS_ITEM_HELMET_GOLD 608 +#define IDS_ITEM_CHESTPLATE_CLOTH 609 +#define IDS_ITEM_CHESTPLATE_IRON 610 +#define IDS_ITEM_CHESTPLATE_DIAMOND 611 +#define IDS_ITEM_CHESTPLATE_GOLD 612 +#define IDS_ITEM_LEGGINGS_CLOTH 613 +#define IDS_ITEM_LEGGINGS_IRON 614 +#define IDS_ITEM_LEGGINGS_DIAMOND 615 +#define IDS_ITEM_LEGGINGS_GOLD 616 +#define IDS_ITEM_BOOTS_CLOTH 617 +#define IDS_ITEM_BOOTS_IRON 618 +#define IDS_ITEM_BOOTS_DIAMOND 619 +#define IDS_ITEM_BOOTS_GOLD 620 +#define IDS_ITEM_INGOT_IRON 621 +#define IDS_ITEM_INGOT_GOLD 622 +#define IDS_ITEM_BUCKET 623 +#define IDS_ITEM_BUCKET_WATER 624 +#define IDS_ITEM_BUCKET_LAVA 625 +#define IDS_ITEM_FLINT_AND_STEEL 626 +#define IDS_ITEM_APPLE 627 +#define IDS_ITEM_BOW 628 +#define IDS_ITEM_ARROW 629 +#define IDS_ITEM_COAL 630 +#define IDS_ITEM_CHARCOAL 631 +#define IDS_ITEM_DIAMOND 632 +#define IDS_ITEM_STICK 633 +#define IDS_ITEM_BOWL 634 +#define IDS_ITEM_MUSHROOM_STEW 635 +#define IDS_ITEM_STRING 636 +#define IDS_ITEM_FEATHER 637 +#define IDS_ITEM_SULPHUR 638 +#define IDS_ITEM_WHEAT_SEEDS 639 +#define IDS_ITEM_WHEAT 640 +#define IDS_ITEM_BREAD 641 +#define IDS_ITEM_FLINT 642 +#define IDS_ITEM_PORKCHOP_RAW 643 +#define IDS_ITEM_PORKCHOP_COOKED 644 +#define IDS_ITEM_PAINTING 645 +#define IDS_ITEM_APPLE_GOLD 646 +#define IDS_ITEM_SIGN 647 +#define IDS_ITEM_MINECART 648 +#define IDS_ITEM_SADDLE 649 +#define IDS_ITEM_REDSTONE 650 +#define IDS_ITEM_SNOWBALL 651 +#define IDS_ITEM_BOAT 652 +#define IDS_ITEM_LEATHER 653 +#define IDS_ITEM_BUCKET_MILK 654 +#define IDS_ITEM_BRICK 655 +#define IDS_ITEM_CLAY 656 +#define IDS_ITEM_REEDS 657 +#define IDS_ITEM_PAPER 658 +#define IDS_ITEM_BOOK 659 +#define IDS_ITEM_SLIMEBALL 660 +#define IDS_ITEM_MINECART_CHEST 661 +#define IDS_ITEM_MINECART_FURNACE 662 +#define IDS_ITEM_EGG 663 +#define IDS_ITEM_COMPASS 664 +#define IDS_ITEM_FISHING_ROD 665 +#define IDS_ITEM_CLOCK 666 +#define IDS_ITEM_YELLOW_DUST 667 +#define IDS_ITEM_FISH_RAW 668 +#define IDS_ITEM_FISH_COOKED 669 +#define IDS_ITEM_DYE_POWDER 670 +#define IDS_ITEM_DYE_POWDER_BLACK 671 +#define IDS_ITEM_DYE_POWDER_RED 672 +#define IDS_ITEM_DYE_POWDER_GREEN 673 +#define IDS_ITEM_DYE_POWDER_BROWN 674 +#define IDS_ITEM_DYE_POWDER_BLUE 675 +#define IDS_ITEM_DYE_POWDER_PURPLE 676 +#define IDS_ITEM_DYE_POWDER_CYAN 677 +#define IDS_ITEM_DYE_POWDER_SILVER 678 +#define IDS_ITEM_DYE_POWDER_GRAY 679 +#define IDS_ITEM_DYE_POWDER_PINK 680 +#define IDS_ITEM_DYE_POWDER_LIME 681 +#define IDS_ITEM_DYE_POWDER_YELLOW 682 +#define IDS_ITEM_DYE_POWDER_LIGHT_BLUE 683 +#define IDS_ITEM_DYE_POWDER_MAGENTA 684 +#define IDS_ITEM_DYE_POWDER_ORANGE 685 +#define IDS_ITEM_DYE_POWDER_WHITE 686 +#define IDS_ITEM_BONE 687 +#define IDS_ITEM_SUGAR 688 +#define IDS_ITEM_CAKE 689 +#define IDS_ITEM_BED 690 +#define IDS_ITEM_DIODE 691 +#define IDS_ITEM_COOKIE 692 +#define IDS_ITEM_MAP 693 +#define IDS_ITEM_MAP_EMPTY 694 +#define IDS_ITEM_RECORD_01 695 +#define IDS_ITEM_RECORD_02 696 +#define IDS_ITEM_RECORD_03 697 +#define IDS_ITEM_RECORD_04 698 +#define IDS_ITEM_RECORD_05 699 +#define IDS_ITEM_RECORD_06 700 +#define IDS_ITEM_RECORD_07 701 +#define IDS_ITEM_RECORD_08 702 +#define IDS_ITEM_RECORD_09 703 +#define IDS_ITEM_RECORD_10 704 +#define IDS_ITEM_RECORD_11 705 +#define IDS_ITEM_RECORD_12 706 +#define IDS_ITEM_SHEARS 707 +#define IDS_ITEM_PUMPKIN_SEEDS 708 +#define IDS_ITEM_MELON_SEEDS 709 +#define IDS_ITEM_CHICKEN_RAW 710 +#define IDS_ITEM_CHICKEN_COOKED 711 +#define IDS_ITEM_BEEF_RAW 712 +#define IDS_ITEM_BEEF_COOKED 713 +#define IDS_ITEM_ROTTEN_FLESH 714 +#define IDS_ITEM_ENDER_PEARL 715 +#define IDS_ITEM_MELON_SLICE 716 +#define IDS_ITEM_BLAZE_ROD 717 +#define IDS_ITEM_GHAST_TEAR 718 +#define IDS_ITEM_GOLD_NUGGET 719 +#define IDS_ITEM_NETHER_STALK_SEEDS 720 +#define IDS_ITEM_POTION 721 +#define IDS_ITEM_GLASS_BOTTLE 722 +#define IDS_ITEM_WATER_BOTTLE 723 +#define IDS_ITEM_SPIDER_EYE 724 +#define IDS_ITEM_FERMENTED_SPIDER_EYE 725 +#define IDS_ITEM_BLAZE_POWDER 726 +#define IDS_ITEM_MAGMA_CREAM 727 +#define IDS_ITEM_BREWING_STAND 728 +#define IDS_ITEM_CAULDRON 729 +#define IDS_ITEM_EYE_OF_ENDER 730 +#define IDS_ITEM_SPECKLED_MELON 731 +#define IDS_ITEM_EXP_BOTTLE 732 +#define IDS_ITEM_FIREBALL 733 +#define IDS_ITEM_FIREBALLCHARCOAL 734 +#define IDS_ITEM_FIREBALLCOAL 735 +#define IDS_ITEM_ITEMFRAME 736 +#define IDS_ITEM_MONSTER_SPAWNER 737 +#define IDS_ITEM_NETHERBRICK 738 +#define IDS_ITEM_SKULL 739 +#define IDS_ITEM_SKULL_SKELETON 740 +#define IDS_ITEM_SKULL_WITHER 741 +#define IDS_ITEM_SKULL_ZOMBIE 742 +#define IDS_ITEM_SKULL_CHARACTER 743 +#define IDS_ITEM_SKULL_PLAYER 744 +#define IDS_ITEM_SKULL_CREEPER 745 +#define IDS_NETHER_STAR 746 +#define IDS_FIREWORKS 747 +#define IDS_FIREWORKS_CHARGE 748 +#define IDS_ITEM_COMPARATOR 749 +#define IDS_ITEM_MINECART_TNT 750 +#define IDS_ITEM_MINECART_HOPPER 751 +#define IDS_ITEM_IRON_HORSE_ARMOR 752 +#define IDS_ITEM_GOLD_HORSE_ARMOR 753 +#define IDS_ITEM_DIAMOND_HORSE_ARMOR 754 +#define IDS_ITEM_LEAD 755 +#define IDS_ITEM_NAME_TAG 756 +#define IDS_TILE_STONE 757 +#define IDS_TILE_GRASS 758 +#define IDS_TILE_DIRT 759 +#define IDS_TILE_STONE_BRICK 760 +#define IDS_TILE_OAKWOOD_PLANKS 761 +#define IDS_TILE_SPRUCEWOOD_PLANKS 762 +#define IDS_TILE_BIRCHWOOD_PLANKS 763 +#define IDS_TILE_JUNGLE_PLANKS 764 +#define IDS_TILE_ACACIA_PLANKS 765 +#define IDS_TILE_DARK_OAK_PLANKS 766 +#define IDS_TILE_PLANKS 767 +#define IDS_TILE_SAPLING 768 +#define IDS_TILE_SAPLING_OAK 769 +#define IDS_TILE_SAPLING_SPRUCE 770 +#define IDS_TILE_SAPLING_BIRCH 771 +#define IDS_TILE_SAPLING_JUNGLE 772 +#define IDS_TILE_BEDROCK 773 +#define IDS_TILE_WATER 774 +#define IDS_TILE_LAVA 775 +#define IDS_TILE_SAND 776 +#define IDS_TILE_SANDSTONE 777 +#define IDS_TILE_GRAVEL 778 +#define IDS_TILE_ORE_GOLD 779 +#define IDS_TILE_ORE_IRON 780 +#define IDS_TILE_ORE_COAL 781 +#define IDS_TILE_LOG 782 +#define IDS_TILE_LOG_OAK 783 +#define IDS_TILE_LOG_SPRUCE 784 +#define IDS_TILE_LOG_BIRCH 785 +#define IDS_TILE_LOG_JUNGLE 786 +#define IDS_TILE_LOG_ACACIA 787 +#define IDS_TILE_LOG_DARK_OAK 788 +#define IDS_TILE_OAK 789 +#define IDS_TILE_SPRUCE 790 +#define IDS_TILE_BIRCH 791 +#define IDS_TILE_LEAVES 792 +#define IDS_TILE_LEAVES_OAK 793 +#define IDS_TILE_LEAVES_SPRUCE 794 +#define IDS_TILE_LEAVES_BIRCH 795 +#define IDS_TILE_LEAVES_JUNGLE 796 +#define IDS_TILE_LEAVES_ACACIA 797 +#define IDS_TILE_LEAVES_DARK_OAK 798 +#define IDS_TILE_SPONGE 799 +#define IDS_TILE_GLASS 800 +#define IDS_TILE_CLOTH 801 +#define IDS_TILE_CLOTH_BLACK 802 +#define IDS_TILE_CLOTH_RED 803 +#define IDS_TILE_CLOTH_GREEN 804 +#define IDS_TILE_CLOTH_BROWN 805 +#define IDS_TILE_CLOTH_BLUE 806 +#define IDS_TILE_CLOTH_PURPLE 807 +#define IDS_TILE_CLOTH_CYAN 808 +#define IDS_TILE_CLOTH_SILVER 809 +#define IDS_TILE_CLOTH_GRAY 810 +#define IDS_TILE_CLOTH_PINK 811 +#define IDS_TILE_CLOTH_LIME 812 +#define IDS_TILE_CLOTH_YELLOW 813 +#define IDS_TILE_CLOTH_LIGHT_BLUE 814 +#define IDS_TILE_CLOTH_MAGENTA 815 +#define IDS_TILE_CLOTH_ORANGE 816 +#define IDS_TILE_CLOTH_WHITE 817 +#define IDS_TILE_FLOWER 818 +#define IDS_TILE_ROSE 819 +#define IDS_TILE_MUSHROOM 820 +#define IDS_TILE_BLOCK_GOLD 821 +#define IDS_DESC_BLOCK_GOLD 822 +#define IDS_DESC_BLOCK_IRON 823 +#define IDS_TILE_BLOCK_IRON 824 +#define IDS_TILE_STONESLAB 825 +#define IDS_TILE_STONESLAB_STONE 826 +#define IDS_TILE_STONESLAB_SAND 827 +#define IDS_TILE_STONESLAB_WOOD 828 +#define IDS_TILE_STONESLAB_COBBLE 829 +#define IDS_TILE_STONESLAB_BRICK 830 +#define IDS_TILE_STONESLAB_SMOOTHBRICK 831 +#define IDS_TILE_STONESLAB_OAK 832 +#define IDS_TILE_STONESLAB_SPRUCE 833 +#define IDS_TILE_STONESLAB_BIRCH 834 +#define IDS_TILE_STONESLAB_JUNGLE 835 +#define IDS_TILE_STONESLAB_NETHERBRICK 836 +#define IDS_TILE_BRICK 837 +#define IDS_TILE_TNT 838 +#define IDS_TILE_BOOKSHELF 839 +#define IDS_TILE_STONE_MOSS 840 +#define IDS_TILE_OBSIDIAN 841 +#define IDS_TILE_TORCH 842 +#define IDS_TILE_TORCHCOAL 843 +#define IDS_TILE_TORCHCHARCOAL 844 +#define IDS_TILE_FIRE 845 +#define IDS_TILE_MOB_SPAWNER 846 +#define IDS_TILE_STAIRS_WOOD 847 +#define IDS_TILE_CHEST 848 +#define IDS_TILE_REDSTONE_DUST 849 +#define IDS_TILE_ORE_DIAMOND 850 +#define IDS_TILE_BLOCK_DIAMOND 851 +#define IDS_DESC_BLOCK_DIAMOND 852 +#define IDS_TILE_WORKBENCH 853 +#define IDS_TILE_CROPS 854 +#define IDS_TILE_FARMLAND 855 +#define IDS_TILE_FURNACE 856 +#define IDS_TILE_SIGN 857 +#define IDS_TILE_DOOR_WOOD 858 +#define IDS_TILE_DOOR_SPRUCE 859 +#define IDS_TILE_DOOR_BIRCH 860 +#define IDS_TILE_DOOR_JUNGLE 861 +#define IDS_TILE_DOOR_ACACIA 862 +#define IDS_TILE_DOOR_DARK_OAK 863 +#define IDS_TILE_LADDER 864 +#define IDS_TILE_RAIL 865 +#define IDS_TILE_GOLDEN_RAIL 866 +#define IDS_TILE_DETECTOR_RAIL 867 +#define IDS_TILE_STAIRS_STONE 868 +#define IDS_TILE_LEVER 869 +#define IDS_TILE_PRESSURE_PLATE 870 +#define IDS_TILE_DOOR_IRON 871 +#define IDS_TILE_ORE_REDSTONE 872 +#define IDS_TILE_NOT_GATE 873 +#define IDS_TILE_BUTTON 874 +#define IDS_TILE_SNOW 875 +#define IDS_TILE_ICE 876 +#define IDS_TILE_CACTUS 877 +#define IDS_TILE_CLAY 878 +#define IDS_TILE_REEDS 879 +#define IDS_TILE_JUKEBOX 880 +#define IDS_TILE_FENCE 881 +#define IDS_TILE_FENCE_SPRUCE 882 +#define IDS_TILE_FENCE_BIRCH 883 +#define IDS_TILE_FENCE_JUNGLE 884 +#define IDS_TILE_FENCE_ACACIA 885 +#define IDS_TILE_FENCE_DARK_OAK 886 +#define IDS_TILE_PUMPKIN 887 +#define IDS_TILE_LIT_PUMPKIN 888 +#define IDS_TILE_HELL_ROCK 889 +#define IDS_TILE_HELL_SAND 890 +#define IDS_TILE_LIGHT_GEM 891 +#define IDS_TILE_PORTAL 892 +#define IDS_TILE_ORE_LAPIS 893 +#define IDS_TILE_BLOCK_LAPIS 894 +#define IDS_DESC_BLOCK_LAPIS 895 +#define IDS_TILE_DISPENSER 896 +#define IDS_TILE_MUSIC_BLOCK 897 +#define IDS_TILE_CAKE 898 +#define IDS_TILE_BED 899 +#define IDS_TILE_WEB 900 +#define IDS_TILE_TALL_GRASS 901 +#define IDS_TILE_DEAD_BUSH 902 +#define IDS_TILE_DIODE 903 +#define IDS_TILE_LOCKED_CHEST 904 +#define IDS_TILE_TRAPDOOR 905 +#define IDS_TILE_TRAPDOOR_IRON 906 +#define IDS_ANY_WOOL 907 +#define IDS_TILE_PISTON_BASE 908 +#define IDS_TILE_PISTON_STICK_BASE 909 +#define IDS_TILE_MONSTER_STONE_EGG 910 +#define IDS_TILE_STONE_BRICK_SMOOTH 911 +#define IDS_TILE_STONE_BRICK_SMOOTH_MOSSY 912 +#define IDS_TILE_STONE_BRICK_SMOOTH_CRACKED 913 +#define IDS_TILE_STONE_BRICK_SMOOTH_CHISELED 914 +#define IDS_TILE_HUGE_MUSHROOM_1 915 +#define IDS_TILE_HUGE_MUSHROOM_2 916 +#define IDS_TILE_IRON_FENCE 917 +#define IDS_TILE_THIN_GLASS 918 +#define IDS_TILE_MELON 919 +#define IDS_TILE_PUMPKIN_STEM 920 +#define IDS_TILE_MELON_STEM 921 +#define IDS_TILE_VINE 922 +#define IDS_TILE_FENCE_GATE 923 +#define IDS_TILE_FENCE_GATE_SPRUCE 924 +#define IDS_TILE_FENCE_GATE_BIRCH 925 +#define IDS_TILE_FENCE_GATE_JUNGLE 926 +#define IDS_TILE_FENCE_GATE_ACACIA 927 +#define IDS_TILE_FENCE_GATE_DARK_OAK 928 +#define IDS_TILE_STAIRS_BRICKS 929 +#define IDS_TILE_STAIRS_STONE_BRICKS_SMOOTH 930 +#define IDS_TILE_STONE_SILVERFISH 931 +#define IDS_TILE_STONE_SILVERFISH_COBBLESTONE 932 +#define IDS_TILE_STONE_SILVERFISH_STONE_BRICK 933 +#define IDS_TILE_MYCEL 934 +#define IDS_TILE_WATERLILY 935 +#define IDS_TILE_NETHERBRICK 936 +#define IDS_TILE_NETHERFENCE 937 +#define IDS_TILE_STAIRS_NETHERBRICK 938 +#define IDS_TILE_NETHERSTALK 939 +#define IDS_TILE_ENCHANTMENTTABLE 940 +#define IDS_TILE_BREWINGSTAND 941 +#define IDS_TILE_CAULDRON 942 +#define IDS_TILE_END_PORTAL 943 +#define IDS_TILE_ENDPORTALFRAME 944 +#define IDS_TILE_WHITESTONE 945 +#define IDS_TILE_DRAGONEGG 946 +#define IDS_TILE_SHRUB 947 +#define IDS_TILE_FERN 948 +#define IDS_TILE_STAIRS_SANDSTONE 949 +#define IDS_TILE_STAIRS_SPRUCEWOOD 950 +#define IDS_TILE_STAIRS_BIRCHWOOD 951 +#define IDS_TILE_STAIRS_JUNGLEWOOD 952 +#define IDS_TILE_STAIRS_ACACIA_WOOD 953 +#define IDS_TILE_STAIRS_DARK_OAK_WOOD 954 +#define IDS_TILE_REDSTONE_LIGHT 955 +#define IDS_TILE_COCOA 956 +#define IDS_TILE_SKULL 957 +#define IDS_TILE_COMMAND_BLOCK 958 +#define IDS_TILE_BEACON 959 +#define IDS_TILE_CHEST_TRAP 960 +#define IDS_TILE_WEIGHTED_PLATE_LIGHT 961 +#define IDS_TILE_WEIGHTED_PLATE_HEAVY 962 +#define IDS_TILE_COMPARATOR 963 +#define IDS_TILE_DAYLIGHT_DETECTOR 964 +#define IDS_TILE_REDSTONE_BLOCK 965 +#define IDS_TILE_HOPPER 966 +#define IDS_TILE_ACTIVATOR_RAIL 967 +#define IDS_TILE_DROPPER 968 +#define IDS_TILE_STAINED_CLAY 969 +#define IDS_TILE_HAY 970 +#define IDS_TILE_HARDENED_CLAY 971 +#define IDS_TILE_COAL 972 +#define IDS_TILE_STAINED_CLAY_BLACK 973 +#define IDS_TILE_STAINED_CLAY_RED 974 +#define IDS_TILE_STAINED_CLAY_GREEN 975 +#define IDS_TILE_STAINED_CLAY_BROWN 976 +#define IDS_TILE_STAINED_CLAY_BLUE 977 +#define IDS_TILE_STAINED_CLAY_PURPLE 978 +#define IDS_TILE_STAINED_CLAY_CYAN 979 +#define IDS_TILE_STAINED_CLAY_SILVER 980 +#define IDS_TILE_STAINED_CLAY_GRAY 981 +#define IDS_TILE_STAINED_CLAY_PINK 982 +#define IDS_TILE_STAINED_CLAY_LIME 983 +#define IDS_TILE_STAINED_CLAY_YELLOW 984 +#define IDS_TILE_STAINED_CLAY_LIGHT_BLUE 985 +#define IDS_TILE_STAINED_CLAY_MAGENTA 986 +#define IDS_TILE_STAINED_CLAY_ORANGE 987 +#define IDS_TILE_STAINED_CLAY_WHITE 988 +#define IDS_TILE_STAINED_GLASS 989 +#define IDS_TILE_STAINED_GLASS_BLACK 990 +#define IDS_TILE_STAINED_GLASS_RED 991 +#define IDS_TILE_STAINED_GLASS_GREEN 992 +#define IDS_TILE_STAINED_GLASS_BROWN 993 +#define IDS_TILE_STAINED_GLASS_BLUE 994 +#define IDS_TILE_STAINED_GLASS_PURPLE 995 +#define IDS_TILE_STAINED_GLASS_CYAN 996 +#define IDS_TILE_STAINED_GLASS_SILVER 997 +#define IDS_TILE_STAINED_GLASS_GRAY 998 +#define IDS_TILE_STAINED_GLASS_PINK 999 +#define IDS_TILE_STAINED_GLASS_LIME 1000 +#define IDS_TILE_STAINED_GLASS_YELLOW 1001 +#define IDS_TILE_STAINED_GLASS_LIGHT_BLUE 1002 +#define IDS_TILE_STAINED_GLASS_MAGENTA 1003 +#define IDS_TILE_STAINED_GLASS_ORANGE 1004 +#define IDS_TILE_STAINED_GLASS_WHITE 1005 +#define IDS_TILE_STAINED_GLASS_PANE 1006 +#define IDS_TILE_STAINED_GLASS_PANE_BLACK 1007 +#define IDS_TILE_STAINED_GLASS_PANE_RED 1008 +#define IDS_TILE_STAINED_GLASS_PANE_GREEN 1009 +#define IDS_TILE_STAINED_GLASS_PANE_BROWN 1010 +#define IDS_TILE_STAINED_GLASS_PANE_BLUE 1011 +#define IDS_TILE_STAINED_GLASS_PANE_PURPLE 1012 +#define IDS_TILE_STAINED_GLASS_PANE_CYAN 1013 +#define IDS_TILE_STAINED_GLASS_PANE_SILVER 1014 +#define IDS_TILE_STAINED_GLASS_PANE_GRAY 1015 +#define IDS_TILE_STAINED_GLASS_PANE_PINK 1016 +#define IDS_TILE_STAINED_GLASS_PANE_LIME 1017 +#define IDS_TILE_STAINED_GLASS_PANE_YELLOW 1018 +#define IDS_TILE_STAINED_GLASS_PANE_LIGHT_BLUE 1019 +#define IDS_TILE_STAINED_GLASS_PANE_MAGENTA 1020 +#define IDS_TILE_STAINED_GLASS_PANE_ORANGE 1021 +#define IDS_TILE_STAINED_GLASS_PANE_WHITE 1022 +#define IDS_FIREWORKS_CHARGE_TYPE_0 1023 +#define IDS_FIREWORKS_CHARGE_TYPE_1 1024 +#define IDS_FIREWORKS_CHARGE_TYPE_2 1025 +#define IDS_FIREWORKS_CHARGE_TYPE_3 1026 +#define IDS_FIREWORKS_CHARGE_TYPE_4 1027 +#define IDS_FIREWORKS_CHARGE_TYPE 1028 +#define IDS_FIREWORKS_CHARGE_BLACK 1029 +#define IDS_FIREWORKS_CHARGE_RED 1030 +#define IDS_FIREWORKS_CHARGE_GREEN 1031 +#define IDS_FIREWORKS_CHARGE_BROWN 1032 +#define IDS_FIREWORKS_CHARGE_BLUE 1033 +#define IDS_FIREWORKS_CHARGE_PURPLE 1034 +#define IDS_FIREWORKS_CHARGE_CYAN 1035 +#define IDS_FIREWORKS_CHARGE_SILVER 1036 +#define IDS_FIREWORKS_CHARGE_GRAY 1037 +#define IDS_FIREWORKS_CHARGE_PINK 1038 +#define IDS_FIREWORKS_CHARGE_LIME 1039 +#define IDS_FIREWORKS_CHARGE_YELLOW 1040 +#define IDS_FIREWORKS_CHARGE_LIGHT_BLUE 1041 +#define IDS_FIREWORKS_CHARGE_MAGENTA 1042 +#define IDS_FIREWORKS_CHARGE_ORANGE 1043 +#define IDS_FIREWORKS_CHARGE_WHITE 1044 +#define IDS_FIREWORKS_CHARGE_CUSTOM 1045 +#define IDS_FIREWORKS_CHARGE_FADE_TO 1046 +#define IDS_FIREWORKS_CHARGE_FLICKER 1047 +#define IDS_FIREWORKS_CHARGE_TRAIL 1048 +#define IDS_ITEM_FIREWORKS_FLIGHT 1049 +#define IDS_CURRENT_LAYOUT 1050 +#define IDS_CONTROLS_LAYOUT 1051 +#define IDS_CONTROLS_MOVE 1052 +#define IDS_CONTROLS_LOOK 1053 +#define IDS_CONTROLS_PAUSE 1054 +#define IDS_CONTROLS_JUMP 1055 +#define IDS_CONTROLS_JUMPFLY 1056 +#define IDS_CONTROLS_INVENTORY 1057 +#define IDS_CONTROLS_HELDITEM 1058 +#define IDS_CONTROLS_ACTION 1059 +#define IDS_CONTROLS_USE 1060 +#define IDS_CONTROLS_CRAFTING 1061 +#define IDS_CONTROLS_DROP 1062 +#define IDS_CONTROLS_SNEAK 1063 +#define IDS_CONTROLS_SNEAKFLY 1064 +#define IDS_CONTROLS_THIRDPERSON 1065 +#define IDS_CONTROLS_PLAYERS 1066 +#define IDS_CONTROLS_DPAD 1067 +#define IDS_CONTROLS_SCHEME0 1068 +#define IDS_CONTROLS_SCHEME1 1069 +#define IDS_CONTROLS_SCHEME2 1070 +#define IDS_CONTROLLER_A 1071 +#define IDS_CONTROLLER_B 1072 +#define IDS_CONTROLLER_X 1073 +#define IDS_CONTROLLER_Y 1074 +#define IDS_CONTROLLER_LEFT_STICK 1075 +#define IDS_CONTROLLER_RIGHT_STICK 1076 +#define IDS_CONTROLLER_LEFT_TRIGGER 1077 +#define IDS_CONTROLLER_RIGHT_TRIGGER 1078 +#define IDS_CONTROLLER_LEFT_BUMPER 1079 +#define IDS_CONTROLLER_RIGHT_BUMPER 1080 +#define IDS_CONTROLLER_BACK 1081 +#define IDS_CONTROLLER_START 1082 +#define IDS_CONTROLLER_RIGHT_THUMBSTICK 1083 +#define IDS_CONTROLLER_LEFT_THUMBSTICK 1084 +#define IDS_CONTROLLER_DPAD_R 1085 +#define IDS_CONTROLLER_DPAD_L 1086 +#define IDS_CONTROLLER_DPAD_U 1087 +#define IDS_CONTROLLER_DPAD_D 1088 +#define IDS_ICON_SHANK_01 1089 +#define IDS_ICON_SHANK_03 1090 +#define IDS_TUTORIAL_PROMPT_PRESS_A_TO_CONTINUE 1091 +#define IDS_TUTORIAL_PROMPT_START_TUTORIAL 1092 +#define IDS_TUTORIAL_TASK_OVERVIEW 1093 +#define IDS_TUTORIAL_TASK_LOOK 1094 +#define IDS_TUTORIAL_TASK_MOVE 1095 +#define IDS_TUTORIAL_TASK_SPRINT 1096 +#define IDS_TUTORIAL_TASK_JUMP 1097 +#define IDS_TUTORIAL_TASK_MINE 1098 +#define IDS_TUTORIAL_TASK_CHOP_WOOD 1099 +#define IDS_TUTORIAL_TASK_CRAFTING 1100 +#define IDS_TUTORIAL_TASK_INVENTORY 1101 +#define IDS_TUTORIAL_TASK_FOOD_BAR_DEPLETE 1102 +#define IDS_TUTORIAL_TASK_FOOD_BAR_HEAL 1103 +#define IDS_TUTORIAL_TASK_FOOD_BAR_FEED 1104 +#define IDS_TUTORIAL_TASK_FOOD_BAR_EAT_STEAK 1105 +#define IDS_TUTORIAL_TASK_CREATE_PLANKS 1106 +#define IDS_TUTORIAL_TASK_CREATE_CRAFTING_TABLE 1107 +#define IDS_TUTORIAL_TASK_CREATE_STICKS 1108 +#define IDS_TUTORIAL_TASK_SCROLL 1109 +#define IDS_TUTORIAL_TASK_USE 1110 +#define IDS_TUTORIAL_TASK_PLACE_WORKBENCH 1111 +#define IDS_TUTORIAL_TASK_OPEN_WORKBENCH 1112 +#define IDS_TUTORIAL_TASK_CREATE_WOODEN_SHOVEL 1113 +#define IDS_TUTORIAL_TASK_CREATE_WOODEN_HATCHET 1114 +#define IDS_TUTORIAL_TASK_CREATE_WOODEN_PICKAXE 1115 +#define IDS_TUTORIAL_TASK_OPEN_CONTAINER 1116 +#define IDS_TUTORIAL_TASK_NIGHT_DANGER 1117 +#define IDS_TUTORIAL_TASK_NEARBY_SHELTER 1118 +#define IDS_TUTORIAL_TASK_COLLECT_RESOURCES 1119 +#define IDS_TUTORIAL_TASK_MINE_STONE 1120 +#define IDS_TUTORIAL_TASK_CREATE_FURNACE 1121 +#define IDS_TUTORIAL_TASK_PLACE_AND_OPEN_FURNACE 1122 +#define IDS_TUTORIAL_TASK_CREATE_CHARCOAL 1123 +#define IDS_TUTORIAL_TASK_CREATE_GLASS 1124 +#define IDS_TUTORIAL_TASK_CREATE_WOODEN_DOOR 1125 +#define IDS_TUTORIAL_TASK_PLACE_DOOR 1126 +#define IDS_TUTORIAL_TASK_CREATE_TORCH 1127 +#define IDS_TUTORIAL_TASK_BASIC_COMPLETE 1128 +#define IDS_TUTORIAL_PROMPT_BASIC_COMPLETE 1129 +#define IDS_TUTORIAL_TASK_INV_OVERVIEW 1130 +#define IDS_TUTORIAL_PROMPT_INV_OVERVIEW 1131 +#define IDS_TUTORIAL_TASK_INV_PICK_UP 1132 +#define IDS_TUTORIAL_TASK_INV_MOVE 1133 +#define IDS_TUTORIAL_TASK_INV_DROP 1134 +#define IDS_TUTORIAL_TASK_INV_INFO 1135 +#define IDS_TUTORIAL_TASK_INV_EXIT 1136 +#define IDS_TUTORIAL_TASK_CREATIVE_INV_OVERVIEW 1137 +#define IDS_TUTORIAL_PROMPT_CREATIVE_INV_OVERVIEW 1138 +#define IDS_TUTORIAL_TASK_CREATIVE_INV_PICK_UP 1139 +#define IDS_TUTORIAL_TASK_CREATIVE_INV_MOVE 1140 +#define IDS_TUTORIAL_TASK_CREATIVE_INV_DROP 1141 +#define IDS_TUTORIAL_TASK_CREATIVE_INV_NAV 1142 +#define IDS_TUTORIAL_TASK_CREATIVE_INV_INFO 1143 +#define IDS_TUTORIAL_TASK_CREATIVE_INV_EXIT 1144 +#define IDS_TUTORIAL_TASK_CRAFT_OVERVIEW 1145 +#define IDS_TUTORIAL_PROMPT_CRAFT_OVERVIEW 1146 +#define IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_DESCRIPTION 1147 +#define IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_INGREDIENTS 1148 +#define IDS_TUTORIAL_PROMPT_PRESS_X_TO_TOGGLE_INVENTORY 1149 +#define IDS_TUTORIAL_TASK_CRAFT_NAV 1150 +#define IDS_TUTORIAL_TASK_CRAFT_CREATE 1151 +#define IDS_TUTORIAL_TASK_CRAFT_CRAFT_TABLE 1152 +#define IDS_TUTORIAL_TASK_CRAFT_INVENTORY 1153 +#define IDS_TUTORIAL_TASK_CRAFT_DESCRIPTION 1154 +#define IDS_TUTORIAL_TASK_CRAFT_INGREDIENTS 1155 +#define IDS_TUTORIAL_TASK_CRAFT_CREATE_PLANKS 1156 +#define IDS_TUTORIAL_TASK_CRAFT_EXIT_AND_PLACE_TABLE 1157 +#define IDS_TUTORIAL_TASK_CRAFT_SELECT_TOOLS 1158 +#define IDS_TUTORIAL_TASK_CRAFT_SELECT_STRUCTURES 1159 +#define IDS_TUTORIAL_TASK_CRAFT_SELECT_WOODEN_SHOVEL 1160 +#define IDS_TUTORIAL_TASK_CRAFT_SELECT_CRAFTING_TABLE 1161 +#define IDS_TUTORIAL_TASK_CRAFT_TOOLS_BUILT 1162 +#define IDS_TUTORIAL_TASK_CRAFT_CREATE_FURNACE 1163 +#define IDS_TUTORIAL_TASK_CRAFT_EXIT_AND_PLACE_FURNACE 1164 +#define IDS_TUTORIAL_TASK_FURNACE_OVERVIEW 1165 +#define IDS_TUTORIAL_PROMPT_FURNACE_OVERVIEW 1166 +#define IDS_TUTORIAL_TASK_FURNACE_METHOD 1167 +#define IDS_TUTORIAL_TASK_FURNACE_FUELS 1168 +#define IDS_TUTORIAL_TASK_FURNACE_INGREDIENTS 1169 +#define IDS_TUTORIAL_TASK_FURNACE_CREATE_CHARCOAL 1170 +#define IDS_TUTORIAL_TASK_FURNACE_CHARCOAL_USES 1171 +#define IDS_TUTORIAL_TASK_FURNACE_CREATE_GLASS 1172 +#define IDS_TUTORIAL_TASK_BREWING_MENU_OVERVIEW 1173 +#define IDS_TUTORIAL_PROMPT_BREWING_MENU_OVERVIEW 1174 +#define IDS_TUTORIAL_TASK_BREWING_MENU_METHOD 1175 +#define IDS_TUTORIAL_TASK_BREWING_MENU_BASIC_INGREDIENTS 1176 +#define IDS_TUTORIAL_TASK_BREWING_MENU_EXTENDED_INGREDIENTS 1177 +#define IDS_TUTORIAL_TASK_BREWING_MENU_EXTENDED_INGREDIENTS_2 1178 +#define IDS_TUTORIAL_TASK_BREWING_MENU_CREATE_FIRE_POTION 1179 +#define IDS_TUTORIAL_TASK_BREWING_MENU_EXIT 1180 +#define IDS_TUTORIAL_TASK_BREWING_OVERVIEW 1181 +#define IDS_TUTORIAL_PROMPT_BREWING_OVERVIEW 1182 +#define IDS_TUTORIAL_TASK_BREWING_GET_GLASS_BOTTLE 1183 +#define IDS_TUTORIAL_TASK_BREWING_FILL_GLASS_BOTTLE 1184 +#define IDS_TUTORIAL_TASK_BREWING_FILL_CAULDRON 1185 +#define IDS_TUTORIAL_TASK_BREWING_CREATE_FIRE_POTION 1186 +#define IDS_TUTORIAL_TASK_BREWING_USE_POTION 1187 +#define IDS_TUTORIAL_TASK_BREWING_DRINK_FIRE_POTION 1188 +#define IDS_TUTORIAL_TASK_BREWING_USE_EFFECTS 1189 +#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_OVERVIEW 1190 +#define IDS_TUTORIAL_PROMPT_ENCHANTING_MENU_OVERVIEW 1191 +#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_START 1192 +#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_ENCHANTMENTS 1193 +#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_COST 1194 +#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_ENCHANT 1195 +#define IDS_TUTORIAL_TASK_ENCHANTING_MENU_BETTER_ENCHANTMENTS 1196 +#define IDS_TUTORIAL_TASK_ENCHANTING_OVERVIEW 1197 +#define IDS_TUTORIAL_PROMPT_ENCHANTING_OVERVIEW 1198 +#define IDS_TUTORIAL_TASK_ENCHANTING_SUMMARY 1199 +#define IDS_TUTORIAL_TASK_ENCHANTING_BOOKCASES 1200 +#define IDS_TUTORIAL_TASK_ENCHANTING_EXPERIENCE 1201 +#define IDS_TUTORIAL_TASK_ENCHANTING_BOTTLE_O_ENCHANTING 1202 +#define IDS_TUTORIAL_TASK_ENCHANTING_USE_CHESTS 1203 +#define IDS_TUTORIAL_TASK_MINECART_OVERVIEW 1204 +#define IDS_TUTORIAL_PROMPT_MINECART_OVERVIEW 1205 +#define IDS_TUTORIAL_TASK_MINECART_RAILS 1206 +#define IDS_TUTORIAL_TASK_MINECART_POWERED_RAILS 1207 +#define IDS_TUTORIAL_TASK_BOAT_OVERVIEW 1208 +#define IDS_TUTORIAL_PROMPT_BOAT_OVERVIEW 1209 +#define IDS_TUTORIAL_TASK_BOAT_STEER 1210 +#define IDS_TUTORIAL_TASK_FISHING_OVERVIEW 1211 +#define IDS_TUTORIAL_PROMPT_FISHING_OVERVIEW 1212 +#define IDS_TUTORIAL_TASK_FISHING_CAST 1213 +#define IDS_TUTORIAL_TASK_FISHING_FISH 1214 +#define IDS_TUTORIAL_TASK_FISHING_USES 1215 +#define IDS_TUTORIAL_TASK_BED_OVERVIEW 1216 +#define IDS_TUTORIAL_PROMPT_BED_OVERVIEW 1217 +#define IDS_TUTORIAL_TASK_BED_PLACEMENT 1218 +#define IDS_TUTORIAL_TASK_BED_MULTIPLAYER 1219 +#define IDS_TUTORIAL_REDSTONE_OVERVIEW 1220 +#define IDS_TUTORIAL_PROMPT_REDSTONE_OVERVIEW 1221 +#define IDS_TUTORIAL_TASK_REDSTONE_POWER_SOURCES 1222 +#define IDS_TUTORIAL_TASK_REDSTONE_POWER_SOURCES_POSITION 1223 +#define IDS_TUTORIAL_TASK_REDSTONE_DUST 1224 +#define IDS_TUTORIAL_TASK_REDSTONE_REPEATER 1225 +#define IDS_TUTORIAL_TASK_PISTONS 1226 +#define IDS_TUTORIAL_TASK_TRY_IT 1227 +#define IDS_TUTORIAL_PORTAL_OVERVIEW 1228 +#define IDS_TUTORIAL_PROMPT_PORTAL_OVERVIEW 1229 +#define IDS_TUTORIAL_TASK_BUILD_PORTAL 1230 +#define IDS_TUTORIAL_TASK_ACTIVATE_PORTAL 1231 +#define IDS_TUTORIAL_TASK_USE_PORTAL 1232 +#define IDS_TUTORIAL_TASK_NETHER 1233 +#define IDS_TUTORIAL_TASK_NETHER_FAST_TRAVEL 1234 +#define IDS_TUTORIAL_CREATIVE_OVERVIEW 1235 +#define IDS_TUTORIAL_PROMPT_CREATIVE_OVERVIEW 1236 +#define IDS_TUTORIAL_TASK_CREATIVE_MODE 1237 +#define IDS_TUTORIAL_TASK_OPEN_CREATIVE_INVENTORY 1238 +#define IDS_TUTORIAL_TASK_CREATIVE_EXIT 1239 +#define IDS_TUTORIAL_TASK_CREATIVE_COMPLETE 1240 +#define IDS_TUTORIAL_FARMING_OVERVIEW 1241 +#define IDS_TUTORIAL_PROMPT_FARMING_OVERVIEW 1242 +#define IDS_TUTORIAL_TASK_FARMING_SEEDS 1243 +#define IDS_TUTORIAL_TASK_FARMING_FARMLAND 1244 +#define IDS_TUTORIAL_TASK_FARMING_WHEAT 1245 +#define IDS_TUTORIAL_TASK_FARMING_PUMPKIN_AND_MELON 1246 +#define IDS_TUTORIAL_TASK_FARMING_SUGARCANE 1247 +#define IDS_TUTORIAL_TASK_FARMING_CACTUS 1248 +#define IDS_TUTORIAL_TASK_FARMING_MUSHROOM 1249 +#define IDS_TUTORIAL_TASK_FARMING_BONEMEAL 1250 +#define IDS_TUTORIAL_TASK_FARMING_COMPLETE 1251 +#define IDS_TUTORIAL_BREEDING_OVERVIEW 1252 +#define IDS_TUTORIAL_PROMPT_BREEDING_OVERVIEW 1253 +#define IDS_TUTORIAL_TASK_BREEDING_FEED 1254 +#define IDS_TUTORIAL_TASK_BREEDING_FEED_FOOD 1255 +#define IDS_TUTORIAL_TASK_BREEDING_BABY 1256 +#define IDS_TUTORIAL_TASK_BREEDING_DELAY 1257 +#define IDS_TUTORIAL_TASK_BREEDING_FOLLOW 1258 +#define IDS_TUTORIAL_TASK_BREEDING_WOLF_TAMING 1259 +#define IDS_TUTORIAL_TASK_BREEDING_COMPLETE 1260 +#define IDS_TUTORIAL_GOLEM_OVERVIEW 1261 +#define IDS_TUTORIAL_PROMPT_GOLEM_OVERVIEW 1262 +#define IDS_TUTORIAL_TASK_GOLEM_PUMPKIN 1263 +#define IDS_TUTORIAL_TASK_GOLEM_SNOW 1264 +#define IDS_TUTORIAL_TASK_GOLEM_IRON 1265 +#define IDS_TUTORIAL_TASK_GOLEM_IRON_VILLAGE 1266 +#define IDS_TUTORIAL_CONSTRAINT_TUTORIAL_AREA 1267 +#define IDS_TUTORIAL_HINT_DIGGER_ITEM_SHOVEL 1268 +#define IDS_TUTORIAL_HINT_DIGGER_ITEM_HATCHET 1269 +#define IDS_TUTORIAL_HINT_DIGGER_ITEM_PICKAXE 1270 +#define IDS_TUTORIAL_HINT_ATTACK_WITH_TOOL 1271 +#define IDS_TUTORIAL_HINT_HOLD_TO_MINE 1272 +#define IDS_TUTORIAL_HINT_TOOL_DAMAGED 1273 +#define IDS_TUTORIAL_HINT_SWIM_UP 1274 +#define IDS_TUTORIAL_HINT_MINECART 1275 +#define IDS_TUTORIAL_HINT_BOAT 1276 +#define IDS_TUTORIAL_HINT_FISHING 1277 +#define IDS_TUTORIAL_HINT_PISTON_SELF_REPAIRING_BRIDGE 1278 +#define IDS_TUTORIAL_HINT_INV_DROP 1279 +#define IDS_TUTORIAL_HINT_CRAFT_NO_INGREDIENTS 1280 +#define IDS_TUTORIAL_COMPLETED 1281 +#define IDS_TUTORIAL_COMPLETED_EXPLORE 1282 +#define IDS_TUTORIAL_REMINDER 1283 +#define IDS_TUTORIAL_HTML_EXIT_PICTURE 1284 +#define IDS_TUTORIAL_NEW_FEATURES_CHOICE 1285 +#define IDS_TUTORIAL_PROMPT_NEW_FEATURES_CHOICE 1286 +#define IDS_TUTORIAL_FEATURES_IN_THIS_AREA 1287 +#define IDS_TUTORIAL_FEATURES_OUTSIDE_THIS_AREA 1288 +#define IDS_TUTORIAL_TASK_FOOD_BAR_OVERVIEW 1289 +#define IDS_TUTORIAL_PROMPT_FOOD_BAR_OVERVIEW 1290 +#define IDS_TUTORIAL_TASK_HORSE_MENU_OVERVIEW 1291 +#define IDS_TUTORIAL_PROMPT_HORSE_MENU_OVERVIEW 1292 +#define IDS_TUTORIAL_TASK_HORSE_MENU_LAYOUT 1293 +#define IDS_TUTORIAL_TASK_HORSE_MENU_EQUIPMENT 1294 +#define IDS_TUTORIAL_TASK_HORSE_MENU_SADDLEBAGS 1295 +#define IDS_TUTORIAL_TASK_HORSE_OVERVIEW 1296 +#define IDS_TUTORIAL_TASK_DONKEY_OVERVIEW 1297 +#define IDS_TUTORIAL_TASK_MULE_OVERVIEW 1298 +#define IDS_TUTORIAL_PROMPT_HORSE_OVERVIEW 1299 +#define IDS_TUTORIAL_TASK_HORSE_INTRO 1300 +#define IDS_TUTORIAL_TASK_HORSE_PURPOSE 1301 +#define IDS_TUTORIAL_TASK_HORSE_TAMING 1302 +#define IDS_TUTORIAL_TASK_HORSE_TAMING2 1303 +#define IDS_TUTORIAL_TASK_HORSE_RIDE 1304 +#define IDS_TUTORIAL_TASK_HORSE_SADDLES 1305 +#define IDS_TUTORIAL_TASK_HORSE_SADDLEBAGS 1306 +#define IDS_TUTORIAL_TASK_HORSE_BREEDING 1307 +#define IDS_TUTORIAL_TASK_HORSE_AREA 1308 +#define IDS_TUTORIAL_TASK_BEACON_MENU_OVERVIEW 1309 +#define IDS_TUTORIAL_PROMPT_BEACON_MENU_OVERVIEW 1310 +#define IDS_TUTORIAL_TASK_BEACON_MENU_PRIMARY_POWERS 1311 +#define IDS_TUTORIAL_TASK_BEACON_MENU_SECONDARY_POWER 1312 +#define IDS_TUTORIAL_TASK_BEACON_MENU_ACTIVATION 1313 +#define IDS_TUTORIAL_TASK_BEACON_OVERVIEW 1314 +#define IDS_TUTORIAL_PROMPT_BEACON_OVERVIEW 1315 +#define IDS_TUTORIAL_TASK_BEACON_PURPOSE 1316 +#define IDS_TUTORIAL_TASK_BEACON_DESIGN 1317 +#define IDS_TUTORIAL_TASK_BEACON_CHOOSING_POWERS 1318 +#define IDS_TUTORIAL_TASK_HOPPER_OVERVIEW 1319 +#define IDS_TUTORIAL_PROMPT_HOPPER_OVERVIEW 1320 +#define IDS_TUTORIAL_TASK_HOPPER_PURPOSE 1321 +#define IDS_TUTORIAL_TASK_HOPPER_CONTAINERS 1322 +#define IDS_TUTORIAL_TASK_HOPPER_MECHANICS 1323 +#define IDS_TUTORIAL_TASK_HOPPER_REDSTONE 1324 +#define IDS_TUTORIAL_TASK_HOPPER_OUTPUT 1325 +#define IDS_TUTORIAL_TASK_HOPPER_AREA 1326 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_OVERVIEW 1327 +#define IDS_TUTORIAL_PROMPT_FIREWORK_MENU_OVERVIEW 1328 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_START 1329 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_STARS 1330 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_HEIGHT 1331 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_BASIC_CRAFT 1332 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_START 1333 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_COLOUR 1334 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_SHAPE 1335 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_EFFECT 1336 +#define IDS_TUTORIAL_TASK_FIREWORK_MENU_ADV_FADE 1337 +#define IDS_TUTORIAL_TASK_FIREWORK_OVERVIEW 1338 +#define IDS_TUTORIAL_PROMPT_FIREWORK_OVERVIEW 1339 +#define IDS_TUTORIAL_TASK_FIREWORK_PURPOSE 1340 +#define IDS_TUTORIAL_TASK_FIREWORK_CUSTOMISE 1341 +#define IDS_TUTORIAL_TASK_FIREWORK_CRAFTING 1342 +#define IDS_TOOLTIPS_SELECT 1343 +#define IDS_TOOLTIPS_USE 1344 +#define IDS_TOOLTIPS_BACK 1345 +#define IDS_TOOLTIPS_EXIT 1346 +#define IDS_TOOLTIPS_CANCEL 1347 +#define IDS_TOOLTIPS_CANCEL_JOIN 1348 +#define IDS_TOOLTIPS_REFRESH 1349 +#define IDS_TOOLTIPS_PARTY_GAMES 1350 +#define IDS_TOOLTIPS_ALL_GAMES 1351 +#define IDS_TOOLTIPS_CHANGE_GROUP 1352 +#define IDS_TOOLTIPS_SHOW_INVENTORY 1353 +#define IDS_TOOLTIPS_SHOW_DESCRIPTION 1354 +#define IDS_TOOLTIPS_SHOW_INGREDIENTS 1355 +#define IDS_TOOLTIPS_CRAFTING 1356 +#define IDS_TOOLTIPS_CREATE 1357 +#define IDS_TOOLTIPS_PICKUPPLACE 1358 +#define IDS_TOOLTIPS_PICKUP_GENERIC 1359 +#define IDS_TOOLTIPS_PICKUP_ALL 1360 +#define IDS_TOOLTIPS_PICKUP_HALF 1361 +#define IDS_TOOLTIPS_PLACE_GENERIC 1362 +#define IDS_TOOLTIPS_PLACE_ALL 1363 +#define IDS_TOOLTIPS_PLACE_ONE 1364 +#define IDS_TOOLTIPS_DROP_GENERIC 1365 +#define IDS_TOOLTIPS_DROP_ALL 1366 +#define IDS_TOOLTIPS_DROP_ONE 1367 +#define IDS_TOOLTIPS_SWAP 1368 +#define IDS_TOOLTIPS_QUICK_MOVE 1369 +#define IDS_TOOLTIPS_CLEAR_QUICK_SELECT 1370 +#define IDS_TOOLTIPS_WHAT_IS_THIS 1371 +#define IDS_TOOLTIPS_SHARE 1372 +#define IDS_TOOLTIPS_CHANGE_FILTER 1373 +#define IDS_TOOLTIPS_SEND_FRIEND_REQUEST 1374 +#define IDS_TOOLTIPS_PAGE_DOWN 1375 +#define IDS_TOOLTIPS_PAGE_UP 1376 +#define IDS_TOOLTIPS_NEXT 1377 +#define IDS_TOOLTIPS_PREVIOUS 1378 +#define IDS_TOOLTIPS_KICK 1379 +#define IDS_TOOLTIPS_DYE 1380 +#define IDS_TOOLTIPS_MINE 1381 +#define IDS_TOOLTIPS_FEED 1382 +#define IDS_TOOLTIPS_TAME 1383 +#define IDS_TOOLTIPS_HEAL 1384 +#define IDS_TOOLTIPS_SIT 1385 +#define IDS_TOOLTIPS_FOLLOWME 1386 +#define IDS_TOOLTIPS_EJECT 1387 +#define IDS_TOOLTIPS_EMPTY 1388 +#define IDS_TOOLTIPS_SADDLE 1389 +#define IDS_TOOLTIPS_PLACE 1390 +#define IDS_TOOLTIPS_HIT 1391 +#define IDS_TOOLTIPS_MILK 1392 +#define IDS_TOOLTIPS_COLLECT 1393 +#define IDS_TOOLTIPS_EAT 1394 +#define IDS_TOOLTIPS_SLEEP 1395 +#define IDS_TOOLTIPS_WAKEUP 1396 +#define IDS_TOOLTIPS_PLAY 1397 +#define IDS_TOOLTIPS_RIDE 1398 +#define IDS_TOOLTIPS_SAIL 1399 +#define IDS_TOOLTIPS_GROW 1400 +#define IDS_TOOLTIPS_SWIMUP 1401 +#define IDS_TOOLTIPS_OPEN 1402 +#define IDS_TOOLTIPS_CHANGEPITCH 1403 +#define IDS_TOOLTIPS_DETONATE 1404 +#define IDS_TOOLTIPS_READ 1405 +#define IDS_TOOLTIPS_HANG 1406 +#define IDS_TOOLTIPS_THROW 1407 +#define IDS_TOOLTIPS_PLANT 1408 +#define IDS_TOOLTIPS_TILL 1409 +#define IDS_TOOLTIPS_HARVEST 1410 +#define IDS_TOOLTIPS_CONTINUE 1411 +#define IDS_TOOLTIPS_DELETESAVE 1412 +#define IDS_TOOLTIPS_DELETE 1413 +#define IDS_TOOLTIPS_OPTIONS 1414 +#define IDS_TOOLTIPS_INVITE_FRIENDS 1415 +#define IDS_TOOLTIPS_ACCEPT 1416 +#define IDS_TOOLTIPS_SHEAR 1417 +#define IDS_TOOLTIPS_BANLEVEL 1418 +#define IDS_TOOLTIPS_SELECT_SKIN 1419 +#define IDS_TOOLTIPS_IGNITE 1420 +#define IDS_TOOLTIPS_NAVIGATE 1421 +#define IDS_TOOLTIPS_INSTALL 1422 +#define IDS_TOOLTIPS_REINSTALL 1423 +#define IDS_TOOLTIPS_SAVEOPTIONS 1424 +#define IDS_TOOLTIPS_EXECUTE_COMMAND 1425 +#define IDS_TOOLTIPS_CREATIVE 1426 +#define IDS_TOOLTIPS_QUICK_MOVE_INGREDIENT 1427 +#define IDS_TOOLTIPS_QUICK_MOVE_FUEL 1428 +#define IDS_TOOLTIPS_QUICK_MOVE_TOOL 1429 +#define IDS_TOOLTIPS_QUICK_MOVE_ARMOR 1430 +#define IDS_TOOLTIPS_QUICK_MOVE_WEAPON 1431 +#define IDS_TOOLTIPS_EQUIP 1432 +#define IDS_TOOLTIPS_DRAW_BOW 1433 +#define IDS_TOOLTIPS_RELEASE_BOW 1434 +#define IDS_TOOLTIPS_PRIVILEGES 1435 +#define IDS_TOOLTIPS_BLOCK 1436 +#define IDS_TOOLTIPS_PAGEUP 1437 +#define IDS_TOOLTIPS_PAGEDOWN 1438 +#define IDS_TOOLTIPS_LOVEMODE 1439 +#define IDS_TOOLTIPS_DRINK 1440 +#define IDS_TOOLTIPS_ROTATE 1441 +#define IDS_TOOLTIPS_CLEARSLOTS 1442 +#define IDS_TOOLTIPS_MOUNT 1443 +#define IDS_TOOLTIPS_DISMOUNT 1444 +#define IDS_TOOLTIPS_SADDLEBAGS 1445 +#define IDS_TOOLTIPS_FIREWORK_LAUNCH 1446 +#define IDS_TOOLTIPS_LEASH 1447 +#define IDS_TOOLTIPS_UNLEASH 1448 +#define IDS_TOOLTIPS_ATTACH 1449 +#define IDS_TOOLTIPS_NAME 1450 +#define IDS_CONFIRM_OK 1451 +#define IDS_CONFIRM_CANCEL 1452 +#define IDS_DOWNLOADABLECONTENT 1453 +#define IDS_CONFIRM_LEAVE_VIA_INVITE 1454 +#define IDS_EXIT_GAME 1455 +#define IDS_TITLE_SAVE_GAME 1456 +#define IDS_TITLE_DECLINE_SAVE_GAME 1457 +#define IDS_CONFIRM_SAVE_GAME 1458 +#define IDS_CONFIRM_DECLINE_SAVE_GAME 1459 +#define IDS_TITLE_START_GAME 1460 +#define IDS_CORRUPT_OR_DAMAGED_SAVE_TITLE 1461 +#define IDS_CORRUPT_OR_DAMAGED_SAVE_TEXT 1462 +#define IDS_CONFIRM_EXIT_GAME_CONFIRM_DISCONNECT_SAVE 1463 +#define IDS_EXIT_GAME_SAVE 1464 +#define IDS_EXIT_GAME_NO_SAVE 1465 +#define IDS_CONFIRM_EXIT_GAME 1466 +#define IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST 1467 +#define IDS_CREATE_NEW_WORLD 1468 +#define IDS_PLAY_TUTORIAL 1469 +#define IDS_TUTORIALSAVENAME 1470 +#define IDS_NAME_WORLD 1471 +#define IDS_NAME_WORLD_TEXT 1472 +#define IDS_CREATE_NEW_WORLD_SEEDTEXT 1473 +#define IDS_LOAD_SAVED_WORLD 1474 +#define IDS_PRESS_START_TO_JOIN 1475 +#define IDS_EXITING_GAME 1476 +#define IDS_GENERIC_ERROR 1477 +#define IDS_CONNECTION_FAILED 1478 +#define IDS_CONNECTION_LOST 1479 +#define IDS_CONNECTION_LOST_SERVER 1480 +#define IDS_DISCONNECTED 1481 +#define IDS_DISCONNECTED_KICKED 1482 +#define IDS_DISCONNECTED_FLYING 1483 +#define IDS_DISCONNECTED_LOGIN_TOO_LONG 1484 +#define IDS_DISCONNECTED_SERVER_FULL 1485 +#define IDS_DISCONNECTED_SERVER_QUIT 1486 +#define IDS_DISCONNECTED_NO_FRIENDS_IN_GAME 1487 +#define IDS_DISCONNECTED_BANNED 1488 +#define IDS_DISCONNECTED_SERVER_OLD 1489 +#define IDS_DISCONNECTED_CLIENT_OLD 1490 +#define IDS_DEFAULT_SAVENAME 1491 +#define IDS_AWARD_TITLE 1492 +#define IDS_AWARD_GAMERPIC1 1493 +#define IDS_AWARD_GAMERPIC2 1494 +#define IDS_LEADERBOARD_LOADING 1495 +#define IDS_LEADERBOARD_NORESULTS 1496 +#define IDS_LEADERBOARD_FILTER 1497 +#define IDS_LEADERBOARD_FILTER_FRIENDS 1498 +#define IDS_LEADERBOARD_FILTER_MYSCORE 1499 +#define IDS_LEADERBOARD_FILTER_OVERALL 1500 +#define IDS_LEADERBOARD_ENTRIES 1501 +#define IDS_LEADERBOARD_RANK 1502 +#define IDS_PROGRESS_SAVING_LEVEL 1503 +#define IDS_PROGRESS_SAVING_CHUNKS 1504 +#define IDS_PROGRESS_SAVING_TO_DISC 1505 +#define IDS_PROGRESS_BUILDING_TERRAIN 1506 +#define IDS_PROGRESS_SIMULATING_WORLD 1507 +#define IDS_PROGRESS_INITIALISING_SERVER 1508 +#define IDS_PROGRESS_GENERATING_SPAWN_AREA 1509 +#define IDS_PROGRESS_LOADING_SPAWN_AREA 1510 +#define IDS_PROGRESS_ENTERING_NETHER 1511 +#define IDS_PROGRESS_LEAVING_NETHER 1512 +#define IDS_PROGRESS_RESPAWNING 1513 +#define IDS_PROGRESS_GENERATING_LEVEL 1514 +#define IDS_PROGRESS_LOADING_LEVEL 1515 +#define IDS_PROGRESS_SAVING_PLAYERS 1516 +#define IDS_PROGRESS_CONNECTING 1517 +#define IDS_PROGRESS_DOWNLOADING_TERRAIN 1518 +#define IDS_PROGRESS_CONVERTING_TO_OFFLINE_GAME 1519 +#define IDS_PROGRESS_HOST_SAVING 1520 +#define IDS_PROGRESS_ENTERING_END 1521 +#define IDS_PROGRESS_LEAVING_END 1522 +#define IDS_PROGRESS_NEW_WORLD_SEED 1523 +#define IDS_TILE_BED_OCCUPIED 1524 +#define IDS_TILE_BED_NO_SLEEP 1525 +#define IDS_TILE_BED_PLAYERSLEEP 1526 +#define IDS_TILE_BED_NOT_VALID 1527 +#define IDS_TILE_BED_NOTSAFE 1528 +#define IDS_TILE_BED_MESLEEP 1529 +#define IDS_GROUPNAME_TOOLS 1530 +#define IDS_GROUPNAME_WEAPONS 1531 +#define IDS_GROUPNAME_FOOD 1532 +#define IDS_GROUPNAME_STRUCTURES 1533 +#define IDS_GROUPNAME_ARMOUR 1534 +#define IDS_GROUPNAME_MECHANISMS 1535 +#define IDS_GROUPNAME_TRANSPORT 1536 +#define IDS_GROUPNAME_DECORATIONS 1537 +#define IDS_GROUPNAME_BUILDING_BLOCKS 1538 +#define IDS_GROUPNAME_REDSTONE_AND_TRANSPORT 1539 +#define IDS_GROUPNAME_MISCELLANEOUS 1540 +#define IDS_GROUPNAME_POTIONS 1541 +#define IDS_GROUPNAME_TOOLS_WEAPONS_ARMOR 1542 +#define IDS_GROUPNAME_MATERIALS 1543 +#define IDS_RETURNEDTOMENU_TITLE 1544 +#define IDS_SLIDER_DIFFICULTY 1545 +#define IDS_SLIDER_GAMEMODE 1546 +#define IDS_SLIDER_MUSIC 1547 +#define IDS_SLIDER_SOUND 1548 +#define IDS_SLIDER_GAMMA 1549 +#define IDS_SLIDER_SENSITIVITY_INGAME 1550 +#define IDS_SLIDER_SENSITIVITY_INMENU 1551 +#define IDS_DIFFICULTY_TITLE_PEACEFUL 1552 +#define IDS_DIFFICULTY_TITLE_EASY 1553 +#define IDS_DIFFICULTY_TITLE_NORMAL 1554 +#define IDS_DIFFICULTY_TITLE_HARD 1555 +#define IDS_DIFFICULTY_PEACEFUL 1556 +#define IDS_DIFFICULTY_EASY 1557 +#define IDS_DIFFICULTY_NORMAL 1558 +#define IDS_DIFFICULTY_HARD 1559 +#define IDS_MULTIPLAYER_FULL_TITLE 1560 +#define IDS_MULTIPLAYER_FULL_TEXT 1561 +#define IDS_SIGN_TITLE 1562 +#define IDS_SIGN_TITLE_TEXT 1563 +#define IDS_NAME_TITLE 1564 +#define IDS_NAME_TITLE_TEXT 1565 +#define IDS_NAME_CAPTION 1566 +#define IDS_NAME_CAPTION_TEXT 1567 +#define IDS_NAME_DESC 1568 +#define IDS_NAME_DESC_TEXT 1569 +#define IDS_INVENTORY 1570 +#define IDS_INGREDIENTS 1571 +#define IDS_BREWING_STAND 1572 +#define IDS_CHEST 1573 +#define IDS_ENCHANT 1574 +#define IDS_FURNACE 1575 +#define IDS_INGREDIENT 1576 +#define IDS_FUEL 1577 +#define IDS_DISPENSER 1578 +#define IDS_CONTAINER_ANIMAL 1579 +#define IDS_CONTAINER_DROPPER 1580 +#define IDS_CONTAINER_HOPPER 1581 +#define IDS_CONTAINER_BEACON 1582 +#define IDS_CONTAINER_BEACON_PRIMARY_POWER 1583 +#define IDS_CONTAINER_BEACON_SECONDARY_POWER 1584 +#define IDS_CONTAINER_MINECART 1585 +#define IDS_NO_DLCOFFERS 1586 +#define IDS_PLAYER_JOINED 1587 +#define IDS_PLAYER_LEFT 1588 +#define IDS_PLAYER_KICKED 1589 +#define IDS_TEXT_DELETE_SAVE 1590 +#define IDS_STRINGVERIFY_AWAITING_APPROVAL 1591 +#define IDS_STRINGVERIFY_CENSORED 1592 +#define IDS_NOWPLAYING 1593 +#define IDS_DEFAULTS_TITLE 1594 +#define IDS_DEFAULTS_TEXT 1595 +#define IDS_FATAL_ERROR_TITLE 1596 +#define IDS_GAME_HOST_NAME 1597 +#define IDS_GAME_HOST_NAME_UNKNOWN 1598 +#define IDS_GUEST_ORDER_CHANGED_TITLE 1599 +#define IDS_GUEST_ORDER_CHANGED_TEXT 1600 +#define IDS_MUST_SIGN_IN_TITLE 1601 +#define IDS_MUST_SIGN_IN_TEXT 1602 +#define IDS_NO_MULTIPLAYER_PRIVILEGE_TITLE 1603 +#define IDS_FAILED_TO_CREATE_GAME_TITLE 1604 +#define IDS_DEFAULT_SKINS 1605 +#define IDS_NO_SKIN_PACK 1606 +#define IDS_FAVORITES_SKIN_PACK 1607 +#define IDS_BANNED_LEVEL_TITLE 1608 +#define IDS_PLAYER_BANNED_LEVEL 1609 +#define IDS_ACTION_BAN_LEVEL_TITLE 1610 +#define IDS_ACTION_BAN_LEVEL_DESCRIPTION 1611 +#define IDS_BUTTON_REMOVE_FROM_BAN_LIST 1612 +#define IDS_SLIDER_AUTOSAVE 1613 +#define IDS_SLIDER_AUTOSAVE_OFF 1614 +#define IDS_MINUTES 1615 +#define IDS_CANT_PLACE_NEAR_SPAWN_TITLE 1616 +#define IDS_CANT_PLACE_NEAR_SPAWN_TEXT 1617 +#define IDS_SLIDER_INTERFACEOPACITY 1618 +#define IDS_PROGRESS_AUTOSAVING_LEVEL 1619 +#define IDS_SLIDER_UISIZE 1620 +#define IDS_SLIDER_UISIZESPLITSCREEN 1621 +#define IDS_SEED 1622 +#define IDS_UNLOCK_KICK_PLAYER_TITLE 1623 +#define IDS_UNLOCK_KICK_PLAYER 1624 +#define IDS_GAMERPICS 1625 +#define IDS_THEMES 1626 +#define IDS_SKINS 1627 +#define IDS_ALLOWFRIENDSOFFRIENDS 1628 +#define IDS_NOTALLOWED_FRIENDSOFFRIENDS 1629 +#define IDS_CANTJOIN_TITLE 1630 +#define IDS_SELECTED 1631 +#define IDS_SELECTED_SKIN 1632 +#define IDS_CORRUPT_DLC_TITLE 1633 +#define IDS_CORRUPT_DLC 1634 +#define IDS_CORRUPT_DLC_MULTIPLE 1635 +#define IDS_GAME_MODE_CHANGED 1636 +#define IDS_RENAME_WORLD_TITLE 1637 +#define IDS_RENAME_WORLD_TEXT 1638 +#define IDS_GAMEMODE_SURVIVAL 1639 +#define IDS_GAMEMODE_CREATIVE 1640 +#define IDS_GAMEMODE_ADVENTURE 1641 +#define IDS_SURVIVAL 1642 +#define IDS_CREATIVE 1643 +#define IDS_ADVENTURE 1644 +#define IDS_CREATED_IN_SURVIVAL 1645 +#define IDS_CREATED_IN_CREATIVE 1646 +#define IDS_CHECKBOX_RENDER_CLOUDS 1647 +#define IDS_TEXT_SAVEOPTIONS 1648 +#define IDS_TITLE_RENAMESAVE 1649 +#define IDS_AUTOSAVE_COUNTDOWN 1650 +#define IDS_ON 1651 +#define IDS_OFF 1652 +#define IDS_LEVELTYPE_NORMAL 1653 +#define IDS_LEVELTYPE_SUPERFLAT 1654 +#define IDS_GAMEOPTION_SEED 1655 +#define IDS_GAMEOPTION_ONLINE 1656 +#define IDS_GAMEOPTION_INVITEONLY 1657 +#define IDS_GAMEOPTION_ALLOWFOF 1658 +#define IDS_GAMEOPTION_PVP 1659 +#define IDS_GAMEOPTION_TRUST 1660 +#define IDS_GAMEOPTION_FIRE_SPREADS 1661 +#define IDS_GAMEOPTION_TNT_EXPLODES 1662 +#define IDS_GAMEOPTION_RESET_NETHER 1663 +#define IDS_GAMEOPTION_STRUCTURES 1664 +#define IDS_GAMEOPTION_SUPERFLAT 1665 +#define IDS_GAMEOPTION_BONUS_CHEST 1666 +#define IDS_GAMEOPTION_MOB_GRIEFING 1667 +#define IDS_GAMEOPTION_KEEP_INVENTORY 1668 +#define IDS_GAMEOPTION_MOB_SPAWNING 1669 +#define IDS_GAMEOPTION_MOB_LOOT 1670 +#define IDS_GAMEOPTION_TILE_DROPS 1671 +#define IDS_GAMEOPTION_NATURAL_REGEN 1672 +#define IDS_GAMEOPTION_DAYLIGHT_CYCLE 1673 +#define IDS_DLC_MENU_SKINPACKS 1674 +#define IDS_DLC_MENU_THEMES 1675 +#define IDS_DLC_MENU_GAMERPICS 1676 +#define IDS_DLC_MENU_AVATARITEMS 1677 +#define IDS_DLC_MENU_TEXTUREPACKS 1678 +#define IDS_DLC_MENU_MASHUPPACKS 1679 +#define IDS_DEATH_INFIRE 1680 +#define IDS_DEATH_ONFIRE 1681 +#define IDS_DEATH_LAVA 1682 +#define IDS_DEATH_INWALL 1683 +#define IDS_DEATH_DROWN 1684 +#define IDS_DEATH_STARVE 1685 +#define IDS_DEATH_CACTUS 1686 +#define IDS_DEATH_FALL 1687 +#define IDS_DEATH_OUTOFWORLD 1688 +#define IDS_DEATH_GENERIC 1689 +#define IDS_DEATH_EXPLOSION 1690 +#define IDS_DEATH_MAGIC 1691 +#define IDS_DEATH_DRAGON_BREATH 1692 +#define IDS_DEATH_MOB 1693 +#define IDS_DEATH_PLAYER 1694 +#define IDS_DEATH_ARROW 1695 +#define IDS_DEATH_FIREBALL 1696 +#define IDS_DEATH_THROWN 1697 +#define IDS_DEATH_INDIRECT_MAGIC 1698 +#define IDS_DEATH_FELL_ACCIDENT_LADDER 1699 +#define IDS_DEATH_FELL_ACCIDENT_VINES 1700 +#define IDS_DEATH_FELL_ACCIDENT_WATER 1701 +#define IDS_DEATH_FELL_ACCIDENT_GENERIC 1702 +#define IDS_DEATH_FELL_KILLER 1703 +#define IDS_DEATH_FELL_ASSIST 1704 +#define IDS_DEATH_FELL_ASSIST_ITEM 1705 +#define IDS_DEATH_FELL_FINISH 1706 +#define IDS_DEATH_FELL_FINISH_ITEM 1707 +#define IDS_DEATH_INFIRE_PLAYER 1708 +#define IDS_DEATH_ONFIRE_PLAYER 1709 +#define IDS_DEATH_LAVA_PLAYER 1710 +#define IDS_DEATH_DROWN_PLAYER 1711 +#define IDS_DEATH_CACTUS_PLAYER 1712 +#define IDS_DEATH_EXPLOSION_PLAYER 1713 +#define IDS_DEATH_WITHER 1714 +#define IDS_DEATH_PLAYER_ITEM 1715 +#define IDS_DEATH_ARROW_ITEM 1716 +#define IDS_DEATH_FIREBALL_ITEM 1717 +#define IDS_DEATH_THROWN_ITEM 1718 +#define IDS_DEATH_INDIRECT_MAGIC_ITEM 1719 +#define IDS_CHECKBOX_RENDER_BEDROCKFOG 1720 +#define IDS_CHECKBOX_DISPLAY_HUD 1721 +#define IDS_CHECKBOX_DISPLAY_HAND 1722 +#define IDS_CHECKBOX_DEATH_MESSAGES 1723 +#define IDS_CHECKBOX_ANIMATED_CHARACTER 1724 +#define IDS_CHECKBOX_CUSTOM_SKIN_ANIM 1725 +#define IDS_PRIV_MINE_TOGGLE_ON 1726 +#define IDS_PRIV_MINE_TOGGLE_OFF 1727 +#define IDS_PRIV_BUILD_TOGGLE_ON 1728 +#define IDS_PRIV_BUILD_TOGGLE_OFF 1729 +#define IDS_PRIV_USE_DOORS_TOGGLE_ON 1730 +#define IDS_PRIV_USE_DOORS_TOGGLE_OFF 1731 +#define IDS_PRIV_USE_CONTAINERS_TOGGLE_ON 1732 +#define IDS_PRIV_USE_CONTAINERS_TOGGLE_OFF 1733 +#define IDS_PRIV_ATTACK_MOB_TOGGLE_ON 1734 +#define IDS_PRIV_ATTACK_MOB_TOGGLE_OFF 1735 +#define IDS_PRIV_ATTACK_PLAYER_TOGGLE_ON 1736 +#define IDS_PRIV_ATTACK_PLAYER_TOGGLE_OFF 1737 +#define IDS_PRIV_ATTACK_ANIMAL_TOGGLE_ON 1738 +#define IDS_PRIV_ATTACK_ANIMAL_TOGGLE_OFF 1739 +#define IDS_PRIV_MODERATOR_TOGGLE_ON 1740 +#define IDS_PRIV_MODERATOR_TOGGLE_OFF 1741 +#define IDS_PRIV_FLY_TOGGLE_ON 1742 +#define IDS_PRIV_FLY_TOGGLE_OFF 1743 +#define IDS_PRIV_EXHAUSTION_TOGGLE_ON 1744 +#define IDS_PRIV_EXHAUSTION_TOGGLE_OFF 1745 +#define IDS_PRIV_INVISIBLE_TOGGLE_ON 1746 +#define IDS_PRIV_INVISIBLE_TOGGLE_OFF 1747 +#define IDS_PRIV_INVULNERABLE_TOGGLE_ON 1748 +#define IDS_PRIV_INVULNERABLE_TOGGLE_OFF 1749 +#define IDS_DLC_COST 1750 +#define IDS_BOSS_ENDERDRAGON_HEALTH 1751 +#define IDS_PLAYER_ENTERED_END 1752 +#define IDS_PLAYER_LEFT_END 1753 +#define IDS_WIN_TEXT 1754 +#define IDS_WIN_TEXT_PART_2 1755 +#define IDS_WIN_TEXT_PART_3 1756 +#define IDS_RESETNETHER_TITLE 1757 +#define IDS_RESETNETHER_TEXT 1758 +#define IDS_RESET_NETHER 1759 +#define IDS_DONT_RESET_NETHER 1760 +#define IDS_CANT_SHEAR_MOOSHROOM 1761 +#define IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED 1762 +#define IDS_MAX_MOOSHROOMS_SPAWNED 1763 +#define IDS_MAX_WOLVES_SPAWNED 1764 +#define IDS_MAX_CHICKENS_SPAWNED 1765 +#define IDS_MAX_SQUID_SPAWNED 1766 +#define IDS_MAX_BATS_SPAWNED 1767 +#define IDS_MAX_ENEMIES_SPAWNED 1768 +#define IDS_MAX_VILLAGERS_SPAWNED 1769 +#define IDS_MAX_HANGINGENTITIES 1770 +#define IDS_CANT_SPAWN_IN_PEACEFUL 1771 +#define IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED 1772 +#define IDS_MAX_WOLVES_BRED 1773 +#define IDS_MAX_CHICKENS_BRED 1774 +#define IDS_MAX_HORSES_BRED 1775 +#define IDS_MAX_MUSHROOMCOWS_BRED 1776 +#define IDS_MAX_BOATS 1777 +#define IDS_MAX_SKULL_TILES 1778 +#define IDS_INVERT_LOOK 1779 +#define IDS_SOUTHPAW 1780 +#define IDS_YOU_DIED 1781 +#define IDS_RESPAWN 1782 +#define IDS_DOWNLOADABLE_CONTENT_OFFERS 1783 +#define IDS_CHANGE_SKIN 1784 +#define IDS_HOW_TO_PLAY 1785 +#define IDS_CONTROLS 1786 +#define IDS_SETTINGS 1787 +#define IDS_LANGUAGE_SELECTOR 1788 +#define IDS_CREDITS 1789 +#define IDS_REINSTALL_CONTENT 1790 +#define IDS_DEBUG_SETTINGS 1791 +#define IDS_FIRE_SPREADS 1792 +#define IDS_TNT_EXPLODES 1793 +#define IDS_PLAYER_VS_PLAYER 1794 +#define IDS_TRUST_PLAYERS 1795 +#define IDS_HOST_PRIVILEGES 1796 +#define IDS_GENERATE_STRUCTURES 1797 +#define IDS_SUPERFLAT_WORLD 1798 +#define IDS_BONUS_CHEST 1799 +#define IDS_WORLD_OPTIONS 1800 +#define IDS_GAME_OPTIONS 1801 +#define IDS_MOB_GRIEFING 1802 +#define IDS_KEEP_INVENTORY 1803 +#define IDS_MOB_SPAWNING 1804 +#define IDS_MOB_LOOT 1805 +#define IDS_TILE_DROPS 1806 +#define IDS_NATURAL_REGEN 1807 +#define IDS_DAYLIGHT_CYCLE 1808 +#define IDS_CAN_BUILD_AND_MINE 1809 +#define IDS_CAN_USE_DOORS_AND_SWITCHES 1810 +#define IDS_CAN_OPEN_CONTAINERS 1811 +#define IDS_CAN_ATTACK_PLAYERS 1812 +#define IDS_CAN_ATTACK_ANIMALS 1813 +#define IDS_MODERATOR 1814 +#define IDS_KICK_PLAYER 1815 +#define IDS_CAN_FLY 1816 +#define IDS_DISABLE_EXHAUSTION 1817 +#define IDS_INVISIBLE 1818 +#define IDS_HOST_OPTIONS 1819 +#define IDS_PLAYERS_INVITE 1820 +#define IDS_ONLINE_GAME 1821 +#define IDS_INVITE_ONLY 1822 +#define IDS_MORE_OPTIONS 1823 +#define IDS_LOAD 1824 +#define IDS_DEFAULT_WORLD_NAME 1825 +#define IDS_WORLD_NAME 1826 +#define IDS_CREATE_NEW_WORLD_SEED 1827 +#define IDS_CREATE_NEW_WORLD_RANDOM_SEED 1828 +#define IDS_PLAYERS 1829 +#define IDS_JOIN_GAME 1830 +#define IDS_START_GAME 1831 +#define IDS_NO_GAMES_FOUND 1832 +#define IDS_PLAY_GAME 1833 +#define IDS_LEADERBOARDS 1834 +#define IDS_HELP_AND_OPTIONS 1835 +#define IDS_RESUME_GAME 1836 +#define IDS_SAVE_GAME 1837 +#define IDS_LABEL_DIFFICULTY 1838 +#define IDS_LABEL_GAME_TYPE 1839 +#define IDS_LABEL_STRUCTURES 1840 +#define IDS_LABEL_LEVEL_TYPE 1841 +#define IDS_LABEL_PvP 1842 +#define IDS_LABEL_TRUST 1843 +#define IDS_LABEL_TNT 1844 +#define IDS_LABEL_FIRE_SPREADS 1845 +#define IDS_REINSTALL_THEME 1846 +#define IDS_REINSTALL_GAMERPIC_1 1847 +#define IDS_REINSTALL_GAMERPIC_2 1848 +#define IDS_REINSTALL_AVATAR_ITEM_1 1849 +#define IDS_REINSTALL_AVATAR_ITEM_2 1850 +#define IDS_REINSTALL_AVATAR_ITEM_3 1851 +#define IDS_OPTIONS 1852 +#define IDS_AUDIO 1853 +#define IDS_CONTROL 1854 +#define IDS_GRAPHICS 1855 +#define IDS_USER_INTERFACE 1856 +#define IDS_RESET_TO_DEFAULTS 1857 +#define IDS_VIEW_BOBBING 1858 +#define IDS_HINTS 1859 +#define IDS_IN_GAME_TOOLTIPS 1860 +#define IDS_CHECKBOX_VERTICAL_SPLIT_SCREEN 1861 +#define IDS_DONE 1862 +#define IDS_EDIT_SIGN_MESSAGE 1863 +#define IDS_SOCIAL_TEXT 1864 +#define IDS_SOCIAL_LABEL_CAPTION 1865 +#define IDS_SOCIAL_DEFAULT_CAPTION 1866 +#define IDS_SOCIAL_LABEL_DESCRIPTION 1867 +#define IDS_DEFAULT_TEXTUREPACK 1868 +#define IDS_POTION_EMPTY 1869 +#define IDS_POTION_MOVESPEED 1870 +#define IDS_POTION_MOVESLOWDOWN 1871 +#define IDS_POTION_DIGSPEED 1872 +#define IDS_POTION_DIGSLOWDOWN 1873 +#define IDS_POTION_DAMAGEBOOST 1874 +#define IDS_POTION_WEAKNESS 1875 +#define IDS_POTION_HEAL 1876 +#define IDS_POTION_HARM 1877 +#define IDS_POTION_JUMP 1878 +#define IDS_POTION_CONFUSION 1879 +#define IDS_POTION_REGENERATION 1880 +#define IDS_POTION_RESISTANCE 1881 +#define IDS_POTION_FIRERESISTANCE 1882 +#define IDS_POTION_WATERBREATHING 1883 +#define IDS_POTION_INVISIBILITY 1884 +#define IDS_POTION_BLINDNESS 1885 +#define IDS_POTION_NIGHTVISION 1886 +#define IDS_POTION_HUNGER 1887 +#define IDS_POTION_POISON 1888 +#define IDS_POTION_WITHER 1889 +#define IDS_POTION_HEALTHBOOST 1890 +#define IDS_POTION_ABSORPTION 1891 +#define IDS_POTION_SATURATION 1892 +#define IDS_POTION_MOVESPEED_POSTFIX 1893 +#define IDS_POTION_MOVESLOWDOWN_POSTFIX 1894 +#define IDS_POTION_DIGSPEED_POSTFIX 1895 +#define IDS_POTION_DIGSLOWDOWN_POSTFIX 1896 +#define IDS_POTION_DAMAGEBOOST_POSTFIX 1897 +#define IDS_POTION_WEAKNESS_POSTFIX 1898 +#define IDS_POTION_HEAL_POSTFIX 1899 +#define IDS_POTION_HARM_POSTFIX 1900 +#define IDS_POTION_JUMP_POSTFIX 1901 +#define IDS_POTION_CONFUSION_POSTFIX 1902 +#define IDS_POTION_REGENERATION_POSTFIX 1903 +#define IDS_POTION_RESISTANCE_POSTFIX 1904 +#define IDS_POTION_FIRERESISTANCE_POSTFIX 1905 +#define IDS_POTION_WATERBREATHING_POSTFIX 1906 +#define IDS_POTION_INVISIBILITY_POSTFIX 1907 +#define IDS_POTION_BLINDNESS_POSTFIX 1908 +#define IDS_POTION_NIGHTVISION_POSTFIX 1909 +#define IDS_POTION_HUNGER_POSTFIX 1910 +#define IDS_POTION_POISON_POSTFIX 1911 +#define IDS_POTION_WITHER_POSTFIX 1912 +#define IDS_POTION_HEALTHBOOST_POSTFIX 1913 +#define IDS_POTION_ABSORPTION_POSTFIX 1914 +#define IDS_POTION_SATURATION_POSTFIX 1915 +#define IDS_POTION_POTENCY_0 1916 +#define IDS_POTION_POTENCY_1 1917 +#define IDS_POTION_POTENCY_2 1918 +#define IDS_POTION_POTENCY_3 1919 +#define IDS_POTION_PREFIX_GRENADE 1920 +#define IDS_POTION_PREFIX_MUNDANE 1921 +#define IDS_POTION_PREFIX_UNINTERESTING 1922 +#define IDS_POTION_PREFIX_BLAND 1923 +#define IDS_POTION_PREFIX_CLEAR 1924 +#define IDS_POTION_PREFIX_MILKY 1925 +#define IDS_POTION_PREFIX_DIFFUSE 1926 +#define IDS_POTION_PREFIX_ARTLESS 1927 +#define IDS_POTION_PREFIX_THIN 1928 +#define IDS_POTION_PREFIX_AWKWARD 1929 +#define IDS_POTION_PREFIX_FLAT 1930 +#define IDS_POTION_PREFIX_BULKY 1931 +#define IDS_POTION_PREFIX_BUNGLING 1932 +#define IDS_POTION_PREFIX_BUTTERED 1933 +#define IDS_POTION_PREFIX_SMOOTH 1934 +#define IDS_POTION_PREFIX_SUAVE 1935 +#define IDS_POTION_PREFIX_DEBONAIR 1936 +#define IDS_POTION_PREFIX_THICK 1937 +#define IDS_POTION_PREFIX_ELEGANT 1938 +#define IDS_POTION_PREFIX_FANCY 1939 +#define IDS_POTION_PREFIX_CHARMING 1940 +#define IDS_POTION_PREFIX_DASHING 1941 +#define IDS_POTION_PREFIX_REFINED 1942 +#define IDS_POTION_PREFIX_CORDIAL 1943 +#define IDS_POTION_PREFIX_SPARKLING 1944 +#define IDS_POTION_PREFIX_POTENT 1945 +#define IDS_POTION_PREFIX_FOUL 1946 +#define IDS_POTION_PREFIX_ODORLESS 1947 +#define IDS_POTION_PREFIX_RANK 1948 +#define IDS_POTION_PREFIX_HARSH 1949 +#define IDS_POTION_PREFIX_ACRID 1950 +#define IDS_POTION_PREFIX_GROSS 1951 +#define IDS_POTION_PREFIX_STINKY 1952 +#define IDS_POTION_DESC_WATER_BOTTLE 1953 +#define IDS_POTION_DESC_EMPTY 1954 +#define IDS_POTION_DESC_MOVESPEED 1955 +#define IDS_POTION_DESC_MOVESLOWDOWN 1956 +#define IDS_POTION_DESC_DAMAGEBOOST 1957 +#define IDS_POTION_DESC_WEAKNESS 1958 +#define IDS_POTION_DESC_HEAL 1959 +#define IDS_POTION_DESC_HARM 1960 +#define IDS_POTION_DESC_REGENERATION 1961 +#define IDS_POTION_DESC_FIRERESISTANCE 1962 +#define IDS_POTION_DESC_POISON 1963 +#define IDS_POTION_EFFECTS_WHENDRANK 1964 +#define IDS_ATTRIBUTE_NAME_HORSE_JUMPSTRENGTH 1965 +#define IDS_ATTRIBUTE_NAME_ZOMBIE_SPAWNREINFORCEMENTS 1966 +#define IDS_ATTRIBUTE_NAME_GENERIC_MAXHEALTH 1967 +#define IDS_ATTRIBUTE_NAME_GENERIC_FOLLOWRANGE 1968 +#define IDS_ATTRIBUTE_NAME_GENERIC_KNOCKBACKRESISTANCE 1969 +#define IDS_ATTRIBUTE_NAME_GENERIC_MOVEMENTSPEED 1970 +#define IDS_ATTRIBUTE_NAME_GENERIC_ATTACKDAMAGE 1971 +#define IDS_ENCHANTMENT_DAMAGE_ALL 1972 +#define IDS_ENCHANTMENT_DAMAGE_UNDEAD 1973 +#define IDS_ENCHANTMENT_DAMAGE_ARTHROPODS 1974 +#define IDS_ENCHANTMENT_KNOCKBACK 1975 +#define IDS_ENCHANTMENT_FIRE 1976 +#define IDS_ENCHANTMENT_PROTECT_ALL 1977 +#define IDS_ENCHANTMENT_PROTECT_FIRE 1978 +#define IDS_ENCHANTMENT_PROTECT_FALL 1979 +#define IDS_ENCHANTMENT_PROTECT_EXPLOSION 1980 +#define IDS_ENCHANTMENT_PROTECT_PROJECTILE 1981 +#define IDS_ENCHANTMENT_OXYGEN 1982 +#define IDS_ENCHANTMENT_WATER_WORKER 1983 +#define IDS_ENCHANTMENT_DIGGING 1984 +#define IDS_ENCHANTMENT_UNTOUCHING 1985 +#define IDS_ENCHANTMENT_DURABILITY 1986 +#define IDS_ENCHANTMENT_LOOT_BONUS 1987 +#define IDS_ENCHANTMENT_LOOT_BONUS_DIGGER 1988 +#define IDS_ENCHANTMENT_ARROW_DAMAGE 1989 +#define IDS_ENCHANTMENT_ARROW_FIRE 1990 +#define IDS_ENCHANTMENT_ARROW_KNOCKBACK 1991 +#define IDS_ENCHANTMENT_ARROW_INFINITE 1992 +#define IDS_ENCHANTMENT_LEVEL_1 1993 +#define IDS_ENCHANTMENT_LEVEL_2 1994 +#define IDS_ENCHANTMENT_LEVEL_3 1995 +#define IDS_ENCHANTMENT_LEVEL_4 1996 +#define IDS_ENCHANTMENT_LEVEL_5 1997 +#define IDS_ENCHANTMENT_LEVEL_6 1998 +#define IDS_ENCHANTMENT_LEVEL_7 1999 +#define IDS_ENCHANTMENT_LEVEL_8 2000 +#define IDS_ENCHANTMENT_LEVEL_9 2001 +#define IDS_ENCHANTMENT_LEVEL_10 2002 +#define IDS_DESC_EMERALDORE 2003 +#define IDS_DESC_ENDERCHEST 2004 +#define IDS_DESC_TRIPWIRE_SOURCE 2005 +#define IDS_DESC_TRIPWIRE 2006 +#define IDS_DESC_EMERALDBLOCK 2007 +#define IDS_DESC_COBBLESTONE_WALL 2008 +#define IDS_DESC_ANVIL 2009 +#define IDS_DESC_NETHER_QUARTZ_ORE 2010 +#define IDS_DESC_QUARTZ_BLOCK 2011 +#define IDS_DESC_EMERALD 2012 +#define IDS_DESC_FLOWERPOT 2013 +#define IDS_DESC_CARROTS 2014 +#define IDS_DESC_POTATO 2015 +#define IDS_DESC_POTATO_BAKED 2016 +#define IDS_DESC_POTATO_POISONOUS 2017 +#define IDS_DESC_CARROT_GOLDEN 2018 +#define IDS_DESC_CARROT_ON_A_STICK 2019 +#define IDS_DESC_PUMPKIN_PIE 2020 +#define IDS_DESC_ENCHANTED_BOOK 2021 +#define IDS_DESC_NETHER_QUARTZ 2022 +#define IDS_DESC_CARPET 2023 +#define IDS_ITEM_EMERALD 2024 +#define IDS_FLOWERPOT 2025 +#define IDS_CARROTS 2026 +#define IDS_POTATO 2027 +#define IDS_ITEM_POTATO_BAKED 2028 +#define IDS_ITEM_POTATO_POISONOUS 2029 +#define IDS_ITEM_CARROT_GOLDEN 2030 +#define IDS_ITEM_CARROT_ON_A_STICK 2031 +#define IDS_ITEM_PUMPKIN_PIE 2032 +#define IDS_ITEM_ENCHANTED_BOOK 2033 +#define IDS_ITEM_NETHER_QUARTZ 2034 +#define IDS_TILE_EMERALDORE 2035 +#define IDS_TILE_ENDERCHEST 2036 +#define IDS_TILE_TRIPWIRE_SOURCE 2037 +#define IDS_TILE_TRIPWIRE 2038 +#define IDS_TILE_EMERALDBLOCK 2039 +#define IDS_TILE_COBBLESTONE_WALL 2040 +#define IDS_TILE_COBBLESTONE_WALL_MOSSY 2041 +#define IDS_TILE_FLOWERPOT 2042 +#define IDS_TILE_CARROTS 2043 +#define IDS_TILE_POTATOES 2044 +#define IDS_TILE_ANVIL 2045 +#define IDS_TILE_ANVIL_INTACT 2046 +#define IDS_TILE_ANVIL_SLIGHTLYDAMAGED 2047 +#define IDS_TILE_ANVIL_VERYDAMAGED 2048 +#define IDS_TILE_NETHER_QUARTZ 2049 +#define IDS_TILE_QUARTZ_BLOCK 2050 +#define IDS_TILE_QUARTZ_BLOCK_CHISELED 2051 +#define IDS_TILE_QUARTZ_BLOCK_LINES 2052 +#define IDS_TILE_STAIRS_QUARTZ 2053 +#define IDS_TILE_CARPET 2054 +#define IDS_TILE_CARPET_BLACK 2055 +#define IDS_TILE_CARPET_RED 2056 +#define IDS_TILE_CARPET_GREEN 2057 +#define IDS_TILE_CARPET_BROWN 2058 +#define IDS_TILE_CARPET_BLUE 2059 +#define IDS_TILE_CARPET_PURPLE 2060 +#define IDS_TILE_CARPET_CYAN 2061 +#define IDS_TILE_CARPET_SILVER 2062 +#define IDS_TILE_CARPET_GRAY 2063 +#define IDS_TILE_CARPET_PINK 2064 +#define IDS_TILE_CARPET_LIME 2065 +#define IDS_TILE_CARPET_YELLOW 2066 +#define IDS_TILE_CARPET_LIGHT_BLUE 2067 +#define IDS_TILE_CARPET_MAGENTA 2068 +#define IDS_TILE_CARPET_ORANGE 2069 +#define IDS_TILE_CARPET_WHITE 2070 +#define IDS_TILE_SANDSTONE_CHISELED 2071 +#define IDS_TILE_SANDSTONE_SMOOTH 2072 +#define IDS_DEATH_THORNS 2073 +#define IDS_DEATH_FALLING_ANVIL 2074 +#define IDS_DEATH_FALLING_TILE 2075 +#define IDS_COMMAND_TELEPORT_SUCCESS 2076 +#define IDS_COMMAND_TELEPORT_ME 2077 +#define IDS_COMMAND_TELEPORT_TO_ME 2078 +#define IDS_ENCHANTMENT_THORNS 2079 +#define IDS_TILE_STONESLAB_QUARTZ 2080 +#define IDS_POTION_DESC_NIGHTVISION 2081 +#define IDS_POTION_DESC_INVISIBILITY 2082 +#define IDS_REPAIR_AND_NAME 2083 +#define IDS_REPAIR_COST 2084 +#define IDS_REPAIR_EXPENSIVE 2085 +#define IDS_TITLE_RENAME 2086 +#define IDS_YOU_HAVE 2087 +#define IDS_REQUIRED_ITEMS_FOR_TRADE 2088 +#define IDS_VILLAGER_OFFERS_ITEM 2089 +#define IDS_TOOLTIPS_REPAIR 2090 +#define IDS_TOOLTIPS_TRADE 2091 +#define IDS_TOOLTIPS_DYECOLLAR 2092 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_OVERVIEW 2093 +#define IDS_TUTORIAL_PROMPT_ANVIL_MENU_OVERVIEW 2094 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_START 2095 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_REPAIR 2096 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_SACRIFICE 2097 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_ENCHANT 2098 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_COST 2099 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_RENAMING 2100 +#define IDS_TUTORIAL_TASK_ANVIL_MENU_SMITH 2101 +#define IDS_TUTORIAL_TASK_ANVIL_OVERVIEW 2102 +#define IDS_TUTORIAL_PROMPT_ANVIL_OVERVIEW 2103 +#define IDS_TUTORIAL_TASK_ANVIL_SUMMARY 2104 +#define IDS_TUTORIAL_TASK_ANVIL_ENCHANTED_BOOKS 2105 +#define IDS_TUTORIAL_TASK_ANVIL_COST 2106 +#define IDS_TUTORIAL_TASK_ANVIL_COST2 2107 +#define IDS_TUTORIAL_TASK_ANVIL_RENAMING 2108 +#define IDS_TUTORIAL_TASK_ANVIL_USE_CHESTS 2109 +#define IDS_TUTORIAL_TASK_TRADING_MENU_OVERVIEW 2110 +#define IDS_TUTORIAL_PROMPT_TRADING_MENU_OVERVIEW 2111 +#define IDS_TUTORIAL_TASK_TRADING_MENU_START 2112 +#define IDS_TUTORIAL_TASK_TRADING_MENU_UNAVAILABLE 2113 +#define IDS_TUTORIAL_TASK_TRADING_MENU_DETAILS 2114 +#define IDS_TUTORIAL_TASK_TRADING_MENU_INVENTORY 2115 +#define IDS_TUTORIAL_TASK_TRADING_MENU_TRADE 2116 +#define IDS_TUTORIAL_TASK_TRADING_OVERVIEW 2117 +#define IDS_TUTORIAL_PROMPT_TRADING_OVERVIEW 2118 +#define IDS_TUTORIAL_TASK_TRADING_SUMMARY 2119 +#define IDS_TUTORIAL_TASK_TRADING_TRADES 2120 +#define IDS_TUTORIAL_TASK_TRADING_INCREASE_TRADES 2121 +#define IDS_TUTORIAL_TASK_TRADING_DECREASE_TRADES 2122 +#define IDS_TUTORIAL_TASK_TRADING_USE_CHESTS 2123 +#define IDS_TUTORIAL_TASK_ENDERCHEST_OVERVIEW 2124 +#define IDS_TUTORIAL_PROMPT_ENDERCHEST_OVERVIEW 2125 +#define IDS_TUTORIAL_TASK_ENDERCHEST_SUMMARY 2126 +#define IDS_TUTORIAL_TASK_ENDERCHEST_PLAYERS 2127 +#define IDS_TUTORIAL_TASK_ENDERCHEST_FUNCTION 2128 +#define IDS_DESC_ENCHANTED_GOLDENAPPLE 2129 +#define IDS_ENABLE_TELEPORT 2130 +#define IDS_TELEPORT 2131 +#define IDS_TELEPORT_TO_PLAYER 2132 +#define IDS_TELEPORT_TO_ME 2133 +#define IDS_CAN_DISABLE_EXHAUSTION 2134 +#define IDS_CAN_INVISIBLE 2135 +#define IDS_PRIV_CAN_INVISIBLE_TOGGLE_ON 2136 +#define IDS_PRIV_CAN_INVISIBLE_TOGGLE_OFF 2137 +#define IDS_PRIV_CAN_FLY_TOGGLE_ON 2138 +#define IDS_PRIV_CAN_FLY_TOGGLE_OFF 2139 +#define IDS_PRIV_CAN_EXHAUSTION_TOGGLE_ON 2140 +#define IDS_PRIV_CAN_EXHAUSTION_TOGGLE_OFF 2141 +#define IDS_PRIV_CAN_TELEPORT_TOGGLE_ON 2142 +#define IDS_PRIV_CAN_TELEPORT_TOGGLE_OFF 2143 +#define IDS_HOW_TO_PLAY_ANVIL 2144 +#define IDS_HOW_TO_PLAY_TRADING 2145 +#define IDS_HOW_TO_PLAY_ENDERCHEST 2146 +#define IDS_VILLAGER_FARMER 2147 +#define IDS_VILLAGER_LIBRARIAN 2148 +#define IDS_VILLAGER_PRIEST 2149 +#define IDS_VILLAGER_SMITH 2150 +#define IDS_VILLAGER_BUTCHER 2151 +#define IDS_DESC_VILLAGER 2152 +#define IDS_CHEST_LARGE 2153 +#define IDS_TUTORIAL_TASK_ENCHANTING_BOOKS 2154 +#define IDS_TUTORIAL_TASK_REDSTONE_TRIPWIRE 2155 +#define IDS_TUTORIAL_TASK_BREEDING_WOLF_COLLAR 2156 +#define IDS_TUTORIAL_TASK_FARMING_CARROTS_AND_POTATOES 2157 +#define IDS_TUTORIAL_TASK_BREEDING_RIDING_PIGS 2158 +#define IDS_TUTORIAL_TASK_MINECART_PUSHING 2159 +#define IDS_CONNECTION_FAILED_NO_SD_SPLITSCREEN 2160 +#define IDS_TOOLTIPS_CURE 2161 +#define IDS_WINDOWS_EXIT 2162 +#define IDS_LANG_SYSTEM 2163 +#define IDS_LANG_ENGLISH 2164 +#define IDS_LANG_GERMAN 2165 +#define IDS_LANG_SPANISH 2166 +#define IDS_LANG_SPANISH_SPAIN 2167 +#define IDS_LANG_SPANISH_LATIN_AMERICA 2168 +#define IDS_LANG_FRENCH 2169 +#define IDS_LANG_ITALIAN 2170 +#define IDS_LANG_PORTUGUESE 2171 +#define IDS_LANG_PORTUGUESE_PORTUGAL 2172 +#define IDS_LANG_PORTUGUESE_BRAZIL 2173 +#define IDS_LANG_JAPANESE 2174 +#define IDS_LANG_KOREAN 2175 +#define IDS_LANG_CHINESE_TRADITIONAL 2176 +#define IDS_LANG_CHINESE_SIMPLIFIED 2177 +#define IDS_LANG_DANISH 2178 +#define IDS_LANG_FINISH 2179 +#define IDS_LANG_DUTCH 2180 +#define IDS_LANG_POLISH 2181 +#define IDS_LANG_RUSSIAN 2182 +#define IDS_LANG_SWEDISH 2183 +#define IDS_LANG_NORWEGIAN 2184 +#define IDS_LANG_GREEK 2185 +#define IDS_LANG_TURKISH 2186 +#define IDS_LEADERBOARD_KILLS_EASY 2187 +#define IDS_LEADERBOARD_KILLS_NORMAL 2188 +#define IDS_LEADERBOARD_KILLS_HARD 2189 +#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2190 +#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2191 +#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2192 +#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2193 +#define IDS_LEADERBOARD_FARMING_PEACEFUL 2194 +#define IDS_LEADERBOARD_FARMING_EASY 2195 +#define IDS_LEADERBOARD_FARMING_NORMAL 2196 +#define IDS_LEADERBOARD_FARMING_HARD 2197 +#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2198 +#define IDS_LEADERBOARD_TRAVELLING_EASY 2199 +#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2200 +#define IDS_LEADERBOARD_TRAVELLING_HARD 2201 +#define IDS_TIPS_GAMETIP_0 2202 +#define IDS_TIPS_GAMETIP_1 2203 +#define IDS_TIPS_GAMETIP_48 2204 +#define IDS_TIPS_GAMETIP_44 2205 +#define IDS_TIPS_GAMETIP_45 2206 +#define IDS_TIPS_TRIVIA_4 2207 +#define IDS_TIPS_TRIVIA_17 2208 +#define IDS_HOW_TO_PLAY_MULTIPLAYER 2209 +#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2210 +#define IDS_HOW_TO_PLAY_CREATIVE 2211 +#define IDS_TUTORIAL_TASK_FLY 2212 +#define IDS_TOOLTIPS_SELECTDEVICE 2213 +#define IDS_TOOLTIPS_CHANGEDEVICE 2214 +#define IDS_TOOLTIPS_VIEW_GAMERCARD 2215 +#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2216 +#define IDS_TOOLTIPS_INVITE_PARTY 2217 +#define IDS_CONFIRM_START_CREATIVE 2218 +#define IDS_CONFIRM_START_SAVEDINCREATIVE 2219 +#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2220 +#define IDS_CONFIRM_START_HOST_PRIVILEGES 2221 +#define IDS_CONNECTION_LOST_LIVE 2222 +#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2223 +#define IDS_AWARD_AVATAR1 2224 +#define IDS_AWARD_AVATAR2 2225 +#define IDS_AWARD_AVATAR3 2226 +#define IDS_AWARD_THEME 2227 +#define IDS_LEADERBOARD_GAMERTAG 2228 +#define IDS_GROUPNAME_POTIONS_480 2229 +#define IDS_RETURNEDTOTITLESCREEN_TEXT 2230 +#define IDS_FATAL_ERROR_TEXT 2231 +#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2232 +#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2233 +#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2234 +#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2235 +#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2236 +#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2237 +#define IDS_SAVE_ICON_MESSAGE 2238 +#define IDS_GAMEOPTION_HOST_PRIVILEGES 2239 +#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2240 +#define IDS_ACHIEVEMENTS 2241 +#define IDS_LABEL_GAMERTAGS 2242 +#define IDS_IN_GAME_GAMERTAGS 2243 +#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2244 +#define IDS_TITLE_UPDATE_NAME 2245 +#define IDS_PLATFORM_NAME 2246 +#define IDS_BACK_BUTTON 2247 +#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2248 +#define IDS_KICK_PLAYER_DESCRIPTION 2249 +#define IDS_WORLD_SIZE_TITLE_SMALL 2250 +#define IDS_WORLD_SIZE_TITLE_MEDIUM 2251 +#define IDS_WORLD_SIZE_TITLE_LARGE 2252 +#define IDS_WORLD_SIZE_TITLE_CLASSIC 2253 +#define IDS_WORLD_SIZE 2254 +#define IDS_GAMEOPTION_WORLD_SIZE 2255 +#define IDS_DISABLE_SAVING 2256 +#define IDS_GAMEOPTION_DISABLE_SAVING 2257 +#define IDS_CHECKBOX_FULLSCREEN 2258 +#define IDS_CHECKBOX_VSYNC 2259 +#define IDS_SLIDER_FOV 2260 +#define IDS_SLIDER_RENDERDISTANCE 2261 +#define IDS_IN_GAME_OLDSWINGANIMATION 2262 +#define IDS_CHECKBOX_CAVESOUNDS 2263 +#define IDS_CHECKBOX_CLASSICCRAFTING 2264 +#define IDS_GRAPHICSMODE_POTATO 2265 +#define IDS_GRAPHICSMODE_FAST 2266 +#define IDS_GRAPHICSMODE_FANCY 2267 +#define IDS_GRAPHICSMODE_EXTRA 2268 +#define IDS_CREATE 2269 +#define IDS_JOIN 2270 +#define IDS_GENERAL 2271 +#define IDS_QUALITY 2272 +#define IDS_GENERAL_OPTIONS 2273 +#define IDS_QUALITY_OPTIONS 2274 +#define IDS_SERVER_ADD 2275 +#define IDS_SERVER_ADDRESS 2276 +#define IDS_SERVER_PORT 2277 +#define IDS_SERVER_NAME 2278 +#define IDS_SERVER_MINECRAFT 2279 +#define IDS_SERVER_EDIT 2280 +#define IDS_SERVER_DELETE 2281 +#define IDS_RICHPRESENCE_GAMESTATE 2282 +#define IDS_RICHPRESENCE_IDLE 2283 +#define IDS_RICHPRESENCE_MENUS 2284 +#define IDS_RICHPRESENCE_MULTIPLAYER 2285 +#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2286 +#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2287 +#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2288 +#define IDS_RICHPRESENCESTATE_BLANK 2289 +#define IDS_RICHPRESENCESTATE_RIDING_PIG 2290 +#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2291 +#define IDS_RICHPRESENCESTATE_BOATING 2292 +#define IDS_RICHPRESENCESTATE_FISHING 2293 +#define IDS_RICHPRESENCESTATE_CRAFTING 2294 +#define IDS_RICHPRESENCESTATE_FORGING 2295 +#define IDS_RICHPRESENCESTATE_NETHER 2296 +#define IDS_RICHPRESENCESTATE_CD 2297 +#define IDS_RICHPRESENCESTATE_MAP 2298 +#define IDS_RICHPRESENCESTATE_ENCHANTING 2299 +#define IDS_RICHPRESENCESTATE_BREWING 2300 +#define IDS_RICHPRESENCESTATE_ANVIL 2301 +#define IDS_RICHPRESENCESTATE_TRADING 2302 +#define IDS_RICHPRESENCESTATE_BEACON 2303 +#define IDS_RICHPRESENCESTATE_END 2304 +#define IDS_RICHPRESENCESTATE_END_POEM 2305 +#define IDS_RICHPRESENCESTATE_FIREWORKS 2306 +#define IDS_RICHPRESENCESTATE_FURNACE 2307 +#define IDS_RICHPRESENCESTATE_HOPPER 2308 +#define IDS_RICHPRESENCESTATE_HORSE 2309 +#define IDS_RICHPRESENCESTATE_RIDING_HORSE 2310 +#define IDS_RICHPRESENCESTATE_SIGN 2311 diff --git a/Minecraft.Client/Assets/MediaWindows64.arc b/Minecraft.Client/Assets/MediaWindows64.arc index 0aa542ef..c7a8e93b 100644 Binary files a/Minecraft.Client/Assets/MediaWindows64.arc and b/Minecraft.Client/Assets/MediaWindows64.arc differ diff --git a/Minecraft.Client/Common/Consoles_App.cpp b/Minecraft.Client/Common/Consoles_App.cpp index a565de17..2f2b52e9 100644 --- a/Minecraft.Client/Common/Consoles_App.cpp +++ b/Minecraft.Client/Common/Consoles_App.cpp @@ -2599,7 +2599,7 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal) break; case eGameSetting_RenderDistance: { - unsigned char ucVal=(GameSettingsA[iPad]->uiBitmaskValues >> 23) & 0x3F; + unsigned char ucVal=(GameSettingsA[iPad]->uiBitmaskValues >> 25) & 0x3F; return ucVal; } break; diff --git a/Minecraft.Client/Common/UI/IUIScene_ClassicCraftingMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_ClassicCraftingMenu.cpp index c31dff86..870820ac 100644 --- a/Minecraft.Client/Common/UI/IUIScene_ClassicCraftingMenu.cpp +++ b/Minecraft.Client/Common/UI/IUIScene_ClassicCraftingMenu.cpp @@ -1,5 +1,3 @@ -#include "stdafx.h" - #include "IUIScene_ClassicCraftingMenu.h" #include "..\..\..\Minecraft.World\net.minecraft.world.inventory.h" diff --git a/Minecraft.Client/Common/UI/UIControl_LeftIconButtonList.cpp b/Minecraft.Client/Common/UI/UIControl_LeftIconButtonList.cpp index d6b3a381..3fb411bf 100644 --- a/Minecraft.Client/Common/UI/UIControl_LeftIconButtonList.cpp +++ b/Minecraft.Client/Common/UI/UIControl_LeftIconButtonList.cpp @@ -1,5 +1,3 @@ -#include "StdAfx.h" - #include "UI.h" #include "UIControl_LeftIconButtonList.h" diff --git a/Minecraft.Client/Common/UI/UIScene_ClassicCraftingMenu.cpp b/Minecraft.Client/Common/UI/UIScene_ClassicCraftingMenu.cpp index b7a5b5cc..bbb1e99a 100644 --- a/Minecraft.Client/Common/UI/UIScene_ClassicCraftingMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_ClassicCraftingMenu.cpp @@ -1,10 +1,11 @@ -#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_ClassicCraftingMenu.h" +#include "../Tutorial/TutorialMode.h" +#include "../../Windows64/GameConfig/Minecraft.spa.h" UIScene_ClassicCraftingMenu::UIScene_ClassicCraftingMenu(int iPad, void *_initData, UILayer *parentLayer) : UIScene_AbstractContainerMenu(iPad, parentLayer) { diff --git a/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp b/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp index ba833372..709eeae1 100644 --- a/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_InGameInfoMenu.cpp @@ -247,7 +247,7 @@ void UIScene_InGameInfoMenu::handleInput(int iPad, int key, bool repeat, bool pr } break; case ACTION_MENU_Y: - if(pressed && m_playerList.hasFocus() && (m_playerList.getItemCount() > 0) && (m_playerList.getCurrentSelection() < m_players.size()) ) + if(pressed && m_playerButtonList.hasFocus() && (m_playerButtonList.getItemCount() > 0) && (m_playerButtonList.getCurrentSelection() < m_players.size()) ) { INetworkPlayer *player = g_NetworkManager.GetPlayerBySmallId(m_players[m_playerButtonList.getCurrentSelection()]->m_smallId); if( player != nullptr ) diff --git a/Minecraft.Client/Common/UI/UIScene_LoadCreateJoinMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LoadCreateJoinMenu.cpp index 028fe6ed..6b1bbc6d 100644 --- a/Minecraft.Client/Common/UI/UIScene_LoadCreateJoinMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_LoadCreateJoinMenu.cpp @@ -1,4 +1,3 @@ -#include "stdafx.h" #include "UI.h" #include "UIScene_LoadCreateJoinMenu.h" @@ -3132,33 +3131,7 @@ void UIScene_LoadCreateJoinMenu::CheckAndJoinGame(int gameIndex) } if (bHasTexturePackInstalled == false) - - { -#ifdef _XBOX - - ULONGLONG ullOfferID_Full; - - app.GetDLCFullOfferIDForPackID(m_initData->selectedSession->data.texturePackParentId, &ullOfferID_Full); - - TelemetryManager-> - RecordUpsellPresented(m_iPad, eSet_UpsellID_Texture_DLC, ullOfferID_Full & 0xFFFFFFFF); - -#endif - - UINT uiIDA[2]; - - uiIDA[0] = IDS_TEXTUREPACK_FULLVERSION; - - //uiIDA[1]=IDS_TEXTURE_PACK_TRIALVERSION; - - uiIDA[1] = IDS_CONFIRM_CANCEL; - - ui.RequestAlertMessage( - IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 2, m_iPad, - &UIScene_LoadCreateJoinMenu::TexturePackDialogReturned, this); - return; - } #ifdef __PSVITA__ diff --git a/Minecraft.Client/Consoles/PSVita/PSVita_App.cpp b/Minecraft.Client/Consoles/PSVita/PSVita_App.cpp index 6d868cae..b70ff7e6 100644 --- a/Minecraft.Client/Consoles/PSVita/PSVita_App.cpp +++ b/Minecraft.Client/Consoles/PSVita/PSVita_App.cpp @@ -1,5 +1,4 @@ - -#include "..\Common\Consoles_App.h" +#include "..\Common\Consoles_App.h" #include "..\User.h" #include "..\..\Minecraft.Client\Minecraft.h" #include "..\..\Minecraft.Client\MinecraftServer.h" @@ -1238,7 +1237,7 @@ void CConsoleMinecraftApp::Callback_SaveGameIncomplete(void *pParam, C4JStorage: if (saveIncompleteType == C4JStorage::ESaveIncomplete_OutOfQuota || saveIncompleteType == C4JStorage::ESaveIncomplete_OutOfLocalStorage) { - if(UIScene_LoadOrJoinMenu::isSaveTransferRunning()) + if(UIScene_LoadCreateJoinMenu::isSaveTransferRunning()) { // 4J MGH - if we're trying to save from the save transfer stuff, only show "ok", and we won't try to save again if(saveIncompleteType == C4JStorage::ESaveIncomplete_OutOfQuota) blocksRequired = -1; @@ -1261,7 +1260,7 @@ void CConsoleMinecraftApp::Callback_SaveGameIncomplete(void *pParam, C4JStorage: int CConsoleMinecraftApp::NoSaveSpaceReturned(void *pParam,int iPad,C4JStorage::EMessageResult result) { - if(result==C4JStorage::EMessage_ResultAccept && !UIScene_LoadOrJoinMenu::isSaveTransferRunning()) // MGH - we won't try to save again during a save tranfer + if(result==C4JStorage::EMessage_ResultAccept && !UIScene_LoadCreateJoinMenu::isSaveTransferRunning()) // MGH - we won't try to save again during a save tranfer { int blocksRequired = (int)pParam; if(blocksRequired > 0) diff --git a/Minecraft.Client/Consoles/Xbox/Xbox_App.cpp b/Minecraft.Client/Consoles/Xbox/Xbox_App.cpp index 9a5872ec..610b5bdf 100644 --- a/Minecraft.Client/Consoles/Xbox/Xbox_App.cpp +++ b/Minecraft.Client/Consoles/Xbox/Xbox_App.cpp @@ -1,5 +1,4 @@ - -#include "..\Common\UI\UIStructs.h" +#include "..\Common\UI\UIStructs.h" #include "..\Common\XUI\XUI_Intro.h" #include "..\Common\XUI\XUI_MainMenu.h" @@ -1657,7 +1656,7 @@ HRESULT CConsoleMinecraftApp::NavigateToScene(int iPad,EUIScene eScene, void *in // 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 // todo: re-enable if we fix this menu, for now its just blank! - if(false && (eScene==eUIScene_LoadOrJoinMenu) && (bSeenUpdateTextThisSession==false) && ( app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_DisplayUpdateMessage)!=0)) + if(false && (eScene==eUIScene_LoadCreateJoinMenu) && (bSeenUpdateTextThisSession==false) && ( app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_DisplayUpdateMessage)!=0)) { eScene=eUIScene_NewUpdateMessage; bSeenUpdateTextThisSession=true; @@ -1670,6 +1669,7 @@ HRESULT CConsoleMinecraftApp::NavigateToScene(int iPad,EUIScene eScene, void *in case eUIScene_PauseMenu: case eUIScene_Crafting2x2Menu: case eUIScene_Crafting3x3Menu: + case eUIScene_ClassicCraftingMenu: case eUIScene_FurnaceMenu: case eUIScene_ContainerMenu: case eUIScene_LargeContainerMenu: @@ -1736,7 +1736,7 @@ HRESULT CConsoleMinecraftApp::NavigateToScene(int iPad,EUIScene eScene, void *in case eUIScene_LeaderboardsMenu: case eUIScene_Credits: case eUIScene_CreateWorldMenu: - case eUIScene_LoadOrJoinMenu: + case eUIScene_LoadCreateJoinMenu: case eUIScene_JoinMenu: case eUIScene_DLCOffersMenu: case eUIScene_DLCMainMenu: diff --git a/Minecraft.Client/DispenserBootstrap.cpp b/Minecraft.Client/DispenserBootstrap.cpp index 1577c4e3..e69de29b 100644 --- a/Minecraft.Client/DispenserBootstrap.cpp +++ b/Minecraft.Client/DispenserBootstrap.cpp @@ -1 +0,0 @@ -#include "stdafx.h" \ No newline at end of file diff --git a/Minecraft.Client/ItemFrameRenderer.cpp b/Minecraft.Client/ItemFrameRenderer.cpp index 17e44891..faff7570 100644 --- a/Minecraft.Client/ItemFrameRenderer.cpp +++ b/Minecraft.Client/ItemFrameRenderer.cpp @@ -80,7 +80,7 @@ void ItemFrameRenderer::drawBlockFrame(shared_ptr itemFrame) tileRenderer->clearFixedShape(); glPopMatrix(); - tileRenderer->setFixedTexture(Tile::wood->getTexture(Facing::UP, TreeTile::BIRCH_TRUNK)); + tileRenderer->setFixedTexture(Tile::wood->getTexture(Facing::UP, LogTile::BIRCH_TRUNK)); // Bottom glPushMatrix(); diff --git a/Minecraft.Client/LeashKnotModel.cpp b/Minecraft.Client/LeashKnotModel.cpp index 3d909600..d5d6c98f 100644 --- a/Minecraft.Client/LeashKnotModel.cpp +++ b/Minecraft.Client/LeashKnotModel.cpp @@ -1,4 +1,3 @@ -#include "stdafx.h"; #include "LeashKnotModel.h" #include "ModelPart.h" diff --git a/Minecraft.Client/LevelRenderer.h b/Minecraft.Client/LevelRenderer.h index 0cc263b1..34d05eae 100644 --- a/Minecraft.Client/LevelRenderer.h +++ b/Minecraft.Client/LevelRenderer.h @@ -50,7 +50,7 @@ public: static constexpr int CHUNK_Y_COUNT = Level::maxBuildHeight / CHUNK_SIZE; - static constexpr int MAX_COMMANDBUFFER_ALLOCATIONS = 2048 * 2048 * 2048; // DURANGO: 512. ORBIS: 448. PS3: 110. X360: 55 + static constexpr int MAX_COMMANDBUFFER_ALLOCATIONS = 2047 * 1024 * 1024; // DURANGO: 512. ORBIS: 448. PS3: 110. X360: 55 public: LevelRenderer(Minecraft *mc, Textures *textures); diff --git a/Minecraft.Client/PSVita/PSVita_App.cpp b/Minecraft.Client/PSVita/PSVita_App.cpp deleted file mode 100644 index 84c3b79f..00000000 --- a/Minecraft.Client/PSVita/PSVita_App.cpp +++ /dev/null @@ -1,1705 +0,0 @@ - -#include "stdafx.h" -#include "..\Common\Consoles_App.h" -#include "..\User.h" -#include "..\..\Minecraft.Client\Minecraft.h" -#include "..\..\Minecraft.Client\MinecraftServer.h" -#include "..\..\Minecraft.Client\PlayerList.h" -#include "..\..\Minecraft.Client\ServerPlayer.h" -#include "..\..\Minecraft.World\Level.h" -#include "..\..\Minecraft.World\LevelSettings.h" -#include "..\..\Minecraft.World\BiomeSource.h" -#include "..\..\Minecraft.World\LevelType.h" -#include "..\..\Minecraft.World\StringHelpers.h" -#include "PSVita\Network\SonyRemoteStorage_Vita.h" -#include "PSVita\Network\SonyCommerce_Vita.h" -#include "..\..\Common\Network\Sony\SonyRemoteStorage.h" -#include "PSVita/Network/PSVita_NPToolkit.h" -#include -#include -#include "Common\UI\UI.h" -#include "PSVita\PSVitaExtras\PSVitaStrings.h" - -#define VITA_COMMERCE_ENABLED -CConsoleMinecraftApp app; - -CConsoleMinecraftApp::CConsoleMinecraftApp() : CMinecraftApp() -{ - memset(&m_ThumbnailBuffer,0,sizeof(ImageFileBuffer)); - memset(&m_SaveImageBuffer,0,sizeof(ImageFileBuffer)); - memset(&ProductCodes,0,sizeof(PRODUCTCODES)); - - m_bVoiceChatAndUGCRestricted=false; - m_bDisplayFullVersionPurchase=false; - - m_ProductListA=nullptr; - - m_pRemoteStorage = new SonyRemoteStorage_Vita; - - m_bSaveIncompleteDialogRunning = false; - m_bSaveDataDeleteDialogState = eSaveDataDeleteState_idle; - - m_pSaveToDelete = nullptr; - m_pCheckoutProductInfo = nullptr; -} - -void CConsoleMinecraftApp::SetRichPresenceContext(int iPad, int contextId) -{ - ProfileManager.SetRichPresenceContextValue(iPad,CONTEXT_GAME_STATE,contextId); -} - -char *CConsoleMinecraftApp::GetProductCode() -{ - return ProductCodes.chProductCode; -} -char *CConsoleMinecraftApp::GetSaveFolderPrefix() -{ - return ProductCodes.chSaveFolderPrefix; -} -char *CConsoleMinecraftApp::GetCommerceCategory() -{ - return ProductCodes.chCommerceCategory; -} -char *CConsoleMinecraftApp::GetTexturePacksCategoryID() -{ - return nullptr; // ProductCodes.chTexturePackID; -} -char *CConsoleMinecraftApp::GetUpgradeKey() -{ - return ProductCodes.chUpgradeKey; -} -EProductSKU CConsoleMinecraftApp::GetProductSKU() -{ - return ProductCodes.eProductSKU; -} -bool CConsoleMinecraftApp::IsJapaneseSKU() -{ - return ProductCodes.eProductSKU == e_sku_SCEJ; - -} -bool CConsoleMinecraftApp::IsEuropeanSKU() -{ - return ProductCodes.eProductSKU == e_sku_SCEE; - -} -bool CConsoleMinecraftApp::IsAmericanSKU() -{ - return ProductCodes.eProductSKU == e_sku_SCEA; - -} -// char *CConsoleMinecraftApp::GetSKUPostfix() -// { -// return ProductCodes.chSkuPostfix; -// } - -SONYDLC *CConsoleMinecraftApp::GetSONYDLCInfo(char *pchTitle) -{ - wstring wstrTemp=convStringToWstring(pchTitle); - - auto it = m_SONYDLCMap.find(wstrTemp); - if(it == m_SONYDLCMap.end()) - { - app.DebugPrintf("Couldn't find DLC info for %s\n", pchTitle); - assert(0); - return nullptr; - } - return it->second; - - /*wstring wstrTemp=convStringToWstring(pchTitle); - SONYDLC *pTemp=m_SONYDLCMap.at(wstrTemp); - - return pTemp;*/ -} - -SONYDLC *CConsoleMinecraftApp::GetSONYDLCInfo(int iTexturePackID) -{ - for (auto it = m_SONYDLCMap.begin(); it != m_SONYDLCMap.end(); ++it) - { - if(it->second->iConfig == iTexturePackID) - return it->second; - } - return nullptr; -} - - -#define WRAPPED_READFILE(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped) {if(ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped)==FALSE) { return FALSE;}} -BOOL CConsoleMinecraftApp::ReadProductCodes() -{ - char chDLCTitle[64]; - - // 4J-PB - Read the file containing the product codes. This will be different for the SCEE/SCEA/SCEJ builds - HANDLE file = CreateFile("PSVita/PSVitaProductCodes.bin", GENERIC_READ, 0, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); - if( file == INVALID_HANDLE_VALUE ) - { - DWORD error = GetLastError(); - app.DebugPrintf("Failed to open ProductCodes.bin with error code %d (%x)\n", error, error); - return FALSE; - } - - DWORD dwHigh=0; - DWORD dwFileSize = GetFileSize(file,&dwHigh); - - if(dwFileSize!=0) - { - DWORD bytesRead; - - WRAPPED_READFILE(file,ProductCodes.chProductCode,PRODUCT_CODE_SIZE,&bytesRead,nullptr); - WRAPPED_READFILE(file,ProductCodes.chSaveFolderPrefix,SAVEFOLDERPREFIX_SIZE,&bytesRead,nullptr); - //WRAPPED_READFILE(file,ProductCodes.chDiscSaveFolderPrefix,SAVEFOLDERPREFIX_SIZE,&bytesRead,nullptr); - WRAPPED_READFILE(file,ProductCodes.chCommerceCategory,COMMERCE_CATEGORY_SIZE,&bytesRead,nullptr); - //WRAPPED_READFILE(file,ProductCodes.chTexturePackID,SCE_NP_COMMERCE2_CATEGORY_ID_LEN,&bytesRead,nullptr); // TODO - WRAPPED_READFILE(file,ProductCodes.chUpgradeKey,UPGRADE_KEY_SIZE,&bytesRead,nullptr); - //WRAPPED_READFILE(file,ProductCodes.chSkuPostfix,SKU_POSTFIX_SIZE,&bytesRead,nullptr); - - app.DebugPrintf("ProductCodes.chProductCode %s\n",ProductCodes.chProductCode); - app.DebugPrintf("ProductCodes.chSaveFolderPrefix %s\n",ProductCodes.chSaveFolderPrefix); - //app.DebugPrintf("ProductCodes.chDiscSaveFolderPrefix %s\n",ProductCodes.chDiscSaveFolderPrefix); - app.DebugPrintf("ProductCodes.chCommerceCategory %s\n",ProductCodes.chCommerceCategory); - //app.DebugPrintf("ProductCodes.chTexturePackID %s\n",ProductCodes.chTexturePackID); - app.DebugPrintf("ProductCodes.chUpgradeKey %s\n",ProductCodes.chUpgradeKey); - //app.DebugPrintf("ProductCodes.chSkuPostfix %s\n",ProductCodes.chSkuPostfix); - - // DLC - unsigned int uiDLC; - WRAPPED_READFILE(file,&uiDLC,sizeof(int),&bytesRead,nullptr); - - for(unsigned int i=0;ichDLCKeyname,sizeof(char)*uiVal,&bytesRead,nullptr); - - WRAPPED_READFILE(file,&uiVal,sizeof(int),&bytesRead,nullptr); - WRAPPED_READFILE(file,chDLCTitle,sizeof(char)*uiVal,&bytesRead,nullptr); - app.DebugPrintf("DLC title %s\n",chDLCTitle); - - WRAPPED_READFILE(file,&pDLCInfo->eDLCType,sizeof(int),&bytesRead,nullptr); - WRAPPED_READFILE(file,&pDLCInfo->iFirstSkin,sizeof(int),&bytesRead,nullptr); - WRAPPED_READFILE(file,&pDLCInfo->iConfig,sizeof(int),&bytesRead,nullptr); - - // push this into a vector - - wstring wstrTemp=convStringToWstring(chDLCTitle); - m_SONYDLCMap[wstrTemp]=pDLCInfo; - } - CloseHandle(file); - } - - if(strcmp(ProductCodes.chProductCode, "PCSB00560") == 0) - ProductCodes.eProductSKU = e_sku_SCEE; - else if(strcmp(ProductCodes.chProductCode, "PCSE00491") == 0) - ProductCodes.eProductSKU = e_sku_SCEA; - else if(strcmp(ProductCodes.chProductCode, "PCSG00302") == 0) - ProductCodes.eProductSKU = e_sku_SCEJ; - else - { - // unknown product ID - assert(0); - } - - return TRUE; -} - -void CConsoleMinecraftApp::StoreLaunchData() -{ -} -void CConsoleMinecraftApp::ExitGame() -{ -} -void CConsoleMinecraftApp::FatalLoadError() -{ - assert(0); -} - -void CConsoleMinecraftApp::CaptureSaveThumbnail() -{ - RenderManager.CaptureThumbnail(&m_ThumbnailBuffer); -} -void CConsoleMinecraftApp::GetSaveThumbnail(PBYTE *ppbThumbnailData,DWORD *pdwThumbnailSize,PBYTE *ppbDataImage,DWORD *pdwSizeImage) -{ - // on a save caused by a create world, the thumbnail capture won't have happened - if(m_ThumbnailBuffer.Allocated()) - { - if( ppbThumbnailData ) - { - *ppbThumbnailData= new BYTE [m_ThumbnailBuffer.GetBufferSize()]; - *pdwThumbnailSize=m_ThumbnailBuffer.GetBufferSize(); - memcpy(*ppbThumbnailData,m_ThumbnailBuffer.GetBufferPointer(),*pdwThumbnailSize); - } - m_ThumbnailBuffer.Release(); - } - else - { - if( ppbThumbnailData ) - { - // use the default image - StorageManager.GetDefaultSaveThumbnail(ppbThumbnailData,pdwThumbnailSize); - } - } - - if(m_SaveImageBuffer.Allocated()) - { - if( ppbDataImage ) - { - *ppbDataImage= new BYTE [m_SaveImageBuffer.GetBufferSize()]; - *pdwSizeImage=m_SaveImageBuffer.GetBufferSize(); - memcpy(*ppbDataImage,m_SaveImageBuffer.GetBufferPointer(),*pdwSizeImage); - } - m_SaveImageBuffer.Release(); - } - else - { - if( ppbDataImage ) - { - // use the default image - StorageManager.GetDefaultSaveImage(ppbDataImage,pdwSizeImage); - } - } -} - -void CConsoleMinecraftApp::ReleaseSaveThumbnail() -{ - -} - -void CConsoleMinecraftApp::GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize) -{ - -} - -int CConsoleMinecraftApp::GetLocalTMSFileIndex(WCHAR *wchTMSFile,bool bFilenameIncludesExtension,eFileExtensionType eEXT) -{ - return -1; -} - - -int CConsoleMinecraftApp::LoadLocalTMSFile(WCHAR *wchTMSFile) -{ - return -1; -} - -int CConsoleMinecraftApp::LoadLocalTMSFile(WCHAR *wchTMSFile, eFileExtensionType eExt) -{ - return -1; -} - -void CConsoleMinecraftApp::FreeLocalTMSFiles(eTMSFileType eType) -{ - -} - -void CConsoleMinecraftApp::TemporaryCreateGameStart() -{ - ////////////////////////////////////////////////////////////////////////////////////////////// From CScene_Main::OnInit - - app.setLevelGenerationOptions(nullptr); - - // From CScene_Main::RunPlayGame - Minecraft *pMinecraft=Minecraft::GetInstance(); - app.ReleaseSaveThumbnail(); - ProfileManager.SetLockedProfile(0); - pMinecraft->user->name = L"Vita"; - app.ApplyGameSettingsChanged(0); - - ////////////////////////////////////////////////////////////////////////////////////////////// From CScene_MultiGameJoinLoad::OnInit - MinecraftServer::resetFlags(); - - // From CScene_MultiGameJoinLoad::OnNotifyPressEx - app.SetTutorialMode( false ); - app.SetCorruptSaveDeleted(false); - - ////////////////////////////////////////////////////////////////////////////////////////////// From CScene_MultiGameCreate::CreateGame - - app.ClearTerrainFeaturePosition(); - wstring wWorldName = L"TestWorld"; - - bool isFlat = false; - int64_t seedValue = 0;//BiomeSource::findSeed(isFlat?LevelType::lvl_flat:LevelType::lvl_normal); // 4J - was (new Random())->nextLong() - now trying to actually find a seed to suit our requirements - - NetworkGameInitData *param = new NetworkGameInitData(); - param->seed = seedValue; - param->saveData = nullptr; - - g_NetworkManager.HostGame(0,false,true,MINECRAFT_NET_MAX_PLAYERS,0); - - app.SetGameHostOption(eGameHostOption_Difficulty,0); - app.SetGameHostOption(eGameHostOption_FriendsOfFriends,0); - app.SetGameHostOption(eGameHostOption_Gamertags,1); - app.SetGameHostOption(eGameHostOption_BedrockFog,1); - - app.SetGameHostOption(eGameHostOption_GameType,GameType::CREATIVE->getId()); - app.SetGameHostOption(eGameHostOption_LevelType, 0 ); - app.SetGameHostOption(eGameHostOption_Structures, 1 ); - app.SetGameHostOption(eGameHostOption_BonusChest, 0 ); - - app.SetGameHostOption(eGameHostOption_PvP, 1); - app.SetGameHostOption(eGameHostOption_TrustPlayers, 1 ); - app.SetGameHostOption(eGameHostOption_FireSpreads, 1 ); - app.SetGameHostOption(eGameHostOption_TNT, 1 ); - app.SetGameHostOption(eGameHostOption_HostCanFly, 1); - app.SetGameHostOption(eGameHostOption_HostCanChangeHunger, 1); - app.SetGameHostOption(eGameHostOption_HostCanBeInvisible, 1 ); - - 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 ); - - param->settings = app.GetGameHostOption( eGameHostOption_All ); - - g_NetworkManager.FakeLocalPlayerJoined(); - - LoadingInputParams *loadingParams = new LoadingInputParams(); - loadingParams->func = &CGameNetworkManager::RunNetworkGameThreadProc; - loadingParams->lpParam = (LPVOID)param; - - // Reset the autosave time - app.SetAutosaveTimerTime(); - - C4JThread* thread = new C4JThread(loadingParams->func, loadingParams->lpParam, "RunNetworkGame"); - thread->Run(); -} - - -// COMMERCE / DLC - -void CConsoleMinecraftApp::CommerceInit() -{ - m_bCommerceCategoriesRetrieved=false; - m_bCommerceProductListRetrieved=false; - m_bCommerceInitialised=false; - m_bProductListAdditionalDetailsRetrieved=false; -#ifdef VITA_COMMERCE_ENABLED - m_pCommerce= new SonyCommerce_Vita; -#endif - m_eCommerce_State=eCommerce_State_Offline; // can only init when we have a PSN user - m_ProductListRetrievedC=0; - m_ProductListAdditionalDetailsC=0; - m_ProductListCategoriesC=0; - m_iCurrentCategory=0; - m_iCurrentProduct=0; - memset(m_pchSkuID,0,48); -} - -void CConsoleMinecraftApp::CommerceTick() -{ -#ifdef VITA_COMMERCE_ENABLED - // only tick this if the primary user is signed in to the PSN - if(ProfileManager.IsSignedInLive(0)) - { - switch(m_eCommerce_State) - { - case eCommerce_State_Offline: - m_eCommerce_State=eCommerce_State_Init; - break; - case eCommerce_State_Init: - m_eCommerce_State=eCommerce_State_Init_Pending; - m_pCommerce->CreateSession(&CConsoleMinecraftApp::CommerceInitCallback, this); - break; - case eCommerce_State_GetCategories: - m_eCommerce_State=eCommerce_State_GetCategories_Pending; - // get all categories for this product - m_pCommerce->GetCategoryInfo(&CConsoleMinecraftApp::CommerceGetCategoriesCallback, this, &m_CategoryInfo,app.GetCommerceCategory()); - - break; - case eCommerce_State_GetProductList: - { - m_eCommerce_State=eCommerce_State_GetProductList_Pending; - SonyCommerce::CategoryInfo *pCategories=app.GetCategoryInfo(); - std::list::iterator iter = pCategories->subCategories.begin(); - - for(int i=0;iGetProductList(&CConsoleMinecraftApp::CommerceGetProductListCallback, this, &m_ProductListA[m_ProductListRetrievedC],category.categoryId); - } - - break; - case eCommerce_State_AddProductInfoDetailed: - { - m_eCommerce_State=eCommerce_State_AddProductInfoDetailed_Pending; - - // for each of the products in the categories, get the detailed info. We really only need the long description and price info. - SonyCommerce::CategoryInfo *pCategories=app.GetCategoryInfo(); - std::list::iterator iter = pCategories->subCategories.begin(); - for(int i=0;i*pvProductList=&m_ProductListA[m_iCurrentCategory]; - - // 4J-PB - there may be no products in the category - if(pvProductList->size()==0) - { - CConsoleMinecraftApp::CommerceAddDetailedProductInfoCallback(this,0); - } - else - { - assert(pvProductList->size() > m_iCurrentProduct); - SonyCommerce::ProductInfo *pProductInfo=&(pvProductList->at(m_iCurrentProduct)); - m_pCommerce->AddDetailedProductInfo(&CConsoleMinecraftApp::CommerceAddDetailedProductInfoCallback, this, pProductInfo,pProductInfo->productId,category.categoryId); - } - } - break; - case eCommerce_State_Checkout: - m_pCommerce->CreateSession(&CConsoleMinecraftApp::CheckoutSessionStartedCallback, this); - m_eCommerce_State=eCommerce_State_Checkout_WaitingForSession; - break; - case eCommerce_State_Checkout_SessionStarted: - m_eCommerce_State=eCommerce_State_Checkout_Pending; - ((SonyCommerce_Vita*)m_pCommerce)->Checkout(&CConsoleMinecraftApp::CommerceCheckoutCallback, this,m_pCheckoutProductInfo); - break; - - case eCommerce_State_RegisterDLC: - { - m_eCommerce_State=eCommerce_State_Online; - // register the DLC info - SonyCommerce::CategoryInfo *pCategories=app.GetCategoryInfo(); - std::list::iterator iter = pCategories->subCategories.begin(); - for(int i=0;i*pvProductList=&m_ProductListA[i]; - for(int j=0;jsize();j++) - { - SonyCommerce::ProductInfo *pProductInfo=&(pvProductList->at(j)); - // just want the final 16 characters of the product id - RegisterDLCData(&pProductInfo->productId[20],0,pProductInfo->imageUrl); - } - iter++; - } - } - break; - - case eCommerce_State_DownloadAlreadyPurchased: - m_pCommerce->CreateSession(&CConsoleMinecraftApp::DownloadAlreadyPurchasedSessionStartedCallback, this); - m_eCommerce_State=eCommerce_State_DownloadAlreadyPurchased_WaitingForSession; - break; - case eCommerce_State_DownloadAlreadyPurchased_SessionStarted: - m_eCommerce_State=eCommerce_State_DownloadAlreadyPurchased_Pending; - m_pCommerce->DownloadAlreadyPurchased(&CConsoleMinecraftApp::CommerceCheckoutCallback, this,m_pchSkuID); - break; - - - case eCommerce_State_UpgradeTrial: - m_pCommerce->CreateSession(&CConsoleMinecraftApp::UpgradeTrialSessionStartedCallback, this); - m_eCommerce_State=eCommerce_State_UpgradeTrial_WaitingForSession; - break; - case eCommerce_State_UpgradeTrial_SessionStarted: - m_pCommerce->UpgradeTrial(&CConsoleMinecraftApp::CommerceCheckoutCallback, this); - m_eCommerce_State=eCommerce_State_UpgradeTrial_Pending; - break; - } - - // 4J-PB - bit of a hack to display the full version purchase after signing in during a trial trophy popup - if(m_bDisplayFullVersionPurchase && ((m_eCommerce_State==eCommerce_State_Online) || (m_eCommerce_State==eCommerce_State_Error))) - { - m_bDisplayFullVersionPurchase=false; - ProfileManager.DisplayFullVersionPurchase(false,ProfileManager.GetPrimaryPad(),eSen_UpsellID_Full_Version_Of_Game); - } - } - else - { - // was the primary player signed in and is now signed out? - if(m_eCommerce_State!=eCommerce_State_Offline) - { - m_eCommerce_State=eCommerce_State_Offline; - - // clear out all the product info - ClearCommerceDetails(); - - m_pCommerce->CloseSession(); - } - } -#endif // VITA_COMMERCE_ENABLED -} - -bool CConsoleMinecraftApp::GetCommerceCategoriesRetrieved() -{ - return m_bCommerceCategoriesRetrieved; -} - -bool CConsoleMinecraftApp::GetCommerceProductListRetrieved() -{ - return m_bCommerceProductListRetrieved; -} - -bool CConsoleMinecraftApp::GetCommerceProductListInfoRetrieved() -{ - return m_bProductListAdditionalDetailsRetrieved; -} - -#ifdef VITA_COMMERCE_ENABLED -SonyCommerce::CategoryInfo *CConsoleMinecraftApp::GetCategoryInfo() -{ - if(m_bCommerceCategoriesRetrieved==false) - { - return nullptr; - } - - return &m_CategoryInfo; -} -#endif - -void CConsoleMinecraftApp::ClearCommerceDetails() -{ -#ifdef VITA_COMMERCE_ENABLED - for(int i=0;i* pProductList=&m_ProductListA[i]; - pProductList->clear(); - } - - if(m_ProductListA!=nullptr) - { - delete [] m_ProductListA; - m_ProductListA=nullptr; - } - - m_ProductListRetrievedC=0; - m_ProductListAdditionalDetailsC=0; - m_ProductListCategoriesC=0; - m_iCurrentCategory=0; - m_iCurrentProduct=0; - m_bCommerceCategoriesRetrieved=false; - m_bCommerceInitialised=false; - m_bCommerceProductListRetrieved=false; - m_bProductListAdditionalDetailsRetrieved=false; - - m_CategoryInfo.subCategories.clear(); -#endif // #ifdef VITA_COMMERCE_ENABLED - -} - - -void CConsoleMinecraftApp::GetDLCSkuIDFromProductList(char * pchDLCProductID, char *pchSkuID) -{ -#ifdef VITA_COMMERCE_ENABLED - - // find the DLC - for(int i=0;i* pProductList=&m_ProductListA[i]; - auto itEnd = pProductList->end(); - - for (auto it = pProductList->begin(); it != itEnd; it++) - { - SonyCommerce::ProductInfo Info=*it; - if(strcmp(pchDLCProductID,Info.productId)==0) - { - memcpy(pchSkuID,Info.skuId,SCE_NP_COMMERCE2_SKU_ID_LEN); - return; - } - } - } - } - return; -#endif // #ifdef VITA_COMMERCE_ENABLED - -} - -void CConsoleMinecraftApp::Checkout(char *pchSkuID) -{ - SonyCommerce::ProductInfo* productInfo = nullptr; - - for(int i=0;i* pProductList=&m_ProductListA[i]; - auto itEnd = pProductList->end(); - - for (auto it = pProductList->begin(); it != itEnd; it++) - { - SonyCommerce::ProductInfo Info=*it; - if(strcmp(pchSkuID,Info.skuId)==0) - { - productInfo = &(*it); - break; - } - } - } - } - - if(productInfo) - { - if(m_eCommerce_State==eCommerce_State_Online) - { - strcpy(m_pchSkuID,productInfo->skuId); - m_pCheckoutProductInfo = productInfo; - m_eCommerce_State=eCommerce_State_Checkout; - } - } - else - { - assert(0); - } -} - -void CConsoleMinecraftApp::DownloadAlreadyPurchased(char *pchSkuID) -{ - if(m_eCommerce_State==eCommerce_State_Online) - { - strcpy(m_pchSkuID,pchSkuID); - m_eCommerce_State=eCommerce_State_DownloadAlreadyPurchased; - } -} - -bool CConsoleMinecraftApp::UpgradeTrial() -{ - if(m_eCommerce_State==eCommerce_State_Online) - { - m_eCommerce_State=eCommerce_State_UpgradeTrial; - return true; - } - else if(m_eCommerce_State==eCommerce_State_Error) - { - UINT uiIDA[1]; - uiIDA[0]=IDS_CONFIRM_OK; - C4JStorage::EMessageResult result = ui.RequestErrorMessage( IDS_PRO_UNLOCKGAME_TITLE, IDS_NO_DLCOFFERS, uiIDA,1,ProfileManager.GetPrimaryPad()); - return true; - } - else - { - // commerce is busy - return false; - } -} - -#ifdef VITA_COMMERCE_ENABLED -std::vector* CConsoleMinecraftApp::GetProductList(int iIndex) -{ - if((m_bCommerceProductListRetrieved==false) || (m_bProductListAdditionalDetailsRetrieved==false) ) - { - return nullptr; - } - - return &m_ProductListA[iIndex]; -} -#endif // #ifdef VITA_COMMERCE_ENABLED - -bool CConsoleMinecraftApp::DLCAlreadyPurchased(char *pchTitle) -{ -#ifdef VITA_COMMERCE_ENABLED - // find the DLC - for(int i=0;i* pProductList=&m_ProductListA[i]; - auto itEnd = pProductList->end(); - - for (auto it = pProductList->begin(); it != itEnd; it++) - { - SonyCommerce::ProductInfo Info=*it; - if(strcmp(pchTitle,Info.skuId)==0) - { - if(Info.purchasabilityFlag==SCE_TOOLKIT_NP_COMMERCE_NOT_PURCHASED) - { - return false; - } - else - { - return true; - } - } - } - } - } -#endif //#ifdef VITA_COMMERCE_ENABLED - return false; -} - - - -//////////////////// -// Commerce callbacks -///////////////////// -void CConsoleMinecraftApp::CommerceInitCallback(LPVOID lpParam,int err) -{ - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - - if(err==0) - { - pClass->m_eCommerce_State=eCommerce_State_GetCategories; - } - else - { - pClass->m_eCommerce_State=eCommerce_State_Error; - pClass->m_ProductListCategoriesC=0; - pClass->m_bCommerceCategoriesRetrieved=true; - } -} - - -void CConsoleMinecraftApp::CommerceGetCategoriesCallback(LPVOID lpParam,int err) -{ -#ifdef VITA_COMMERCE_ENABLED - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - - if(err==0) - { - pClass->m_ProductListCategoriesC=pClass->m_CategoryInfo.countOfSubCategories; - // allocate the memory for the product info for each categories - if(pClass->m_CategoryInfo.countOfSubCategories>0) - { - pClass->m_ProductListA = (std::vector *) new std::vector [pClass->m_CategoryInfo.countOfSubCategories]; - pClass->m_eCommerce_State=eCommerce_State_GetProductList; - } - else - { - pClass->m_eCommerce_State=eCommerce_State_Online; - } - } - else - { - pClass->m_ProductListCategoriesC=0; - pClass->m_eCommerce_State=eCommerce_State_Error; - } - - pClass->m_bCommerceCategoriesRetrieved=true; -#endif // #ifdef VITA_COMMERCE_ENABLED - -} - -void CConsoleMinecraftApp::CommerceGetProductListCallback(LPVOID lpParam,int err) -{ - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - - if(err==0) - { - pClass->m_ProductListRetrievedC++; - // if we have more info to get, keep going with the next call - if(pClass->m_ProductListRetrievedC==pClass->m_CategoryInfo.countOfSubCategories) - { - // we're done, so now retrieve the additional product details for each product - pClass->m_eCommerce_State=eCommerce_State_AddProductInfoDetailed; - pClass->m_bCommerceProductListRetrieved=true; - } - else - { - pClass->m_eCommerce_State=eCommerce_State_GetProductList; - } - } - else - { - pClass->m_eCommerce_State=eCommerce_State_Error; - pClass->m_bCommerceProductListRetrieved=true; - } -} - -// void CConsoleMinecraftApp::CommerceGetDetailedProductInfoCallback(LPVOID lpParam,int err) -// { -// CConsoleMinecraftApp *pScene=(CConsoleMinecraftApp *)lpParam; -// -// if(err==0) -// { -// pScene->m_eCommerce_State=eCommerce_State_Idle; -// //pScene->m_bCommerceProductListRetrieved=true; -// } -// //printf("Callback hit, error 0x%08x\n", err); -// -// } - -void CConsoleMinecraftApp::CommerceAddDetailedProductInfoCallback(LPVOID lpParam,int err) -{ -#ifdef VITA_COMMERCE_ENABLED - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - - if(err==0) - { - // increment the current product counter. When this gets to the end of the products, move to the next category - pClass->m_iCurrentProduct++; - - std::vector*pvProductList=&pClass->m_ProductListA[pClass->m_iCurrentCategory]; - - // if there are no more products in this category, move to the next category (there may be no products in the category) - if(pClass->m_iCurrentProduct>=pvProductList->size()) - { - // MGH - change this to a while loop so we can skip empty categories. - do - { - pClass->m_iCurrentCategory++; - }while(pClass->m_ProductListA[pClass->m_iCurrentCategory].size() == 0 && pClass->m_iCurrentCategorym_ProductListCategoriesC); - - pClass->m_iCurrentProduct=0; - if(pClass->m_iCurrentCategory==pClass->m_ProductListCategoriesC) - { - // there are no more categories, so we're done - pClass->m_eCommerce_State=eCommerce_State_RegisterDLC; - pClass->m_bProductListAdditionalDetailsRetrieved=true; - } - else - { - // continue with the next category - pClass->m_eCommerce_State=eCommerce_State_AddProductInfoDetailed; - } - } - else - { - // continue with the next product - pClass->m_eCommerce_State=eCommerce_State_AddProductInfoDetailed; - } - } - else - { - pClass->m_eCommerce_State=eCommerce_State_Error; - pClass->m_bProductListAdditionalDetailsRetrieved=true; - pClass->m_iCurrentProduct=0; - pClass->m_iCurrentCategory=0; - } - -#endif //#ifdef VITA_COMMERCE_ENABLED - -} - -void CConsoleMinecraftApp::CommerceCheckoutCallback(LPVOID lpParam,int err) -{ - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - - if(err==0) - { - } - pClass->m_eCommerce_State=eCommerce_State_Online; -} - -void CConsoleMinecraftApp::CheckoutSessionStartedCallback(LPVOID lpParam,int err) -{ - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - if(err==0) - pClass->m_eCommerce_State=eCommerce_State_Checkout_SessionStarted; - else - pClass->m_eCommerce_State=eCommerce_State_Error; -} - -void CConsoleMinecraftApp::DownloadAlreadyPurchasedSessionStartedCallback(LPVOID lpParam,int err) -{ - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - if(err==0) - pClass->m_eCommerce_State=eCommerce_State_DownloadAlreadyPurchased_SessionStarted; - else - pClass->m_eCommerce_State=eCommerce_State_Error; -} - -void CConsoleMinecraftApp::UpgradeTrialSessionStartedCallback(LPVOID lpParam,int err) -{ - CConsoleMinecraftApp *pClass=(CConsoleMinecraftApp *)lpParam; - if(err==0) - pClass->m_eCommerce_State=eCommerce_State_UpgradeTrial_SessionStarted; - else - pClass->m_eCommerce_State=eCommerce_State_Error; -} - - -bool CConsoleMinecraftApp::GetTrialFromName(char *pchDLCName) -{ - if(pchDLCName[0]=='T') - { - return true; - } - - return false; -} - -eDLCContentType CConsoleMinecraftApp::GetDLCTypeFromName(char *pchDLCName) -{ - char chDLCType[3]; - - chDLCType[0]=pchDLCName[1]; - chDLCType[1]=pchDLCName[2]; - chDLCType[2]=0; - - app.DebugPrintf(6,"DLC - %s\n",pchDLCName); - - if(strcmp(chDLCType,"SP")==0) - { - return e_DLC_SkinPack; - } - else if(strcmp(chDLCType,"GP")==0) - { - return e_DLC_Gamerpics; - } - else if(strcmp(chDLCType,"TH")==0) - { - return e_DLC_Themes; - } - else if(strcmp(chDLCType,"AV")==0) - { - return e_DLC_AvatarItems; - } - else if(strcmp(chDLCType,"MP")==0) - { - return e_DLC_MashupPacks; - } - else if(strcmp(chDLCType,"TP")==0) - { - return e_DLC_TexturePacks; - } - else - { - return e_DLC_NotDefined; - } -} - -int CConsoleMinecraftApp::GetiConfigFromName(char *pchName) -{ - char pchiConfig[5]; - int iStrlen=strlen(pchName); - // last four character of DLC product name are the iConfig value - pchiConfig[0]=pchName[iStrlen-4]; - pchiConfig[1]=pchName[iStrlen-3]; - pchiConfig[2]=pchName[iStrlen-2]; - pchiConfig[3]=pchName[iStrlen-1]; - pchiConfig[4]=0; - - return atoi(pchiConfig); -} - -int CConsoleMinecraftApp::GetiFirstSkinFromName(char *pchName) -{ - char pchiFirstSkin[5]; - int iStrlen=strlen(pchName); - // last four character of DLC product name are the iConfig value - // four before that are the first skin id - pchiFirstSkin[0]=pchName[iStrlen-8]; - pchiFirstSkin[1]=pchName[iStrlen-7]; - pchiFirstSkin[2]=pchName[iStrlen-6]; - pchiFirstSkin[3]=pchName[iStrlen-5]; - pchiFirstSkin[4]=0; - - return atoi(pchiFirstSkin); -} - -// void CConsoleMinecraftApp::SetVoiceChatAndUGCRestricted(bool bRestricted) -//{ -// m_bVoiceChatAndUGCRestricted=bRestricted; -//} - -// bool CConsoleMinecraftApp::GetVoiceChatAndUGCRestricted(void) -//{ -// return m_bVoiceChatAndUGCRestricted; -//} - - -int CConsoleMinecraftApp::GetCommerceState() -{ - return m_eCommerce_State; -} - -// bool g_bCalledJoin = false; -void CConsoleMinecraftApp::AppEventTick() -{ - int res = SCE_OK; - SceAppMgrAppState appStatus; - res = sceAppMgrGetAppState(&appStatus); - -// if(!g_bCalledJoin) -// { -// SceAppUtilNpBasicJoinablePresenceParam joinParam = {0}; -// strcpy(joinParam.npId.handle.data, "Mark4J"); -// SQRNetworkManager_Vita::GetJoinablePresenceDataAndProcess(&joinParam); -// } - if(res == SCE_OK) - { - if (appStatus.appEventNum > 0) - { - SceAppUtilAppEventParam eventParam; - memset(&eventParam, 0, sizeof(SceAppUtilAppEventParam)); - res = sceAppUtilReceiveAppEvent(&eventParam); - if (res == SCE_OK) - { - if (SCE_APPUTIL_APPEVENT_TYPE_NP_APP_DATA_MESSAGE == eventParam.type) - { - PSVitaNPToolkit::getMessageData(&eventParam); - // Messaging::Interface::retrieveMessageAttachment(&eventParam,&s_attachment); - } - else if(SCE_APPUTIL_APPEVENT_TYPE_NP_BASIC_JOINABLE_PRESENCE == eventParam.type) - { - PSVitaNPToolkit::getMessageData(&eventParam); - } - else - { - app.DebugPrintf("unknown app event : 0x%08x\n", eventParam.type); - assert(0); - } - } - } - - if (appStatus.systemEventNum > 0) - { - SceAppMgrSystemEvent systemEvent; - memset(&systemEvent, 0, sizeof(SceAppMgrSystemEvent)); - res = sceAppMgrReceiveSystemEvent( &systemEvent ); - if (res == SCE_OK) - { - switch(systemEvent.systemEvent) - { - case SCE_APPMGR_SYSTEMEVENT_ON_STORE_PURCHASE: - SonyCommerce_Vita::checkBackgroundDownloadStatus(); - break; - case SCE_APPMGR_SYSTEMEVENT_ON_RESUME: - app.DebugPrintf("SCE_APPMGR_SYSTEMEVENT_ON_RESUME event received\n"); - break; - - case SCE_APPMGR_SYSTEMEVENT_ON_NP_MESSAGE_ARRIVED: - app.DebugPrintf("SCE_APPMGR_SYSTEMEVENT_ON_NP_MESSAGE_ARRIVED event received\n"); - break; - case SCE_APPMGR_SYSTEMEVENT_ON_STORE_REDEMPTION: - app.DebugPrintf("SCE_APPMGR_SYSTEMEVENT_ON_STORE_REDEMPTION event received\n"); - break; - default: - app.DebugPrintf("unknown sys event : 0x%08x\n", systemEvent.systemEvent); - assert(0); - break; - } - } - } - } -} - - -bool CConsoleMinecraftApp::CheckForEmptyStore(int iPad) -{ - SonyCommerce::CategoryInfo *pCategories=app.GetCategoryInfo(); - - bool bEmptyStore=true; - if(pCategories!=nullptr) - { - if(pCategories->countOfProducts>0) - { - bEmptyStore=false; - } - else - { - for(int i=0;icountOfSubCategories;i++) - { - std::vector*pvProductInfo=app.GetProductList(i); - if(pvProductInfo->size()>0) - { - bEmptyStore=false; - break; - } - } - } - } - - if(bEmptyStore) - { - ProfileManager.ShowSystemMessage( SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_EMPTY_STORE, iPad ); - } - - return bEmptyStore; -} - - -void printSaveState() -{ -#ifndef _CONTENT_PACKAGE - string strState; - switch (StorageManager.GetSaveState()) - { - case C4JStorage::ESaveGame_Idle: strState = "ESaveGame_Idle"; break; - case C4JStorage::ESaveGame_Save: strState = "ESaveGame_Save"; break; - case C4JStorage::ESaveGame_SaveCompleteSuccess: strState = "ESaveGame_SaveCompleteSuccess"; break; - case C4JStorage::ESaveGame_SaveCompleteFail: strState = "ESaveGame_SaveCompleteFail"; break; - case C4JStorage::ESaveGame_SaveIncomplete: strState = "ESaveGame_SaveIncomplete"; break; - case C4JStorage::ESaveGame_SaveIncomplete_WaitingOnResponse: strState = "ESaveGame_SaveIncomplete_WaitingOnResponse"; break; - case C4JStorage::ESaveGame_Load: strState = "ESaveGame_Load"; break; - case C4JStorage::ESaveGame_LoadCompleteSuccess: strState = "ESaveGame_LoadCompleteSuccess"; break; - case C4JStorage::ESaveGame_LoadCompleteFail: strState = "ESaveGame_LoadCompleteFail"; break; - case C4JStorage::ESaveGame_Delete: strState = "ESaveGame_Delete"; break; - case C4JStorage::ESaveGame_DeleteSuccess: strState = "ESaveGame_DeleteSuccess"; break; - case C4JStorage::ESaveGame_DeleteFail: strState = "ESaveGame_DeleteFail"; break; - case C4JStorage::ESaveGame_Rename: strState = "ESaveGame_Rename"; break; - case C4JStorage::ESaveGame_RenameSuccess: strState = "ESaveGame_RenameSuccess"; break; - case C4JStorage::ESaveGame_RenameFail: strState = "ESaveGame_RenameFail"; break; - case C4JStorage::ESaveGame_GetSaveThumbnail: strState = "ESaveGame_GetSaveThumbnail"; break; - case C4JStorage::ESaveGame_GetSaveInfo: strState = "ESaveGame_GetSaveInfo"; break; - case C4JStorage::ESaveGame_SaveCache: strState = "ESaveGame_SaveCache"; break; - case C4JStorage::ESaveGame_ReconstructCache: strState = "ESaveGame_ReconstructCache"; break; - } - - app.DebugPrintf("[printSaveState] GetSaveState == %s.\n", strState.c_str()); -#endif -} - - -void CConsoleMinecraftApp::SaveDataTick() -{ - //CD - We must check the savedata for odd failures that require messages - //CD - This is based on the Orbis and Durango code and solves TRC issue - - //Are there any errors? - //SaveData? - - if (m_bSaveIncompleteDialogRunning) - { - updateSaveIncompleteDialog(); - return; - } - - if (sceSaveDataDialogGetStatus() != SCE_COMMON_DIALOG_STATUS_NONE) - { - updateSaveDataDeleteDialog(); - } - - switch (m_bSaveDataDeleteDialogState) - { - case eSaveDataDeleteState_idle: - return; - - case eSaveDataDeleteState_waitingForUser: - case eSaveDataDeleteState_userConfirmation: - case eSaveDataDeleteState_deleting: - return; - - case eSaveDataDeleteState_abort: - case eSaveDataDeleteState_continue: - { - C4JStorage::ESaveGameState eGameState = StorageManager.GetSaveState(); - printSaveState(); - - if (eGameState == C4JStorage::ESaveGame_SaveIncomplete_WaitingOnResponse) - { - if (m_bSaveDataDeleteDialogState == eSaveDataDeleteState_abort) - { - app.DebugPrintf("[SaveDataTick] eSaveDataDeleteState_abort.\n"); - StorageManager.CancelIncompleteOperation(); - } - else if (m_bSaveDataDeleteDialogState == eSaveDataDeleteState_continue) - { - app.DebugPrintf("[SaveDataTick] eSaveDataDeleteState_continue.\n"); - StorageManager.ContinueIncompleteOperation(); - } - } - else if (eGameState == C4JStorage::ESaveGame_Idle) - { - app.DebugPrintf("[SaveDataTick] Storage Manager is idle, SaveDataDialog reverting to idle state too.\n"); - } - - m_bSaveDataDeleteDialogState = eSaveDataDeleteState_idle; - } - return; - } - - -#if 0 - C4JStorage::ESaveIncompleteType errorType = StorageManager.GetSaveError(); - if (errorType == C4JStorage::ESaveIncomplete_None) errorType = StorageManager.GetOptionsSaveError(); - - if (errorType == C4JStorage::ESaveIncomplete_OutOfQuota) - { - initSaveDataDeleteDialog(); - } - else if (errorType == C4JStorage::ESaveIncomplete_OutOfLocalStorage) - { - //initSaveIncompleteDialog(1); - } - else if (errorType != C4JStorage::ESaveIncomplete_None) - { - app.DebugPrintf("[SaveDataTick] Unknown save error from StorageManager.\n"); - } - - - //TRC - Quota Failure - if( errorType == C4JStorage::ESaveIncomplete_OutOfQuota ) - { - UINT uiIDA[1]; - uiIDA[0]=IDS_CONFIRM_OK; - C4JStorage::EMessageResult res = ui.RequestErrorMessage( IDS_SAVE_INCOMPLETE_TITLE, IDS_SAVE_INCOMPLETE_EXPLANATION_QUOTA, uiIDA, 1, ProfileManager.GetPrimaryPad()); - if( res != C4JStorage::EMessage_Busy ) - { - //Clear the error now it's been dealt with - StorageManager.ClearSaveError(); - StorageManager.ClearOptionsSaveError(); - } - } -#endif -} - -void CConsoleMinecraftApp::Callback_SaveGameIncomplete(void *pParam, C4JStorage::ESaveIncompleteType saveIncompleteType, int blocksRequired) -{ - app.DebugPrintf( - "[Callback_SaveGameIncomplete] saveIncompleteType=%i, blocksRequired=%i,\n", - saveIncompleteType, blocksRequired - ); - - if (saveIncompleteType == C4JStorage::ESaveIncomplete_OutOfQuota || saveIncompleteType == C4JStorage::ESaveIncomplete_OutOfLocalStorage) - { - if(UIScene_LoadCreateJoinMenu::isSaveTransferRunning()) - { - // 4J MGH - if we're trying to save from the save transfer stuff, only show "ok", and we won't try to save again - if(saveIncompleteType == C4JStorage::ESaveIncomplete_OutOfQuota) blocksRequired = -1; - UINT uiIDA[1]; - uiIDA[0]=IDS_CONFIRM_OK; - C4JStorage::EMessageResult res = ui.RequestErrorMessage( IDS_SAVE_INCOMPLETE_TITLE, IDS_SAVE_INCOMPLETE_EXPLANATION_QUOTA, uiIDA, 1, ProfileManager.GetPrimaryPad(), &NoSaveSpaceReturned, (void *)blocksRequired); - - } - else - { - // 4J Stu - If it's quota then we definitely have to delete our saves, so don't show the system UI for this case - if(saveIncompleteType == C4JStorage::ESaveIncomplete_OutOfQuota) blocksRequired = -1; - UINT uiIDA[2]; - uiIDA[0]=IDS_CONFIRM_OK; - uiIDA[1]=IDS_CONFIRM_CANCEL; - C4JStorage::EMessageResult res = ui.RequestErrorMessage( IDS_SAVE_INCOMPLETE_TITLE, IDS_SAVE_INCOMPLETE_EXPLANATION_QUOTA, uiIDA, 2, ProfileManager.GetPrimaryPad(), &NoSaveSpaceReturned, (void *)blocksRequired); - } - } -} - -int CConsoleMinecraftApp::NoSaveSpaceReturned(void *pParam,int iPad,C4JStorage::EMessageResult result) -{ - if(result==C4JStorage::EMessage_ResultAccept && !UIScene_LoadCreateJoinMenu::isSaveTransferRunning()) // MGH - we won't try to save again during a save tranfer - { - int blocksRequired = (int)pParam; - if(blocksRequired > 0) - { - app.initSaveIncompleteDialog(blocksRequired); - } - else - { - app.initSaveDataDeleteDialog(); - } - } - else - { - StorageManager.CancelIncompleteOperation(); - StorageManager.ClearSaveError(); - StorageManager.ClearOptionsSaveError(); - } - - return 0; -} - -int CConsoleMinecraftApp::cbConfirmDeleteMessageBox(void *pParam, int iPad, const C4JStorage::EMessageResult result) -{ - CConsoleMinecraftApp *pClass = (CConsoleMinecraftApp*) pParam; - - if (pClass != nullptr && pClass->m_pSaveToDelete != nullptr) - { - if (result == C4JStorage::EMessage_ResultDecline) - { - pClass->m_bSaveDataDeleteDialogState = eSaveDataDeleteState_deleting; - C4JStorage::ESaveGameState eDeleteStatus = StorageManager.DeleteSaveData(pClass->m_pSaveToDelete, cbSaveDataDeleted, pClass); - } - else - { - pClass->initSaveDataDeleteDialog(); - } - } - else - { - pClass->initSaveDataDeleteDialog(); - - // 4J-JEV: This could leave the storage library in a waiting for user state. - //pClass->m_bSaveDataDeleteDialogState = eSaveDataDeleteState_idle; - } - return 0; -} - -void CConsoleMinecraftApp::initSaveIncompleteDialog(int spaceNeeded) -{ - SceSaveDataDialogParam param; - sceSaveDataDialogParamInit(¶m); - - SceSaveDataDialogSystemMessageParam sysParam; - ZeroMemory(&sysParam,sizeof(SceSaveDataDialogSystemMessageParam)); - param.sysMsgParam = &sysParam; - - param.mode = SCE_SAVEDATA_DIALOG_MODE_SYSTEM_MSG; - param.dispType = SCE_SAVEDATA_DIALOG_TYPE_SAVE; - - param.sysMsgParam->sysMsgType = SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NOSPACE_CONTINUABLE; - param.sysMsgParam->value = (SceInt32) spaceNeeded; - - SceInt32 ret = sceSaveDataDialogInit(¶m); - if (ret == SCE_OK) - { - m_bSaveIncompleteDialogRunning = true; - InputManager.SetMenuDisplayed(0,true); - ProfileManager.SetSysUIShowing(true); - ui.SetSysUIShowing(true); - } - else - { - app.DebugPrintf("[SaveDataIncompleteDialog] ERROR: INITIALISING DIALOG, sceSaveDataDialogInit() (0x%x).\n", ret); - } - -} - -void CConsoleMinecraftApp::updateSaveIncompleteDialog() -{ - SceCommonDialogStatus dialogStatus = sceSaveDataDialogGetStatus(); - if (dialogStatus == SCE_COMMON_DIALOG_STATUS_RUNNING) - { - SceCommonDialogStatus dialogSubStatus = sceSaveDataDialogGetSubStatus(); - - if (dialogSubStatus == SCE_COMMON_DIALOG_STATUS_RUNNING) - { - // Wait for user. - } - else if (dialogSubStatus == SCE_COMMON_DIALOG_STATUS_FINISHED) - { - SceSaveDataDialogFinishParam finishParam; - ZeroMemory(&finishParam, sizeof(SceSaveDataDialogFinishParam)); - finishParam.flag = SCE_SAVEDATA_DIALOG_FINISH_FLAG_DEFAULT; - - SceInt32 ret = sceSaveDataDialogFinish(&finishParam); - if (ret != SCE_OK) - { - app.DebugPrintf("[SaveDataIncompleteDialog] ERROR: UPDATING DIALOG, sceSaveDataDialogFinish() (0x%x).\n", ret); - } - } - } - else if (dialogStatus == SCE_COMMON_DIALOG_STATUS_FINISHED) - { - SceInt32 ret = sceSaveDataDialogTerm(); - if (ret == SCE_OK) - { - finishSaveIncompleteDialog(); - } - else - { - app.DebugPrintf("[SaveDataIncompleteDialog] ERROR: TERMINATING DIALOG, sceSaveDataDialogTerm() (0x%x).\n", ret); - } - } -} - -void CConsoleMinecraftApp::finishSaveIncompleteDialog() -{ - m_bSaveIncompleteDialogRunning = false; - InputManager.SetMenuDisplayed(0,false); - ProfileManager.SetSysUIShowing(false); - ui.SetSysUIShowing(false); - - StorageManager.ClearSaveError(); - StorageManager.ClearOptionsSaveError(); - - initSaveDataDeleteDialog(); -} - -void CConsoleMinecraftApp::initSaveDataDeleteDialog() -{ - SceSaveDataDialogParam param; - getSaveDataDeleteDialogParam( ¶m ); - - SceInt32 ret = sceSaveDataDialogInit(¶m); - if (ret == SCE_OK) - { - app.DebugPrintf("[SaveDataDeleteDialog] Successfully initialised SaveDataDelete dialog.\n"); - - m_bSaveDataDeleteDialogState = eSaveDataDeleteState_waitingForUser; - - InputManager.SetMenuDisplayed(0,true); - ProfileManager.SetSysUIShowing(true); - ui.SetSysUIShowing(true); - - // Start getting saves data to use when deleting. - if (StorageManager.ReturnSavesInfo() == nullptr) - { - C4JStorage::ESaveGameState eSGIStatus - = StorageManager.GetSavesInfo( - ProfileManager.GetPrimaryPad(), - nullptr, - this, - "save" - ); - } - - // Dim background because sony doesn't do that. - ui.showComponent(0, eUIComponent_MenuBackground, eUILayer_Tooltips, eUIGroup_Fullscreen, true); - - StorageManager.SetSaveDisabled(true); - EnterSaveNotificationSection(); - } - else - { - app.DebugPrintf("[SaveDataDeleteDialog] ERROR: INITIALISING DIALOG, sceSaveDataDialogInit() (0x%x).\n", ret); - } - - releaseSaveDataDeleteDialogParam( ¶m ); -} - -void CConsoleMinecraftApp::updateSaveDataDeleteDialog() -{ - SceCommonDialogStatus dialogStatus = sceSaveDataDialogGetStatus(); - if (dialogStatus == SCE_COMMON_DIALOG_STATUS_RUNNING) - { - SceCommonDialogStatus dialogSubStatus = sceSaveDataDialogGetSubStatus(); - - if (dialogSubStatus == SCE_COMMON_DIALOG_STATUS_RUNNING) - { - // Wait for user. - } - else if (dialogSubStatus == SCE_COMMON_DIALOG_STATUS_FINISHED) - { - SceSaveDataDialogResult dialogResult; - ZeroMemory(&dialogResult, sizeof(SceSaveDataDialogResult)); - - SceInt32 ret = sceSaveDataDialogGetResult(&dialogResult); - if (ret == SCE_OK) - { - bool finishDialog = false; - - if ( dialogResult.result == SCE_COMMON_DIALOG_RESULT_USER_CANCELED - || dialogResult.result == SCE_COMMON_DIALOG_RESULT_ABORTED ) - { - app.DebugPrintf("[SaveDataDeleteDialog] CANCELED OR ABORTED!\n"); - - // 4J-JEV: Check to ensure that finishedDeletingSaves is called only once. - if (m_bSaveDataDeleteDialogState == eSaveDataDeleteState_waitingForUser) - { - finishedDeletingSaves(false); - } - - finishDialog = true; - } - - if ( dialogResult.result == SCE_COMMON_DIALOG_RESULT_OK ) - { - SceAppUtilSaveDataSlotParam slotParam; - ret = sceAppUtilSaveDataSlotGetParam( dialogResult.slotId, &slotParam, nullptr ); - - if (ret == SCE_OK) - { - int saveindex = -1; - PSAVE_INFO pSaveInfo = nullptr; - PSAVE_DETAILS pSaveDetails = StorageManager.ReturnSavesInfo(); - - if (pSaveDetails != nullptr) - { - app.DebugPrintf("[SaveDataDeleteDialog] Searching for save files:\n"); - - for (unsigned int i = 0; i < pSaveDetails->iSaveC; i++) - { - app.DebugPrintf("\t- '%s'\n", pSaveDetails->SaveInfoA[i].UTF8SaveFilename); - - void *buf1, *buf2; - buf1 = &(pSaveDetails->SaveInfoA[i].UTF8SaveFilename); - buf2 = &slotParam.title; - - if ( 0 == memcmp(buf1, buf2, MAX_SAVEFILENAME_LENGTH) ) - { - pSaveInfo = &pSaveDetails->SaveInfoA[i]; - saveindex = i; - break; - } - } - } - else - { - app.DebugPrintf("[SaveDataDeleteDialog] ERROR: PERFORMING DELETE OPERATION, pSavesDetails is null.\n"); - } - - if (pSaveInfo != nullptr) - { - app.DebugPrintf( - "[SaveDataDeleteDialog] User wishes to delete slot_%d:\n\t" - "4jsaveindex=%d, filename='%s', title='%s', subtitle='%s', size=%dKiB.\n", - dialogResult.slotId, - saveindex, - pSaveInfo->UTF8SaveFilename, - slotParam.title, - slotParam.subTitle, - slotParam.sizeKiB - ); - - UINT uiIDA[] = - { - IDS_CONFIRM_CANCEL, - IDS_CONFIRM_OK - }; - - ui.RequestErrorMessage( - IDS_TOOLTIPS_DELETESAVE, IDS_TEXT_DELETE_SAVE, - uiIDA, 2, - 0, - &cbConfirmDeleteMessageBox, this - ); - - m_bSaveDataDeleteDialogState = eSaveDataDeleteState_userConfirmation; - - m_pSaveToDelete = pSaveInfo; - } - else - { - app.DebugPrintf( - "[SaveDataDeleteDialog] ERROR: PERFORMING DELETE OPERATION, cannot find file in our saves list:\n" - "\t slotId=%i, title=%s, subtitle=%s,\n", - dialogResult.slotId, slotParam.title, slotParam.subTitle - ); - } - - finishDialog = true; - } - else - { - app.DebugPrintf("[SaveDataDeleteDialog] ERROR: UPDATING DIALOG, sceAppUtilSaveDataGetParam() (0x%x).\n", ret); - } - } - - if (finishDialog) - { - SceSaveDataDialogFinishParam finishParam; - ZeroMemory(&finishParam, sizeof(SceSaveDataDialogFinishParam)); - finishParam.flag = SCE_SAVEDATA_DIALOG_FINISH_FLAG_DEFAULT; - - sceSaveDataDialogFinish(&finishParam); - if (ret == SCE_OK) app.DebugPrintf("[SaveDataDeleteDialog] Successfully finished saveDataDialog.\n"); - else app.DebugPrintf("[SaveDataDeleteDialog] ERROR: UPDATING DIALOG, sceSaveDataDialogFinish() (0x%x).\n", ret); - } - - } - else - { - app.DebugPrintf("[SaveDataDeleteDialog] ERROR: UPDATING DIALOG, sceSaveDataDialogGetResult() (0x%x).\n", ret); - } - } - } - else if (dialogStatus == SCE_COMMON_DIALOG_STATUS_FINISHED) - { - SceInt32 ret = sceSaveDataDialogTerm(); - if (ret == SCE_OK) - { - finishSaveDataDeleteDialog(); - } - else - { - app.DebugPrintf("[SaveDataDeleteDialog] ERROR: TERMINATING DIALOG, sceSaveDataDialogTerm() (0x%x).\n", ret); - } - } -} - -void CConsoleMinecraftApp::finishSaveDataDeleteDialog() -{ - ProfileManager.SetSysUIShowing(false); - InputManager.SetMenuDisplayed(0,false); - ui.SetSysUIShowing(false); - ui.removeComponent(eUIComponent_MenuBackground, eUILayer_Tooltips, eUIGroup_Fullscreen); -} - -void CConsoleMinecraftApp::getSaveDataDeleteDialogParam(SceSaveDataDialogParam *baseParam) -{ - sceSaveDataDialogParamInit(baseParam); - - static SceSaveDataDialogListParam listParam; - ZeroMemory(&listParam, sizeof(SceSaveDataDialogListParam)); - - { - vector slots; - for (unsigned int i = 2; i < SCE_APPUTIL_SAVEDATA_SLOT_MAX; i++) - { - SceAppUtilSaveDataSlotParam slotParam; - int ret = sceAppUtilSaveDataSlotGetParam( i, &slotParam, nullptr ); - - if (ret == SCE_OK) - { - SceAppUtilSaveDataSlot slot; - ZeroMemory( &slot, sizeof(SceAppUtilSaveDataSlot) ); - - slot.id = i; - slot.status = slotParam.status; - slot.userParam = 0; - - slots.push_back( slot ); - } - } - - SceAppUtilSaveDataSlot *pSavesList = new SceAppUtilSaveDataSlot[slots.size()]; - - int slotIndex = 0; - - vector::iterator itr; - for (itr = slots.begin(); itr != slots.end(); itr++) - { - pSavesList[slotIndex] = *itr; - slotIndex++; - } - - listParam.slotListSize = slots.size(); - listParam.slotList = pSavesList; - } - - if (listParam.slotListSize > 0) listParam.focusPos = SCE_SAVEDATA_DIALOG_FOCUS_POS_LISTHEAD; - else listParam.focusPos = SCE_SAVEDATA_DIALOG_FOCUS_POS_EMPTYHEAD; - - // static SceCommonDialogColor s_bgColor, s_dColor; - // s_bgColor.r = s_dColor.r = 50; - // s_bgColor.g = s_dColor.g = 50; - // s_bgColor.b = s_dColor.b = 50; - // s_bgColor.a = s_dColor.a = 125; - // baseParam->commonParam.bgColor = &s_bgColor; - // baseParam->commonParam.dimmerColor = &s_dColor; - - - static uint8_t *strPtr = nullptr; - if (strPtr != nullptr) delete strPtr; - strPtr = mallocAndCreateUTF8ArrayFromString( IDS_TOOLTIPS_DELETESAVE ); - - listParam.listTitle = (const SceChar8 *) strPtr; - listParam.itemStyle = SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_SUBTITLE_DATE; - - baseParam->mode = SCE_SAVEDATA_DIALOG_MODE_LIST; - baseParam->dispType = SCE_SAVEDATA_DIALOG_TYPE_DELETE; - baseParam->listParam = &listParam; - - baseParam->flag = SCE_SAVEDATA_DIALOG_ENV_FLAG_DEFAULT; -} - -void CConsoleMinecraftApp::releaseSaveDataDeleteDialogParam(SceSaveDataDialogParam *baseParam) -{ - //delete baseParam->listParam; - //delete baseParam->commonParam.dimmerColor; - //delete baseParam->commonParam.bgColor; - //delete baseParam->listParam.listTitle; -} - -int CConsoleMinecraftApp::cbSaveDataDeleted( void *pParam, const bool success ) -{ - app.DebugPrintf("[SaveDataDeleteDialog] cbSaveDataDeleted(%s)\n", (success?"success":"fail")); - - CConsoleMinecraftApp *pApp = (CConsoleMinecraftApp*) pParam; - if ( pApp->m_bSaveDataDeleteDialogState == eSaveDataDeleteState_deleting ) - { - /* SceSaveDataDialogParam param; - pApp->getSaveDataDeleteDialogParam( ¶m ); - - SceInt32 ret = sceSaveDataDialogContinue(¶m); - if (ret != SCE_OK) app.DebugPrintf("[SaveDataDeleteDialog] ERROR: UPDATING DIALOG, sceSaveDataDialogContinue() (0x%x).\n", ret); - - pApp->m_bSaveDataDeleteDialogState = eSaveDataDeleteState_waitingForUser; - pApp->releaseSaveDataDeleteDialogParam( ¶m ); */ - - pApp->finishedDeletingSaves(true); - } - - return 0; -} - -void CConsoleMinecraftApp::finishedDeletingSaves(bool bContinue) -{ - app.DebugPrintf( "[finishedDeletingSaves] %s.\n", (bContinue?"Continuing":"Aborting") ); - - StorageManager.SetSaveDisabled(false); - LeaveSaveNotificationSection(); - - StorageManager.ClearSaveError(); - StorageManager.ClearOptionsSaveError(); - - - if (bContinue) m_bSaveDataDeleteDialogState = eSaveDataDeleteState_continue; - else m_bSaveDataDeleteDialogState = eSaveDataDeleteState_abort; -} \ No newline at end of file diff --git a/Minecraft.Client/StructureTable.cpp b/Minecraft.Client/StructureTable.cpp index fee882a7..0b356eec 100644 --- a/Minecraft.Client/StructureTable.cpp +++ b/Minecraft.Client/StructureTable.cpp @@ -1,4 +1,3 @@ -#include "stdafx.h" #include "StructureTable.h" #include "../Minecraft.World/StringHelpers.h" diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input.lib index c303fbb3..203c3c2c 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input.lib differ diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input_d.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input_d.lib index 4a4ca555..ac5c33b7 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input_d.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Input_d.lib differ diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile.lib index e277d7ad..1c57f98a 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile.lib differ diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile_d.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile_d.lib index d44e35fe..c46628e6 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile_d.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Profile_d.lib differ diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC.lib index e59cbf02..91972607 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC.lib differ diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC_d.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC_d.lib index df2c6aa6..0973bbae 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC_d.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Render_PC_d.lib differ diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage.lib index 6fa6b4f1..57cccfce 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage.lib differ diff --git a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage_d.lib b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage_d.lib index 62700f71..e8d8086e 100644 Binary files a/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage_d.lib and b/Minecraft.Client/Windows64/Libs/4JLibs/libs/4J_Storage_d.lib differ diff --git a/Minecraft.Client/Windows64Media/Media/languages.loc b/Minecraft.Client/Windows64Media/Media/languages.loc deleted file mode 100644 index 9415b17c..00000000 Binary files a/Minecraft.Client/Windows64Media/Media/languages.loc and /dev/null differ diff --git a/Minecraft.Client/Xbox/Xbox_App.cpp b/Minecraft.Client/Xbox/Xbox_App.cpp deleted file mode 100644 index f902e44d..00000000 --- a/Minecraft.Client/Xbox/Xbox_App.cpp +++ /dev/null @@ -1,3034 +0,0 @@ -#include "stdafx.h" - -#include "..\Common\UI\UIStructs.h" - -#include "..\Common\XUI\XUI_Intro.h" -#include "..\Common\XUI\XUI_MainMenu.h" -#include "..\Common\XUI\XUI_NewUpdateMessage.h" -#include "..\Common\XUI\XUI_HelpAndOptions.h" -#include "..\Common\XUI\XUI_TextEntry.h" -#include "..\Common\XUI\XUI_HelpHowToPlay.h" -#include "..\Common\XUI\XUI_HowToPlayMenu.h" -#include "..\Common\XUI\XUI_HelpControls.h" -#include "..\Common\XUI\XUI_TextEntry.h" -#include "..\Common\XUI\XUI_LoadSettings.h" -#include "..\Common\XUI\XUI_SettingsAll.h" -#include "..\Common\XUI\XUI_SettingsOptions.h" -#include "..\Common\XUI\XUI_SettingsAudio.h" -#include "..\Common\XUI\XUI_SettingsControl.h" -#include "..\Common\XUI\XUI_SettingsGraphics.h" -#include "..\Common\XUI\XUI_SettingsUI.h" -#include "..\Common\XUI\XUI_Leaderboards.h" -#include "..\Common\XUI\XUI_Debug.h" -#include "..\Common\XUI\XUI_DebugTips.h" -#include "..\Common\XUI\XUI_Reinstall.h" -#include "..\Common\XUI\XUI_Death.h" -#include "..\Common\XUI\XUI_DebugOverlay.h" -#include "..\Common\XUI\XUI_DLCOffers.h" -#include "..\Common\XUI\XUI_SocialPost.h" -#include "..\Common\XUI\XUI_Scene_Container.h" -#include "..\Common\XUI\XUI_Scene_Furnace.h" -#include "..\Common\XUI\XUI_Scene_Inventory.h" -#include "..\Common\XUI\XUI_Scene_Trap.h" -#include "..\Common\XUI\XUI_Control_ComboBox.h" -#include "..\Common\XUI\XUI_MultiGameInfo.h" -#include "..\Common\XUI\XUI_MultiGameJoinLoad.h" -#include "..\Common\XUI\XUI_MultiGameCreate.h" -#include "..\Common\XUI\XUI_MultiGameLaunchMoreOptions.h" -#include "..\Common\XUI\XUI_SignEntry.h" -#include "..\Common\XUI\XUI_InGameInfo.h" -#include "..\Common\XUI\XUI_TrialExitUpsell.h" -#include "..\Common\XUI\XUI_BasePlayer.h" -#include "..\Common\XUI\XUI_PartnernetPassword.h" -#include "..\Common\XUI\XUI_SaveMessage.h" -#include "..\Common\XUI\XUI_Chat.h" -#include "..\Common\XUI\XUI_SkinSelect.h" -#include "..\Common\XUI\XUI_InGameHostOptions.h" -#include "..\Common\XUI\XUI_InGamePlayerOptions.h" -#include "..\Common\XUI\XUI_Scene_Enchant.h" -#include "..\Common\XUI\XUI_Scene_BrewingStand.h" -#include "..\Common\XUI\XUI_XZP_Icons.h" -#include "..\Common\XUI\XUI_Controls.h" -#include "..\Common\XUI\XUI_Scene_Win.h" -#include "..\Common\XUI\XUI_HUD.h" -#include "..\Common\XUI\XUI_DebugSetCamera.h" -//#include "..\Common\XUI\XUI_TransferToXboxOne.h" - -#ifdef _DEBUG_MENUS_ENABLED -#include "..\Common\XUI\XUI_DebugItemEditor.h" -#endif -#ifndef _CONTENT_PACKAGE -#include "..\Common\XUI\XUI_DebugSchematicCreator.h" -#endif - -#include "..\..\Minecraft.World\Recipy.h" -#include "GameConfig\Minecraft.spa.h" -#include "..\..\Minecraft.Client\Options.h" -#include "..\..\Minecraft.World\AABB.h" -#include "..\..\Minecraft.World\Vec3.h" -#include "..\MinecraftServer.h" -#include "..\GameRenderer.h" -#include "..\ProgressRenderer.h" -#include "..\..\Minecraft.Client\LevelRenderer.h" -#include "..\..\Minecraft.Client\MobSkinMemTextureProcessor.h" - -#include "..\..\Minecraft.Client\Minecraft.h" - -#include "..\ClientConnection.h" -#include "..\MultiPlayerLocalPlayer.h" -#include "..\..\Minecraft.Client\LocalPlayer.h" -#include "..\..\Minecraft.World\Player.h" -#include "..\..\Minecraft.World\Inventory.h" -#include "..\..\Minecraft.World\Level.h" -#include "..\..\Minecraft.World\FurnaceTileEntity.h" -#include "..\..\Minecraft.World\Container.h" -#include "..\..\Minecraft.World\DispenserTileEntity.h" -#include "..\..\Minecraft.World\SignTileEntity.h" -#include "..\..\Minecraft.Client\StatsCounter.h" -#include "..\GameMode.h" -#include "Social\SocialManager.h" -#include -#include "..\Common\Tutorial\TutorialMode.h" -#include "..\..\Minecraft.Client\Xbox\XML\ATGXmlParser.h" -#include "..\..\Minecraft.Client\Xbox\XML\xmlFilesCallback.h" -#include "4JLibs\inc\4J_Input.h" -#include "Font\XUI_FontRenderer.h" -#include "..\Common\Minecraft_Macros.h" -#include "..\..\Minecraft.Client\PlayerList.h" -#include "..\..\Minecraft.Client\ServerPlayer.h" -#include "..\Common\GameRules\ConsoleGameRules.h" -#include "..\Common\GameRules\ConsoleSchematicFile.h" -#include "..\..\Minecraft.World\InputOutputStream.h" -#include "..\..\Minecraft.World\LevelSettings.h" -#include "..\User.h" - -#include "Sentient\SentientManager.h" -#include "..\..\Minecraft.World\LevelData.h" -#include "..\..\Minecraft.World\net.minecraft.world.entity.player.h" -#include "..\..\Minecraft.Client\EntityRenderDispatcher.h" -#include "..\..\Minecraft.World\compression.h" -#include "..\TexturePackRepository.h" -#include "..\TexturePack.h" -#include "..\Common\DLC\DLCAudioFile.h" -#include "..\DLCTexturePack.h" - -#include "..\Common\XUI\XUI_Intro.h" -#include "..\Common\XUI\XUI_MainMenu.h" -#include "..\Common\XUI\XUI_NewUpdateMessage.h" -#include "..\Common\XUI\XUI_HelpAndOptions.h" -#include "..\Common\XUI\XUI_TextEntry.h" -#include "..\Common\XUI\XUI_HelpHowToPlay.h" -#include "..\Common\XUI\XUI_HowToPlayMenu.h" -#include "..\Common\XUI\XUI_HelpControls.h" -#include "..\Common\XUI\XUI_TextEntry.h" -#include "..\Common\XUI\XUI_LoadSettings.h" -#include "..\Common\XUI\XUI_SettingsAll.h" -#include "..\Common\XUI\XUI_SettingsOptions.h" -#include "..\Common\XUI\XUI_SettingsAudio.h" -#include "..\Common\XUI\XUI_SettingsControl.h" -#include "..\Common\XUI\XUI_SettingsGraphics.h" -#include "..\Common\XUI\XUI_SettingsUI.h" -#include "..\Common\XUI\XUI_Leaderboards.h" -#include "..\Common\XUI\XUI_Debug.h" -#include "..\Common\XUI\XUI_DebugTips.h" -#include "..\Common\XUI\XUI_Reinstall.h" -#include "..\Common\XUI\XUI_Death.h" -#include "..\Common\XUI\XUI_DebugOverlay.h" -#include "..\Common\XUI\XUI_DLCOffers.h" -#include "..\Common\XUI\XUI_SocialPost.h" -#include "..\Common\XUI\XUI_Scene_Container.h" -#include "..\Common\XUI\XUI_Scene_Furnace.h" -#include "..\Common\XUI\XUI_Scene_Inventory.h" -#include "..\Common\XUI\XUI_Scene_Trap.h" -#include "..\Common\XUI\XUI_Control_ComboBox.h" -#include "..\Common\XUI\XUI_MultiGameInfo.h" -#include "..\Common\XUI\XUI_MultiGameJoinLoad.h" -#include "..\Common\XUI\XUI_MultiGameCreate.h" -#include "..\Common\XUI\XUI_MultiGameLaunchMoreOptions.h" -#include "..\Common\XUI\XUI_SignEntry.h" -#include "..\Common\XUI\XUI_InGameInfo.h" -#include "..\Common\XUI\XUI_TrialExitUpsell.h" -#include "..\Common\XUI\XUI_BasePlayer.h" -#include "..\Common\XUI\XUI_PartnernetPassword.h" -#include "..\Common\XUI\XUI_SaveMessage.h" -#include "..\Common\XUI\XUI_Chat.h" -#include "..\Common\XUI\XUI_SkinSelect.h" -#include "..\Common\XUI\XUI_InGameHostOptions.h" -#include "..\Common\XUI\XUI_InGamePlayerOptions.h" -#include "..\Common\XUI\XUI_Scene_Enchant.h" -#include "..\Common\XUI\XUI_Scene_BrewingStand.h" -#include "..\Common\XUI\XUI_XZP_Icons.h" -#include "..\Common\XUI\XUI_Controls.h" -#include "..\Common\XUI\XUI_Scene_Win.h" -#include "..\Common\XUI\XUI_HUD.h" -#include "..\Common\XUI\XUI_Scene_Anvil.h" -#include "..\Common\XUI\XUI_Scene_Trading.h" -#include "..\Common\XUI\XUI_Teleport.h" - -#ifdef _DEBUG_MENUS_ENABLED -#include "..\Common\XUI\XUI_DebugItemEditor.h" -#endif -#ifndef _CONTENT_PACKAGE -#include "..\Common\XUI\XUI_DebugSchematicCreator.h" -#endif - -#include "Xbox_App.h" - -CConsoleMinecraftApp app; - -LPCWSTR apwstrLocale[10] = -{ - L"", // the default locale - L"", // English - L"ja-JP", // Japanese - L"de-DE", // German - L"fr-FR", // French - L"es-ES", // Spanish - L"it-IT", // Italian - L"ko-KR", // Korean - L"zh-CHT",// Traditional Chinese - L"pt-PT" // Portuguese -}; - -WCHAR *CConsoleMinecraftApp::wchTypefaceA[]= -{ - L"Mojangles", - L"SDBookM", - L"DFGMaruGothic-Md", - L"DFHeiMedium-B5", -}; - -WCHAR *CConsoleMinecraftApp::wchTypefaceLocatorA[]= -{ - L"media/font/Mojangles.ttf", - L"media/font/KOR/BOKMSD.ttf", - L"media/font/JPN/DFGMaruGothic-Md.ttf", - L"media/font/CHT/DFHeiMedium-B5.ttf", -}; - -WCHAR *CConsoleMinecraftApp::wchSceneA[]= -{ - L"xuiscene_partnernetpassword", - L"xuiscene_intro", - L"xuiscene_savemessage", - L"xuiscene_main", - L"xuiscene_fullscreenprogress", - L"xuiscene_pause", - L"xuiscene_craftingpanel_2x2", - L"xuiscene_craftingpanel_3x3", - L"xuiscene_furnace", - L"xuiscene_container", - L"xuiscene_container_large", - L"xuiscene_inventory", - L"xuiscene_trap", - L"xuiscene_debug", - L"xuiScene_DebugTips", - L"xuiscene_helpandoptions", - L"xuiscene_howtoplay", - L"xuiscene_howtoplay_menu", - L"xuiscene_controls", - L"xuiscene_settings_options", - L"xuiscene_settings_audio", - L"xuiscene_settings_control", - L"xuiscene_settings_graphics", - L"xuiscene_settings_UI", - L"xuiscene_settings_all", - L"xuiscene_leaderboards", - L"xuiscene_credits", - L"xuiscene_death", - L"xuiscene_tutorialpopup", - L"xuiscene_multi_create", - L"xuiscene_multi_joinload", - L"xuiscene_multi_gameinfo", - L"xuiscene_signentry", - L"xuiscene_ingameinfo", - L"xuiscene_connectingprogress", - L"xuiscene_DLCOffers", - L"xuiscene_socialpost", - L"xuiscene_trialexitupsell", - L"xuiscene_load_settings", - L"xuiscene_chat", - L"xuiscene_reinstall", - L"xuiscene_skinselect", - L"xuiscene_text_entry", - L"xuiscene_ingame_host_options", - L"xuiscene_ingame_player_options", - L"xuiscene_inventory_creative", - L"xuiscene_multi_launch_more_options", - - L"xuiscene_DLCMain", - L"xuiscene_NewUpdateMessage", - L"xuiscene_enchant", - L"xuiscene_brewingstand", - L"xuiscene_win", - L"xuiscene_hud", - L"xuiscene_trading", - L"xuiscene_anvil", - L"xuiscene_teleportmenu", -// L"xuiscene_TransferToXboxOne", - -#ifdef _DEBUG_MENUS_ENABLED - L"xuiscene_debugoverlay", - L"xuiscene_debug_item_editor", -#endif -#ifndef _CONTENT_PACKAGE - L"xuiscene_debug_schematic_create", - L"xuiscene_debug_set_camera", -#endif -}; - -CConsoleMinecraftApp::CConsoleMinecraftApp() : CMinecraftApp() -{ - ZeroMemory(m_PreviewBuffer,sizeof(XSOCIAL_PREVIEWIMAGE)*XUSER_MAX_COUNT); - m_bTMSPP_GlobalFileListRead=false; - m_bRead_TMS_XUIDS_XML=false; - m_bRead_TMS_Config_XML=false; - m_bRead_TMS_DLCINFO_XML=false; - m_pXuidsFileBuffer=nullptr; - m_dwXuidsFileSize=0; - ZeroMemory(m_ScreenshotBuffer,sizeof(LPD3DXBUFFER)*XUSER_MAX_COUNT); - m_ThumbnailBuffer=nullptr; -#ifdef _DEBUG_MENUS_ENABLED - debugOverlayCreated = false; -#endif - - for(int i=0;iPitch = m_PreviewBuffer[iPad].Pitch; - preview->Width = m_PreviewBuffer[iPad].Width; - preview->Height = m_PreviewBuffer[iPad].Height; - preview->Format = m_PreviewBuffer[iPad].Format; - unsigned int sizeBytes = XGAddress2DTiledExtent(m_PreviewBuffer[iPad].Width, m_PreviewBuffer[iPad].Height, 4) * 4; - preview->pBytes = (BYTE *)XPhysicalAlloc(sizeBytes, MAXULONG_PTR, 0, PAGE_READWRITE | PAGE_WRITECOMBINE ); - memcpy( (void *)preview->pBytes, (void *)m_PreviewBuffer[iPad].pBytes, sizeBytes ); - XPhysicalFree((LPVOID)m_PreviewBuffer[iPad].pBytes); - m_PreviewBuffer[iPad].pBytes = nullptr; -} - -void CConsoleMinecraftApp::CaptureScreenshot(int iPad) -{ - RenderManager.CaptureScreen(&m_ScreenshotBuffer[iPad], &m_PreviewBuffer[iPad]); -} - - -HRESULT CConsoleMinecraftApp::LoadXuiResources() -{ - m_fontRenderer = new XUI_FontRenderer(); - - OverrideFontRenderer(true); - - const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string - WCHAR szResourceLocator[ LOCATOR_SIZE ]; - HRESULT hr; - - // load from the .xzp file - const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(nullptr); - - - //#ifdef _CONTENT_PACKAGE - // Get the current language setting from the console - DWORD dwLanguage = XGetLanguage( ); - -// if( dwLanguage>=sizeof( apwstrLocale )/sizeof( apwstrLocale[0] ) ) -// { -// // Use default locale if out of bounds -// dwLanguage = 0; -// } - // force default to English for now - //dwLanguage=1; - // Tell XUI what the locale is - - // 4J-PB - we need to load all fonts in an order, and set them as fallbacks of each other - if you save a game in an Asian language, you must be able to switch to English, and still see the Asian characters in the save name - - switch(dwLanguage) - { - - case XC_LANGUAGE_KOREAN: - //fallback to Japanese, Chinese - RegisterFont(eFont_Chinese,eFont_None); - RegisterFont(eFont_Japanese,eFont_Chinese); - RegisterFont(eFont_Korean,eFont_Japanese,true); - XuiSetLocale( L"ko-KR" ); - break; - case XC_LANGUAGE_JAPANESE: - //fallback to Korean, Chinese - RegisterFont(eFont_Chinese,eFont_None); - RegisterFont(eFont_Korean,eFont_Chinese); - RegisterFont(eFont_Japanese,eFont_Korean,true); - XuiSetLocale( L"ja-JP" ); - break; - case XC_LANGUAGE_TCHINESE: - //fallback to Korean, Japanese - RegisterFont(eFont_Japanese,eFont_None); - RegisterFont(eFont_Korean,eFont_Japanese); - RegisterFont(eFont_Chinese,eFont_Korean,true); - XuiSetLocale( L"zh-CHT" ); - break; - - - default: - //fallback to Korean,Japanese, Chinese - RegisterFont(eFont_Chinese,eFont_None); - RegisterFont(eFont_Japanese,eFont_Chinese); - RegisterFont(eFont_Korean,eFont_Japanese); - RegisterFont(eFont_European,eFont_Korean,true); - - // some locales can override the language setting - bool bOverrideLanguage=true; - - // 4J-PB - removing all the new languages until a future TU - - switch(XGetLocale()) - { -#ifdef NEW_LANGUAGES - case XC_LOCALE_CZECH_REPUBLIC: - XuiSetLocale( L"cs-CZ" ); - break; - case XC_LOCALE_DENMARK: - XuiSetLocale( L"da-DK" ); - break; - case XC_LOCALE_FINLAND: - XuiSetLocale( L"fi-FI" ); - break; - case XC_LOCALE_GREECE: - XuiSetLocale( L"el-GR" ); - break; - case XC_LOCALE_SLOVAK_REPUBLIC: - XuiSetLocale( L"sk-SK" ); - break; -#endif - default: - bOverrideLanguage=false; - break; - } - - if(bOverrideLanguage==false) - { - switch(dwLanguage) - { - case XC_LANGUAGE_ENGLISH: - switch(XGetLocale()) - { -#ifdef NEW_LANGUAGES - case XC_LOCALE_AUSTRALIA: - case XC_LOCALE_CANADA: - case XC_LOCALE_CZECH_REPUBLIC: - case XC_LOCALE_GREECE: - case XC_LOCALE_HONG_KONG: - case XC_LOCALE_HUNGARY: - case XC_LOCALE_INDIA: - case XC_LOCALE_IRELAND: - case XC_LOCALE_ISRAEL: - case XC_LOCALE_NEW_ZEALAND: - case XC_LOCALE_SAUDI_ARABIA: - case XC_LOCALE_SINGAPORE: - case XC_LOCALE_SLOVAK_REPUBLIC: - case XC_LOCALE_SOUTH_AFRICA: - case XC_LOCALE_UNITED_ARAB_EMIRATES: - case XC_LOCALE_GREAT_BRITAIN: - XuiSetLocale( L"en-GB" ); - break; -#endif - default: - XuiSetLocale( L"" ); - break; - } - break; - case XC_LANGUAGE_PORTUGUESE: - if(XGetLocale()==XC_LOCALE_BRAZIL) - { - // Brazilian Portuguese - XuiSetLocale( L"pt-BR" ); - } - else - { - XuiSetLocale( L"pt-PT" ); - } - break; - case XC_LANGUAGE_GERMAN: - XuiSetLocale( L"de-DE" ); - break; - case XC_LANGUAGE_FRENCH: - XuiSetLocale( L"fr-FR" ); - break; - case XC_LANGUAGE_SPANISH: - switch(XGetLocale()) - { -#ifdef NEW_LANGUAGES - case XC_LOCALE_ARGENTINA: - case XC_LOCALE_CHILE: - case XC_LOCALE_COLOMBIA: - case XC_LOCALE_MEXICO: - case XC_LOCALE_UNITED_STATES: - XuiSetLocale( L"es-MX" ); - break; -#endif - default: - XuiSetLocale( L"es-ES" ); - break; - } - break; - case XC_LANGUAGE_ITALIAN: - XuiSetLocale( L"it-IT" ); - break; -#ifdef NEW_LANGUAGES - case XC_LANGUAGE_POLISH: - XuiSetLocale( L"pl-PL" ); - break; - case XC_LANGUAGE_RUSSIAN: - XuiSetLocale( L"ru-RU" ); - break; - case XC_LANGUAGE_SWEDISH: - XuiSetLocale( L"sv-SE" ); - break; - case XC_LANGUAGE_TURKISH: - XuiSetLocale( L"tr-TR" ); - break; - case XC_LANGUAGE_BNORWEGIAN: - XuiSetLocale( L"nb-NO" ); - break; - case XC_LANGUAGE_DUTCH: - // 4J-PB - the loc people gave us nl-BE but no nl-NL. They claim they are identical, so use nl-BE. - //if(XGetLocale()==XC_LOCALE_BELGIUM) - { - // Belgian Dutch - XuiSetLocale( L"nl-BE" ); - } -// else -// { -// XuiSetLocale( L"nl-NL" ); -// } - break; - case XC_LANGUAGE_SCHINESE: - // fall back to English until we have a font, and Microsoft are happy with the Chinese Simplified text - //XuiSetLocale( L"zh-CHS" ); - XuiSetLocale( L"" ); - break; -#endif - } - } - } - - - //#endif - - XuiSoundXACTRegister(); - XuiSoundXAudioRegister(); - - // Register a default typeface - // wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/font/Mojangles.ttf"); - // hr = RegisterDefaultTypeface( L"Mojangles",szResourceLocator); - - // Load the skin file used for the scene. - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/skin_Minecraft.xur"); - hr=LoadSkin( szResourceLocator ); - if( FAILED(hr) ) app.FatalLoadError(); - - // Storage strings - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/4J_strings.xus"); - hr=StorageManager.m_pStringTable->Load( szResourceLocator ); - if( FAILED(hr) ) app.FatalLoadError(); - - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/strings.xus"); - hr=StringTable.Load( szResourceLocator ); - if( FAILED(hr) ) app.FatalLoadError(); - - // #ifdef _DEBUG - // // dump out the text - // int iStringC=0; - // LPCWSTR lpTempString; - // - // while((lpTempString=StringTable.Lookup(iStringC))!=nullptr) - // { - // DebugPrintf("STRING %d = ",iStringC); - // OutputDebugStringW(lpTempString); - // DebugPrintf("\n"); - // iStringC++; - // } - // #endif - - - - // Load the xui scenes - - // 4J Stu - Add the tooltip/container scene to the root object - // Load the scene. - ASSERT(m_hObjRoot); - HXUIOBJ mainBaseScene; - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/"); - if(RenderManager.IsHiDef()) - { - hr=LoadFirstScene( szResourceLocator, L"xuiscene_base.xur", nullptr, &mainBaseScene ); - } - else - { - if(RenderManager.IsWidescreen()) - { - hr=LoadFirstScene( szResourceLocator, L"xuiscene_base.xur", nullptr, &mainBaseScene ); - } - else - { - hr=LoadFirstScene( szResourceLocator, L"xuiscene_base_480.xur", nullptr, &mainBaseScene ); - } - } - if( FAILED(hr) ) app.FatalLoadError(); - - XuiElementGetChildById( mainBaseScene, L"BasePlayer0", &m_PlayerBaseScene[0] ); - XuiElementGetChildById( mainBaseScene, L"BasePlayer1", &m_PlayerBaseScene[1] ); - XuiElementGetChildById( mainBaseScene, L"BasePlayer2", &m_PlayerBaseScene[2] ); - XuiElementGetChildById( mainBaseScene, L"BasePlayer3", &m_PlayerBaseScene[3] ); - - for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx) - { - XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneContainer", &m_hCurrentScene[idx]); - m_hFirstScene[idx]=m_hCurrentScene[idx]; - - XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneTutorialContainer", &m_hCurrentTutorialScene[idx]); - m_hFirstTutorialScene[idx]=m_hCurrentTutorialScene[idx]; - - XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneChatRoot", &m_hCurrentChatScene[idx]); - m_hFirstChatScene[idx]=m_hCurrentChatScene[idx]; - - WCHAR szResourceLocator[ LOCATOR_SIZE ]; - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/"); - HXUIOBJ hScene; - HRESULT hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eUIComponent_Chat, true,false), &idx, &hScene); - if( FAILED(hr) ) app.FatalLoadError(); - - hr = XuiSceneNavigateForward(m_hCurrentChatScene[idx], FALSE, hScene, idx); - if (FAILED(hr)) - { - app.DebugPrintf("chat scene navigate fail"); - XuiDestroyObject(hScene); - return hr; - } - - m_hCurrentChatScene[idx]=hScene; - - XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneHudRoot", &m_hCurrentHudScene[idx]); - m_hFirstHudScene[idx]=m_hCurrentHudScene[idx]; - - ReloadHudScene(idx, false, true); - } - - // get the "Press START to join in" message - HXUIOBJ hPressStartMessage; - - XuiElementGetChildById( mainBaseScene, L"XuiPressStartMessage", &hPressStartMessage ); - // set the text - XuiControlSetText(hPressStartMessage, GetString(IDS_PRESS_START_TO_JOIN)); - - HXUIOBJ debugContainerObj; - XuiElementGetChildById( mainBaseScene, L"XuiSceneDebugContainer", &debugContainerObj ); - debugContainerScene.Attach( debugContainerObj ); - - SetResourcesLoaded(true); - - return S_OK; - -} - -HRESULT CConsoleMinecraftApp::RegisterFont(eFont eFontLanguage,eFont eFontFallback, bool bSetAsDefault) -{ - HRESULT hr=S_OK; - const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string - WCHAR szResourceLocator[ LOCATOR_SIZE ]; - const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(nullptr); - - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", wchTypefaceLocatorA[eFontLanguage]); - // 4J Stu - Check that the font file actually exists - HXUIRESOURCE fontTempResource; - BOOL isMemoryResource; - hr = XuiResourceOpenNoLoc(szResourceLocator, &fontTempResource, &isMemoryResource); - if( FAILED(hr) ) app.FatalLoadError(); - XuiResourceClose(fontTempResource); - - if(bSetAsDefault) - { - if(eFontFallback!=eFont_None) - { - hr = RegisterDefaultTypeface( wchTypefaceA[eFontLanguage],szResourceLocator,nullptr,0.0f,wchTypefaceA[eFontFallback]); - } - else - { - hr = RegisterDefaultTypeface( wchTypefaceA[eFontLanguage],szResourceLocator); - } - } - else - { - TypefaceDescriptor typefaceDescriptorStruct; - ZeroMemory(&typefaceDescriptorStruct,sizeof(TypefaceDescriptor)); - typefaceDescriptorStruct.szTypeface=wchTypefaceA[eFontLanguage]; - typefaceDescriptorStruct.szLocator=szResourceLocator; - if(eFontFallback!=eFont_None) - { - typefaceDescriptorStruct.szFallbackTypeface= wchTypefaceA[eFontFallback]; - } - hr = XuiRegisterTypeface(&typefaceDescriptorStruct,FALSE); - } - return hr; -} - - -// TMS++ - -void CConsoleMinecraftApp::TMSPP_SetTitleGroupID(LPCSTR szTitleGroupID) -{ - StorageManager.TMSPP_SetTitleGroupID(szTitleGroupID); -} - -void CConsoleMinecraftApp::TMSPP_RetrieveFileList(int iPad,C4JStorage::eGlobalStorage eStorageFacility,CHAR *szPath,eTMSAction NextAction) -{ - app.DebugPrintf("CConsoleMinecraftApp::TMSPP_RetrieveFileList\n"); - - if(eStorageFacility==C4JStorage::eGlobalStorage_Title) - { - if(m_bTMSPP_GlobalFileListRead==false) - { - m_bTMSPP_GlobalFileListRead=true; - StorageManager.TMSPP_ReadFileList(iPad,eStorageFacility,szPath,&CConsoleMinecraftApp::Callback_TMSPPReadFileList,this,NextAction); - } - else - { - SetTMSAction(iPad,NextAction); - } - } - else - { - StorageManager.TMSPP_ReadFileList(iPad,eStorageFacility,szPath,&CConsoleMinecraftApp::Callback_TMSPPReadFileList,this,NextAction); - } - - -} - -int CConsoleMinecraftApp::Callback_TMSPPReadFileList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILE_LIST pTmsFileList) -{ - app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadFileList\n"); - CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam; - -#ifdef _DEBUG - // dump out the file list - app.DebugPrintf("TMSPP filecount - %d\n",pTmsFileList->iCount); - for(int i=0;iiCount;i++) - { - app.DebugPrintf("TMSPP - %s\n",pTmsFileList->FileDetailsA[i].szFilename); - } -#endif - // change the state to the next action - pClass->SetTMSAction(iPad,(eTMSAction)iUserData); - return 0; -} - -void CConsoleMinecraftApp::TMSPP_ReadXuidsFile(int iPad,eTMSAction NextAction) -{ - app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadXuidsFile\n"); - C4JStorage::ETMSStatus eResult; - // try reading the xuids.xml file (from TMS global) - only allowed to do this once an hour at the most, but we'll just read once each time the game launches - - if(m_bRead_TMS_XUIDS_XML==false) - { - m_bRead_TMS_XUIDS_XML=true; - - eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_Title,C4JStorage::TMS_FILETYPE_BINARY,"xuids.xml",&CConsoleMinecraftApp::Callback_TMSPPReadXuidsFile,this,NextAction); - - if(eResult!=C4JStorage::ETMSStatus_ReadInProgress) - { - // something went wrong - app.SetTMSAction(iPad,(eTMSAction)NextAction); - } - } - else - { - app.SetTMSAction(iPad,(eTMSAction)NextAction); - } -} - -int CConsoleMinecraftApp::Callback_TMSPPReadXuidsFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename) -{ - app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadXuidsFile\n"); - CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam; - if(pFileData) - { - ATG::XMLParser xmlParser; - xmlMojangCallback xmlCallback; - - xmlParser.RegisterSAXCallbackInterface( &xmlCallback ); - xmlParser.ParseXMLBuffer((CHAR *)pFileData->pbData,pFileData->dwSize); - delete [] pFileData->pbData; - delete [] pFileData; - } - - // change the state to the next action - pClass->SetTMSAction(iPad,(eTMSAction)iUserData); - - return 0; -} - -void CConsoleMinecraftApp::TMSPP_ReadConfigFile(int iPad,eTMSAction NextAction) -{ - app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadConfigFile\n"); - C4JStorage::ETMSStatus eResult; - // try reading the xuids.xml file (from TMS global) - only allowed to do this once an hour at the most, but we'll just read once each time the game launches - - if(m_bRead_TMS_Config_XML==false) - { - m_bRead_TMS_Config_XML=true; - - eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_Title,C4JStorage::TMS_FILETYPE_BINARY,"Config.xml",&CConsoleMinecraftApp::Callback_TMSPPReadConfigFile,this,NextAction); - - if(eResult!=C4JStorage::ETMSStatus_ReadInProgress) - { - // something went wrong - probably no Config.xml file exists in TMS++ - app.SetTMSAction(iPad,(eTMSAction)NextAction); - } - } - else - { - app.SetTMSAction(iPad,(eTMSAction)NextAction); - } -} - -int CConsoleMinecraftApp::Callback_TMSPPReadConfigFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename) -{ - app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadConfigFile\n"); - CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam; - if(pFileData) - { - ATG::XMLParser xmlParser; - xmlConfigCallback xmlCallback; - - xmlParser.RegisterSAXCallbackInterface( &xmlCallback ); - xmlParser.ParseXMLBuffer((CHAR *)pFileData->pbData,pFileData->dwSize); - delete [] pFileData->pbData; - delete [] pFileData; - } - - // change the state to the next action - pClass->SetTMSAction(iPad,(eTMSAction)iUserData); - - return 0; -} - - - -bool CConsoleMinecraftApp::TMSPP_ReadBannedList(int iPad,eTMSAction NextAction) -{ - app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadBannedList\n"); - C4JStorage::ETMSStatus eResult; - bool bSendBanFileRetrievedMsg=false; - - if(GetBanListRead(iPad)==false) - { - // do we have one in our user filelist? - if(StorageManager.TMSPP_InFileList(C4JStorage::eGlobalStorage_TitleUser,iPad,L"BannedList")) - { - SetBanListRead(iPad,true); - ClearBanList(iPad); - - eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::TMS_FILETYPE_BINARY,"BannedList",&CConsoleMinecraftApp::Callback_TMSPPReadBannedList,this,NextAction); - if(eResult!=C4JStorage::ETMSStatus_ReadInProgress) - { - // something went wrong - app.SetTMSAction(iPad,(eTMSAction)NextAction); - bSendBanFileRetrievedMsg=true; - } - } - else - { - // not in the list - we'll need to fall back to TMS - return false; - } - - } - else - { - bSendBanFileRetrievedMsg=true; - } - - if(bSendBanFileRetrievedMsg) - { - ui.HandleTMSBanFileRetrieved(iPad); - } - - app.SetTMSAction(iPad,(eTMSAction)NextAction); - - return true; -} - -int CConsoleMinecraftApp::Callback_TMSPPReadBannedList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename) -{ - app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadBannedList\n"); - - CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam; - - if(pFileData) - { - - // put the entries into the vector - int iEntries=pFileData->dwSize/sizeof(BANNEDLISTDATA); - PBANNEDLISTDATA pData=(PBANNEDLISTDATA)pFileData->pbData; - - for(int i=0;iAddLevelToBannedLevelList(iPad,pData[i].xuid,pData[i].pszLevelName, false); - } - // mark the level as not checked against banned levels - it'll be checked once the level starts - app.SetBanListCheck(iPad,false); - - delete [] pFileData->pbData; - delete [] pFileData; - } - ui.HandleTMSBanFileRetrieved(iPad); - - // change the state to the next action - pClass->SetTMSAction(iPad,(eTMSAction)iUserData); - - return 0; -} - -void CConsoleMinecraftApp::TMSPP_ReadDLCFile(int iPad,eTMSAction NextAction) -{ - app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadDLCFile\n"); - bool bRetrievedDLCFile=false; - // try reading the DLC.xml file (from TMS global) - only allowed to do this once an hour at the most, but we'll just read once each time the game launches - C4JStorage::ETMSStatus eResult; - if(m_bRead_TMS_DLCINFO_XML==false) - { - //m_bRead_TMS_DLCINFO_XML=true; - - eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_Title,C4JStorage::TMS_FILETYPE_BINARY,"DLC.cmp",&CConsoleMinecraftApp::Callback_TMSPPReadDLCFile,this,NextAction); - if(eResult!=C4JStorage::ETMSStatus_ReadInProgress) - { - // something went wrong - app.SetTMSAction(iPad,(eTMSAction)NextAction); - bRetrievedDLCFile=true; - } - } - else - { - bRetrievedDLCFile=true; - } - - if(bRetrievedDLCFile) - { - ui.HandleTMSDLCFileRetrieved(iPad); - - app.SetTMSAction(iPad,(eTMSAction)NextAction); - } -} - -int CConsoleMinecraftApp::Callback_TMSPPReadDLCFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename) -{ - app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadDLCFile\n"); - CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam; - - if(pFileData && pFileData->dwSize>0) - { - // the DLC.xml file is now compressed - - unsigned int uiDecompSize=*(unsigned int *)pFileData->pbData; - unsigned int uiCompSize=((unsigned int *)pFileData->pbData)[1]; - - BYTE *pDecompressedData = new BYTE [uiDecompSize]; - - Compression::getCompression()->Decompress(pDecompressedData,&uiDecompSize,&((unsigned int *)pFileData->pbData)[2],uiCompSize); - delete [] pFileData->pbData; - delete [] pFileData; - - ATG::XMLParser xmlParser; - xmlDLCInfoCallback xmlCallback; - - xmlParser.RegisterSAXCallbackInterface( &xmlCallback ); - xmlParser.ParseXMLBuffer((CHAR *)pDecompressedData,uiDecompSize); - - pClass->m_bRead_TMS_DLCINFO_XML=true; - - delete pDecompressedData; - } - - ui.HandleTMSDLCFileRetrieved(iPad); - - // change the state to the next action - pClass->SetTMSAction(iPad,(eTMSAction)iUserData); - - return 0; -} - - -void CConsoleMinecraftApp::ReadBannedList(int iPad,eTMSAction NextAction, bool bCallback) -{ - // try reading the banned level list file (from TMS User) - only allowed to do this once an hour at the most, but we'll just read once each time the user signs in - - if(GetBanListCheck(iPad)==false) - { - SetBanListCheck(iPad,true); - ClearBanList(iPad); - - //StorageManager.DeleteTMSFile(iPad,C4JStorage::eGlobalStorage_TitleUser,L"BannedList"); - C4JStorage::ETMSStatus eTMSStatus; - if(bCallback) - { - eTMSStatus=StorageManager.ReadTMSFile(iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::eTMS_FileType_Normal,L"BannedList",&BannedListA[iPad].pBannedList, &BannedListA[iPad].dwBytes,&CConsoleMinecraftApp::CallbackBannedListFileFromTMS,this,NextAction); - } - else - { - eTMSStatus=StorageManager.ReadTMSFile(iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::eTMS_FileType_Normal,L"BannedList",&BannedListA[iPad].pBannedList, &BannedListA[iPad].dwBytes); - - if(eTMSStatus==C4JStorage::ETMSStatus_Idle) - { - // put the entries into the vector - int iEntries=BannedListA[iPad].dwBytes/sizeof(BANNEDLISTDATA); - PBANNEDLISTDATA pData=(PBANNEDLISTDATA)BannedListA[iPad].pBannedList; - - for(int i=0;iBannedListA[iPad].dwBytes>0) - { - // put the entries into the vector - int iEntries=pClass->BannedListA[iPad].dwBytes/sizeof(BANNEDLISTDATA); - PBANNEDLISTDATA pData=(PBANNEDLISTDATA)pClass->BannedListA[iPad].pBannedList; - - for(int i=0;iAddLevelToBannedLevelList(iPad,pData[i].xuid,pData[i].pszLevelName, false); - } - - // mark the level as not checked against banned levels - it'll be checked once the level starts - app.SetBanListCheck(iPad,false); - - } - app.SetTMSAction(iPad,(eTMSAction)iAction); - - ui.HandleTMSBanFileRetrieved(iPad); - - return 0; -} - -void CConsoleMinecraftApp::OverrideFontRenderer(bool set, bool immediate) -{ - // 4J Stu - Only relevant to XUI on Xbox360 -#ifdef _XBOX - // We don't want to even attempt using our font renderer in the asian languages - switch(XGetLanguage()) - { - case XC_LANGUAGE_JAPANESE: - case XC_LANGUAGE_TCHINESE: - case XC_LANGUAGE_KOREAN: - return; - break; - } - - if(set != m_bFontRendererOverridden) - { - if( immediate ) - { - XuiElementDiscardResources( m_hObjRoot, XUI_DISCARD_FONTS ); - if( set ) - { - XuiFontSetRenderer( m_fontRenderer ); - } - else - { - XuiFontSetRenderer( nullptr ); - } - m_bFontRendererOverridden = set; - - if( GetResourcesLoaded() ) - { - // tell the xui scenes the font renderer changed - XUIMessage xuiMsg; - CustomMessage_FontRendererChange( &xuiMsg); - - // send the message - for(int i=0;iGetBufferSize()]; - *pdwSize=m_ThumbnailBuffer->GetBufferSize(); - memcpy(*pbData,m_ThumbnailBuffer->GetBufferPointer(),*pdwSize); - } - m_ThumbnailBuffer->Release(); - m_ThumbnailBuffer=nullptr; - } -} -void CConsoleMinecraftApp::ReleaseSaveThumbnail() -{ - if(m_ThumbnailBuffer!=nullptr) - { - m_ThumbnailBuffer->Release(); - m_ThumbnailBuffer=nullptr; - } -} - -void CConsoleMinecraftApp::GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize) -{ - // on a save caused by a create world, the thumbnail capture won't have happened - if(m_ScreenshotBuffer[iPad]!=nullptr) - { - *pbData= new BYTE [m_ScreenshotBuffer[iPad]->GetBufferSize()]; - *pdwSize=m_ScreenshotBuffer[iPad]->GetBufferSize(); - memcpy(*pbData,m_ScreenshotBuffer[iPad]->GetBufferPointer(),*pdwSize); - m_ScreenshotBuffer[iPad]->Release(); - m_ScreenshotBuffer[iPad]=nullptr; - } -} - -#ifdef _DEBUG_MENUS_ENABLED -void CConsoleMinecraftApp::EnableDebugOverlay(bool enable,int iPad) -{ - HRESULT hr = S_OK; - - if(enable && !debugOverlayCreated) - { - const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(nullptr); - - const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string - WCHAR szResourceLocator[ LOCATOR_SIZE ]; - - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/"); - hr = XuiSceneCreate(szResourceLocator, L"xuiscene_debugoverlay.xur", nullptr, &m_hDebugOverlay); - debugContainerScene.AddChild(m_hDebugOverlay); - debugContainerScene.SetShow(false); - - debugOverlayCreated = true; - } - if(enable) - { - XuiElementSetUserFocus(m_hDebugOverlay, iPad); - } - else - { - XuiElementSetUserFocus(m_hCurrentScene[iPad], iPad); - } - debugContainerScene.SetShow(enable); - SetMenuDisplayed(ProfileManager.GetPrimaryPad(),enable); -} -#endif - -bool CConsoleMinecraftApp::GetMenuDisplayed(int iPad) -{ - return m_bMenuDisplayed[iPad]; -} - -void CConsoleMinecraftApp::SetMenuDisplayed(int iPad,bool bVal) -{ - if(iPad==XUSER_INDEX_ANY) return; - - if(bVal) - { - if(iPad==XUSER_INDEX_ANY) - { - for(int i=0;i= 0 ) ) idx = iPad; - } - auto itEnd = m_sceneStack[idx].end(); - for (auto it = m_sceneStack[idx].begin(); it != itEnd; it++) - { - if(it->first == eScene) - { - inStack = true; - break; - } - } - - return inStack; -} - -WCHAR *CConsoleMinecraftApp::GetSceneName(EUIScene eScene,bool bAppendToName,bool bSplitscreenScene) -{ - wcscpy(m_SceneName,wchSceneA[eScene]); - if(bAppendToName) - { - if(RenderManager.IsHiDef()) - { - if(bSplitscreenScene) - { - wcscat(m_SceneName,L"_small"); - } - } - else - { - // if it's low def, but widescreen, then use the small scenes - if(!RenderManager.IsWidescreen()) - { - wcscat(m_SceneName,L"_480"); - } - - } - } - wcscat(m_SceneName,L".xur"); - -#ifdef _DEBUG -#ifndef __PS3__ - OutputDebugStringA("SCENE LOAD - "); - OutputDebugStringW(m_SceneName); - app.DebugPrintf("\n"); -#endif __PS3__ -#endif - - return m_SceneName; -} - -HRESULT CConsoleMinecraftApp::NavigateToScene(int iPad,EUIScene eScene, void *initData /* = nullptr */, bool forceUsePad /*= false*/, BOOL bStayVisible /* = FALSE */, HXUIOBJ *phResultingScene /*= nullptr*/ ) -{ - ASSERT(m_bDefaultTypefaceRegistered); - ASSERT(m_bSkinLoaded); - static bool bSeenUpdateTextThisSession=false; - - // make sure we've created the main canvas already - ASSERT(m_hObjRoot); - if (!m_hObjRoot) - return E_UNEXPECTED; - - // If you're navigating to the multigamejoinload, and the player hasn't seen the updates message yet, display it now - // display this message the first 3 times - // todo: re-enable if we fix this menu, for now its just blank! - if(false && (eScene==eUIScene_LoadCreateJoinMenu) && (bSeenUpdateTextThisSession==false) && ( app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_DisplayUpdateMessage)!=0)) - { - eScene=eUIScene_NewUpdateMessage; - bSeenUpdateTextThisSession=true; - } - // if you're trying to navigate to the inventory,the crafting, pause or game info or any of the trigger scenes and there's already a menu up (because you were pressing a few buttons at the same time) then ignore the navigate - if(GetMenuDisplayed(iPad)) - { - switch(eScene) - { - case eUIScene_PauseMenu: - case eUIScene_Crafting2x2Menu: - case eUIScene_Crafting3x3Menu: - case eUIScene_ClassicCraftingMenu: - case eUIScene_FurnaceMenu: - case eUIScene_ContainerMenu: - case eUIScene_LargeContainerMenu: - case eUIScene_InventoryMenu: - case eUIScene_CreativeMenu: - case eUIScene_DispenserMenu: - case eUIScene_SignEntryMenu: - case eUIScene_InGameInfoMenu: - case eUIScene_EnchantingMenu: - case eUIScene_BrewingStandMenu: - case eUIScene_AnvilMenu: - case eUIScene_TradingMenu: - DebugPrintf("IGNORING NAVIGATE - we're trying to navigate to a user selected scene when there's already a scene up: pad:%d, scene:%d\n", iPad, eScene); - return S_FALSE; - break; - } - } - - // load from the .xzp file - const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(nullptr); - - HXUIOBJ hScene; - HRESULT hr; - const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string - WCHAR szResourceLocator[ LOCATOR_SIZE ]; - - wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/"); - - // If the init data is null, put the player pad in there - - if(initData==nullptr) - { - initData = &iPad; - } - - int idx = 0; - if( m_bGameStarted || forceUsePad ) - { - // If the game isn't running treat as user 0, otherwise map index directly from pad - if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad; - } - else - { - // The game isn't running, so make sure this scene is fullscreen - CXuiSceneBase::SetPlayerBaseScenePosition( idx, CXuiSceneBase::e_BaseScene_Fullscreen ); - } - - if( eScene != eUIComponent_TutorialPopup && eScene != eUIComponent_Chat && eScene != eUIScene_HUD ) - { - SetMenuDisplayed(idx,true); - } - - PIXBeginNamedEvent(0,"Xui scene create\n"); - MemSect(4); - - bool bIsHiDef=RenderManager.IsHiDef(); - bool bIsSplitscreen = GetLocalPlayerCount()>1; - BOOL bSceneIsFullscreen = CXuiSceneBase::GetPlayerBasePosition(idx)==CXuiSceneBase::e_BaseScene_Fullscreen; - - switch(eScene) - { - case eUIScene_Intro: - case eUIScene_MainMenu: - case eUIScene_LeaderboardsMenu: - case eUIScene_Credits: - case eUIScene_CreateWorldMenu: - case eUIScene_LoadCreateJoinMenu: - case eUIScene_JoinMenu: - case eUIScene_DLCOffersMenu: - case eUIScene_DLCMainMenu: - case eUIScene_TrialExitUpsell: - case eUIScene_SaveMessage: - case eUIScene_LoadMenu: - case eUIScene_LaunchMoreOptionsMenu: - // if we're in low res widescreen, we just want to use the normal scenes for these - if(!bIsHiDef && RenderManager.IsWidescreen()) - { - hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene,false, false), initData, &hScene); - } - else - { - hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene, true,false), initData, &hScene); - } - break; - default: - // some scenes are forced into fullscreen even though we are insplitscreen mode (saving) - if(eScene==eUIComponent_TutorialPopup || eScene==eUIComponent_Chat || eScene==eUIScene_HUD) - { - hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene,true,bIsSplitscreen), initData, &hScene); - } - else - { - hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene,true,bIsSplitscreen && !bSceneIsFullscreen), initData, &hScene); - } - break; - } - if( FAILED(hr) ) app.FatalLoadError(); - - MemSect(0); - PIXEndNamedEvent(); -#if 0 - D3DXVECTOR3 test; - test.x = 0.5f; - test.y = 0.5f; - test.z = 1.0f; - XuiElementSetScale(hScene,&test); -#endif - - if( eScene == eUIComponent_TutorialPopup ) - { - hr = XuiSceneNavigateForward(m_hCurrentTutorialScene[iPad], FALSE, hScene, XUSER_INDEX_NONE); - if (FAILED(hr)) - { - app.DebugPrintf("scene navigate fail"); - XuiDestroyObject(hScene); - return hr; - } - - m_hCurrentTutorialScene[iPad]=hScene; - } - else if( eScene == eUIComponent_Chat ) - { - hr = XuiSceneNavigateForward(m_hCurrentChatScene[iPad], FALSE, hScene, XUSER_INDEX_NONE); - if (FAILED(hr)) - { - app.DebugPrintf("scene navigate fail"); - XuiDestroyObject(hScene); - return hr; - } - - m_hCurrentChatScene[iPad]=hScene; - } - else if( eScene == eUIScene_HUD ) - { - hr = XuiSceneNavigateForward(m_hCurrentHudScene[iPad], FALSE, hScene, XUSER_INDEX_NONE); - if (FAILED(hr)) - { - app.DebugPrintf("scene navigate fail"); - XuiDestroyObject(hScene); - return hr; - } - - m_hCurrentHudScene[iPad]=hScene; - } - else - { - MemSect(5); - hr = XuiSceneNavigateForward(m_hCurrentScene[idx], bStayVisible, hScene, iPad); - MemSect(0); - if (FAILED(hr)) - { - app.DebugPrintf("scene navigate fail"); - XuiDestroyObject(hScene); - return hr; - } - - m_hCurrentScene[idx] = hScene; - m_sceneStack[idx].push_back( SceneStackPair(eScene, hScene) ); - - if(eScene==eUIScene_Intro) - { - m_bIntroRunning=true; - } - } - - switch(eScene) - { - case eUIScene_PauseMenu: - { - m_bPauseMenuDisplayed[iPad] = true; - - Minecraft *pMinecraft = Minecraft::GetInstance(); - if(pMinecraft != nullptr && pMinecraft->localgameModes[iPad] != nullptr ) - { - TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[iPad]; - - // This just allows it to be shown - gameMode->getTutorial()->showTutorialPopup(false); - } - } - break; - case eUIScene_Crafting2x2Menu: - case eUIScene_Crafting3x3Menu: - case eUIScene_FurnaceMenu: - case eUIScene_ContainerMenu: - case eUIScene_LargeContainerMenu: - case eUIScene_InventoryMenu: - case eUIScene_CreativeMenu: - case eUIScene_DispenserMenu: - case eUIScene_BrewingStandMenu: - case eUIScene_EnchantingMenu: - case eUIScene_AnvilMenu: - case eUIScene_TradingMenu: - m_bContainerMenuDisplayed[iPad]=true; - - // Intentional fall-through - case eUIScene_DeathMenu: - case eUIScene_FullscreenProgress: - case eUIScene_SignEntryMenu: - case eUIScene_EndPoem: - m_bIgnoreAutosaveMenuDisplayed[iPad] = true; - break; - } - - switch(eScene) - { - case eUIScene_FullscreenProgress: - case eUIScene_EndPoem: - m_bIgnorePlayerJoinMenuDisplayed[iPad] = true; - break; - } - - if(phResultingScene!=nullptr) - { - *phResultingScene=hScene; - } - - if (FAILED(hr)) - return hr; - - return S_OK; -} - -HRESULT CConsoleMinecraftApp::NavigateBack(int iPad, bool forceUsePad /*= false*/, EUIScene eScene /*= eUIScene_COUNT*/) -{ - HXUIOBJ hCur; - HXUIOBJ hBack; - - int idx = 0; - if( m_bGameStarted || forceUsePad ) - { - // If the game isn't running treat as user 0, otherwise map index directly from pad - if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad; - } - - hCur=m_hCurrentScene[idx]; - - if(eScene == eUIScene_COUNT) - { - hBack = XuiSceneGetBackScene(m_hCurrentScene[idx]); - if (!hBack) - return S_FALSE; - - m_sceneStack[idx].pop_back(); - } - else - { - for(auto it = m_sceneStack[idx].begin(), end = m_sceneStack[idx].end(); it != end; ++it) - { - if(it->first == eScene) - { - hBack = it->second; - } - } - - if (!hBack) - return S_FALSE; - - while( !m_sceneStack[idx].empty() && m_sceneStack[idx].back().second != hBack) - { - m_sceneStack[idx].pop_back(); - } - } - m_hCurrentScene[idx]=hBack; - - if( m_hCurrentScene[idx] == this->m_hFirstScene[idx] ) SetMenuDisplayed(idx,false); - - CXuiSceneBase::PlayUISFX(eSFX_Back); - return XuiSceneNavigateBack(hCur, hBack,iPad ); -} - -HRESULT CConsoleMinecraftApp::TutorialSceneNavigateBack(int iPad, bool forceUsePad /*= false*/) -{ - HXUIOBJ hCur; - HXUIOBJ hBack; - - int idx = 0; - if( m_bGameStarted || forceUsePad ) - { - // If the game isn't running treat as user 0, otherwise map index directly from pad - if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad; - } - - hCur=m_hCurrentTutorialScene[idx]; - hBack = XuiSceneGetBackScene(m_hCurrentTutorialScene[idx]); - if (!hBack) - return S_FALSE; - m_hCurrentTutorialScene[idx]=hBack; - - return XuiSceneNavigateBack(hCur, hBack,iPad ); -} - -HRESULT CConsoleMinecraftApp::CloseXuiScenes(int iPad, bool forceUsePad /*= false*/) -{ - HRESULT hr; - - int idx = 0; - if( m_bGameStarted || forceUsePad ) - { - // If the game isn't running treat as user 0, otherwise map index directly from pad - if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad; - } - - hr=XuiSceneNavigateBackToFirst(m_hCurrentScene[idx],iPad); - m_hCurrentScene[idx]=m_hFirstScene[idx]; - m_sceneStack[idx].clear(); - - CXuiSceneBase::ShowBackground(iPad, FALSE ); - CXuiSceneBase::ShowDarkOverlay(iPad, FALSE ); - CXuiSceneBase::ShowLogo(iPad, FALSE ); - - m_bPauseMenuDisplayed[iPad] = false; - m_bContainerMenuDisplayed[iPad] = false; - m_bIgnoreAutosaveMenuDisplayed[iPad] = false; - m_bIgnorePlayerJoinMenuDisplayed[iPad] = false; - - ui.SetTooltips( iPad, -1, -1, -1, -1 ); - SetMenuDisplayed(iPad,false); - - // Hide the tutorial popup for this player - if(m_bGameStarted) - { - CScene_TutorialPopup::SetSceneVisible(iPad,FALSE); - } - - Minecraft *pMinecraft = Minecraft::GetInstance(); - if(pMinecraft != nullptr && pMinecraft->localgameModes[iPad] != nullptr ) - { - TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[iPad]; - - // This just allows it to be shown - gameMode->getTutorial()->showTutorialPopup(true); - } - - // update the rich presence - // Are we offline or online, and how many players are there - if(g_NetworkManager.GetPlayerCount()>1) - { - for(int i=0;ilocalplayers[i]) - { - if(g_NetworkManager.IsLocalGame()) - { - ProfileManager.SetCurrentGameActivity(i,CONTEXT_PRESENCE_MULTIPLAYEROFFLINE,false); - } - else - { - ProfileManager.SetCurrentGameActivity(i,CONTEXT_PRESENCE_MULTIPLAYER,false); - } - } - } - } - else - { - if(m_bGameStarted && pMinecraft->localplayers[idx]) - { - if(g_NetworkManager.IsLocalGame()) - { - ProfileManager.SetCurrentGameActivity(iPad,CONTEXT_PRESENCE_MULTIPLAYER_1POFFLINE,false); - } - else - { - ProfileManager.SetCurrentGameActivity(iPad,CONTEXT_PRESENCE_MULTIPLAYER_1P,false); - } - } - } - // because a player leaving can cause other players close scenes to be called, and they may have been crafting, I'll run - // the presence update for all players - - for(int i=0;ilocalplayers[i]) - { - pMinecraft->localplayers[i]->updateRichPresence(); - } - } - - return hr; -} - -HRESULT CConsoleMinecraftApp::CloseAllPlayersXuiScenes() -{ - HRESULT hr = S_OK; - - // 4J Stu - Fix for #11211 - TCR 015 BAS Sign In Changes: One time-occurrence where users were unable to access any in-game menus after several sign-in changes - // We only hide them during a save, but this could be interrupted - CXuiSceneBase::ShowOtherPlayersBaseScene(0, true); - - for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx) - { - CloseXuiScenes(idx, true); - ReloadChatScene(idx, false, true); - ReloadHudScene(idx, false, true); - } - - return hr; -} - -HRESULT CConsoleMinecraftApp::CloseXuiScenesAndNavigateToScene(int iPad,EUIScene eScene, void *initData, bool forceUsePad /*= false*/) -{ - HRESULT hr; - - int idx = 0; - if( m_bGameStarted || forceUsePad) - { - // If the game isn't running treat as user 0, otherwise map index directly from pad - if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad; - } - - hr=XuiSceneNavigateBackToFirst(m_hCurrentScene[idx],iPad); - m_hCurrentScene[idx]=m_hFirstScene[idx]; - m_sceneStack[idx].clear(); - - CXuiSceneBase::ShowBackground(iPad, FALSE ); - CXuiSceneBase::ShowDarkOverlay(iPad, FALSE ); - CXuiSceneBase::ShowLogo(iPad, FALSE ); - - m_bPauseMenuDisplayed[iPad] = false; - m_bContainerMenuDisplayed[iPad] = false; - m_bIgnoreAutosaveMenuDisplayed[iPad] = false; - m_bIgnorePlayerJoinMenuDisplayed[iPad] = false; - - ui.SetTooltips( iPad, -1, -1, -1, -1 ); - SetMenuDisplayed(iPad,false); - - NavigateToScene(iPad,eScene,initData); - - return hr; -} - -HRESULT CConsoleMinecraftApp::RemoveBackScene(int iPad) -{ - int idx = 0; - if( m_bGameStarted) - { - // If the game isn't running treat as user 0, otherwise map index directly from pad - if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad; - } - - if( m_hCurrentScene[idx] != m_hFirstScene[idx] ) - { - HXUIOBJ hBack = XuiSceneGetBackScene(m_hCurrentScene[idx]); - - if( hBack != m_hFirstScene[idx] ) - { - HXUIOBJ hNewBack = XuiSceneGetBackScene( hBack ); - - if( hNewBack != m_hFirstScene[idx] ) - { - XuiSceneSetBackScene(m_hCurrentScene[idx], hNewBack); - - for(auto it = m_sceneStack[idx].begin(), end = m_sceneStack[idx].end(); it != end; ++it) - { - if(it->second == hBack) - { - m_sceneStack[idx].erase(it); - break; - } - } - - XuiSceneSetBackScene(hBack, nullptr); - XuiDestroyObject( hBack ); - } - } - } - - return S_OK; -} - -HRESULT CConsoleMinecraftApp::NavigateToHomeMenu() -{ - HRESULT hr = S_OK; - - for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx) - { - if( m_hFirstTutorialScene[idx] != m_hCurrentTutorialScene[idx] ) - { - XuiSceneNavigateBack(m_hCurrentTutorialScene[idx], m_hFirstTutorialScene[idx],XUSER_INDEX_ANY); - m_hCurrentTutorialScene[idx] = m_hFirstTutorialScene[idx]; - } - } - - hr = CloseAllPlayersXuiScenes(); - - Minecraft *pMinecraft = Minecraft::GetInstance(); - - // 4J-PB - just about to switched to the default texture pack , so clean up anything texture pack related here - - // unload any texture pack audio - // if there is audio in use, clear out the audio, and unmount the pack - TexturePack *pTexPack=Minecraft::GetInstance()->skins->getSelected(); - DLCTexturePack *pDLCTexPack=nullptr; - - if(pTexPack->hasAudio()) - { - // get the dlc texture pack, and store it - pDLCTexPack=(DLCTexturePack *)pTexPack; - } - - // change to the default texture pack - pMinecraft->skins->selectTexturePackById(TexturePackRepository::DEFAULT_TEXTURE_PACK_ID); - - if(pTexPack->hasAudio()) - { - // need to stop the streaming audio - by playing streaming audio from the default texture pack now - pMinecraft->soundEngine->playStreaming(L"", 0, 0, 0, 0, 0); - - if(pDLCTexPack->m_pStreamedWaveBank!=nullptr) - { - pDLCTexPack->m_pStreamedWaveBank->Destroy(); - } - if(pDLCTexPack->m_pSoundBank!=nullptr) - { - pDLCTexPack->m_pSoundBank->Destroy(); - } - DWORD result = StorageManager.UnmountInstalledDLC("TPACK"); - app.DebugPrintf("Unmount result is %d\n",result); - } - - g_NetworkManager.ForceFriendsSessionRefresh(); - - hr = NavigateToScene(XUSER_INDEX_ANY,eUIScene_MainMenu,nullptr); - return hr; -} - -D3DXVECTOR3 CConsoleMinecraftApp::GetElementScreenPosition(HXUIOBJ hObj) -{ - D3DXMATRIX matrix; - D3DXVECTOR3 elementPosition; - XuiElementGetFullXForm( hObj, &matrix); - - elementPosition.x = matrix._41; - elementPosition.y = matrix._42; - elementPosition.z = matrix._43; - - return elementPosition; -} - -void CConsoleMinecraftApp::SetChatTextDisplayed(int iPad, bool bVal) -{ - XuiElementSetShow( m_hCurrentChatScene[iPad] ,bVal ); -} - -void CConsoleMinecraftApp::ReloadChatScene(int iPad, bool bJoining /*= false*/, bool bForce /*= false*/) -{ - if(m_hFirstChatScene[iPad] == nullptr || m_hCurrentChatScene[iPad] == nullptr) return; - - // Re-create the chat scene so it is the correct size. It starts without any visible lines. - BOOL chatSceneVisible = FALSE; - if( m_hFirstChatScene[iPad] != m_hCurrentChatScene[iPad] ) - { - chatSceneVisible = XuiElementIsShown(m_hCurrentChatScene[iPad]); - } - - int iLocalPlayerC=GetLocalPlayerCount(); - // we need to decide whether to close the xui scene or just reposition it - - if( bForce || - (bJoining && iLocalPlayerC==2) || - (!bJoining && iLocalPlayerC==1) || - m_hFirstChatScene[iPad] == m_hCurrentChatScene[iPad]) - { - if( m_hFirstChatScene[iPad] != m_hCurrentChatScene[iPad] ) XuiSceneNavigateBack(m_hCurrentChatScene[iPad], m_hFirstChatScene[iPad],iPad); - m_hCurrentChatScene[iPad] = m_hFirstChatScene[iPad]; - app.NavigateToScene(iPad,eUIComponent_Chat,nullptr,true); - - XuiElementSetShow( m_hCurrentChatScene[iPad], chatSceneVisible); - } - - D3DXVECTOR3 vPosition; - vPosition.x = vPosition.y = vPosition.z = 0.0f; - - float textXOffset = 0; - float sceneWidth = (float)Minecraft::GetInstance()->width; - - // For 2-player splitscreen we need to move it around a bit - switch( CXuiSceneBase::GetPlayerBasePosition(iPad) ) - { - case CXuiSceneBase::e_BaseScene_Top: - case CXuiSceneBase::e_BaseScene_Bottom: - { - vPosition.x -= Minecraft::GetInstance()->width / 4; - textXOffset = SAFEZONE_HALF_WIDTH; - } - break; - case CXuiSceneBase::e_BaseScene_Left: - textXOffset = SAFEZONE_HALF_WIDTH; - case CXuiSceneBase::e_BaseScene_Right: - vPosition.y += Minecraft::GetInstance()->height / 4; - sceneWidth = XUI_BASE_SCENE_WIDTH_HALF; - break; - case CXuiSceneBase::e_BaseScene_Top_Left: - textXOffset = SAFEZONE_HALF_WIDTH; - sceneWidth = XUI_BASE_SCENE_WIDTH_HALF; - break; - case CXuiSceneBase::e_BaseScene_Top_Right: - textXOffset = 0; - sceneWidth = XUI_BASE_SCENE_WIDTH_HALF; - break; - case CXuiSceneBase::e_BaseScene_Bottom_Left: - textXOffset = SAFEZONE_HALF_WIDTH; - sceneWidth = XUI_BASE_SCENE_WIDTH_HALF; - break; - case CXuiSceneBase::e_BaseScene_Bottom_Right: - textXOffset = 0; - sceneWidth = XUI_BASE_SCENE_WIDTH_HALF; - break; - default: - textXOffset = SAFEZONE_HALF_WIDTH; - break; - } - float fWidth, fHeight; - XuiElementGetBounds( m_hCurrentChatScene[iPad], &fWidth, &fHeight ); - XuiElementSetBounds(m_hCurrentChatScene[iPad],sceneWidth, fHeight ); - - CScene_Chat* chatScene; - VOID *pObj; - XuiObjectFromHandle( m_hCurrentChatScene[iPad], &pObj ); - chatScene = (CScene_Chat *)pObj; - chatScene->OffsetTextPosition( textXOffset ); - - XuiElementSetPosition( m_hCurrentChatScene[iPad], &vPosition ); -} - -void CConsoleMinecraftApp::ReloadHudScene(int iPad, bool bJoining /*= false*/, bool bForce /*= false*/) -{ - if(m_hFirstHudScene[iPad] == nullptr || m_hCurrentHudScene[iPad] == nullptr) return; - - // Re-create the hud scene so it is the correct size. It starts without any visible lines. - BOOL hudSceneVisible = FALSE; - if( m_hFirstHudScene[iPad] != m_hCurrentHudScene[iPad] ) - { - hudSceneVisible = XuiElementIsShown(m_hCurrentHudScene[iPad]); - } - - int iLocalPlayerC=GetLocalPlayerCount(); - // we need to decide whether to close the xui scene or just reposition it - - if( bForce || - (bJoining && iLocalPlayerC==2) || - (!bJoining && iLocalPlayerC==1) || - m_hFirstHudScene[iPad] == m_hCurrentHudScene[iPad]) - { - if( m_hFirstHudScene[iPad] != m_hCurrentHudScene[iPad] ) XuiSceneNavigateBack(m_hCurrentHudScene[iPad], m_hFirstHudScene[iPad],iPad); - m_hCurrentHudScene[iPad] = m_hFirstHudScene[iPad]; - app.NavigateToScene(iPad,eUIScene_HUD,nullptr,true); - - XuiElementSetShow( m_hCurrentHudScene[iPad], hudSceneVisible); - } -} - -void CConsoleMinecraftApp::AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bAdjustXForSafeArea) -{ - D3DXVECTOR3 vec; - - Minecraft *pMinecraft = Minecraft::GetInstance(); - - // store this for any change of screensection - XuiElementGetPosition(hScene,pvOriginalPosition); - vec=*pvOriginalPosition; - - if( pMinecraft->localplayers[iPad] != nullptr ) - { - switch( pMinecraft->localplayers[iPad]->m_iScreenSection) - { - case C4JRender::VIEWPORT_TYPE_SPLIT_TOP: - // move the scene down - vec.y+=fSafeZoneY; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM: - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT: - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT: - // move the scene left - if(bAdjustXForSafeArea) vec.x-=fSafeZoneX; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT: - // move the scene down - vec.y+=fSafeZoneY; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT: - // move the scene down - vec.y+=fSafeZoneY; - // move the scene left - if(bAdjustXForSafeArea) vec.x-=fSafeZoneX; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT: - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT: - // move the scene left - if(bAdjustXForSafeArea) vec.x-=fSafeZoneX; - break; - } - } - XuiElementSetPosition(hScene,&vec); -} - -void CConsoleMinecraftApp::AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, float fXAdjust) -{ - D3DXVECTOR3 vec; - - Minecraft *pMinecraft = Minecraft::GetInstance(); - - // store this for any change of screensection - - XuiElementGetPosition(hScene,pvOriginalPosition); - - vec=*pvOriginalPosition; - - if( pMinecraft->localplayers[iPad] != nullptr ) - { - switch( pMinecraft->localplayers[iPad]->m_iScreenSection) - { - case C4JRender::VIEWPORT_TYPE_SPLIT_TOP: - // move the scene down - vec.y+=fSafeZoneY; - // 4J-PB - don't adjust things in horizontal splitscreen - //vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM: - // 4J-PB - don't adjust things in horizontal splitscreen - //vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT: - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT: - // move the scene left - vec.x-=fSafeZoneX-fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT: - // move the scene down - vec.y+=fSafeZoneY; - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT: - // move the scene down - vec.y+=fSafeZoneY; - // move the scene left - vec.x-=fSafeZoneX-fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT: - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT: - // move the scene left - vec.x-=fSafeZoneX-fXAdjust; - break; - } - } - - XuiElementSetPosition(hScene,&vec); -} - -HRESULT CConsoleMinecraftApp::AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, bool bAdjustXForSafeArea) -{ - int iLocalPlayerC=GetLocalPlayerCount(); - Minecraft *pMinecraft=Minecraft::GetInstance(); - - // we need to decide whether to close the xui scene or just reposition it - - if((bJoining && iLocalPlayerC==2) || - (!bJoining && iLocalPlayerC==1)) - { - // Fix for #101078 - TCR #15: BAS Sign-in Changes: TU12: Signing out the secondary player's profile during the End Poem in local splitscreen game causes Host invincibility and corruption of End Portal. - if(!IsSceneInStack(iPad,eUIScene_EndPoem)) - { - // close the scene! - ui.SetTooltips(iPad, -1); - // kill the xui - ui.CloseUIScenes(iPad); - } - - // 4J Stu - Return S_FALSE to inidicate that the scene has been closed - return S_FALSE; - } - else if ( pMinecraft->localplayers[iPad] != nullptr ) - { - // we need to reposition the scenes since the players will have moved around - - D3DXVECTOR3 vec=*pvOriginalPosition; - - switch( pMinecraft->localplayers[iPad]->m_iScreenSection) - { - case C4JRender::VIEWPORT_TYPE_SPLIT_TOP: - // move the scene down - vec.y+=fSafeZoneY; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM: - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT: - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT: - // move the scene left - if(bAdjustXForSafeArea) vec.x-=fSafeZoneX; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT: - // move the scene down - vec.y+=fSafeZoneY; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT: - // move the scene down - vec.y+=fSafeZoneY; - // move the scene left - if(bAdjustXForSafeArea) vec.x-=fSafeZoneX; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT: - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT: - // move the scene left - if(bAdjustXForSafeArea) vec.x-=fSafeZoneX; - break; - } - XuiElementSetPosition(hScene,&vec); - } - - return S_OK; -} - -HRESULT CConsoleMinecraftApp::AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, float fXAdjust) -{ - int iLocalPlayerC=GetLocalPlayerCount(); - Minecraft *pMinecraft=Minecraft::GetInstance(); - - // we need to decide whether to close the xui scene or just reposition it - - if((bJoining && iLocalPlayerC==2) || - (!bJoining && iLocalPlayerC==1)) - { - // close the scene! - ui.SetTooltips(iPad, -1); - // kill the xui - ui.CloseUIScenes(iPad); - - // 4J Stu - Return S_FALSE to inidicate that the scene has been closed - return S_FALSE; - } - else if ( pMinecraft->localplayers[iPad] != nullptr ) - { - // we need to reposition the scenes since the players will have moved around - - D3DXVECTOR3 vec=*pvOriginalPosition; - - switch( pMinecraft->localplayers[iPad]->m_iScreenSection) - { - case C4JRender::VIEWPORT_TYPE_SPLIT_TOP: - // move the scene down - vec.y+=fSafeZoneY; - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM: - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT: - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT: - // move the scene left - vec.x-=fSafeZoneX-fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT: - // move the scene down - vec.y+=fSafeZoneY; - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT: - // move the scene down - vec.y+=fSafeZoneY; - // move the scene left - vec.x-=fSafeZoneX-fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT: - vec.x+=fXAdjust; - break; - case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT: - // move the scene left - vec.x-=fSafeZoneX-fXAdjust; - break; - } - XuiElementSetPosition(hScene,&vec); - } - - return S_OK; -} - -void CConsoleMinecraftApp::StoreLaunchData() -{ - LD_DEMO* pDemoData = nullptr; - - - DWORD dwStatus = XGetLaunchDataSize( &m_dwLaunchDataSize ); - if( dwStatus == ERROR_SUCCESS ) - { - m_pLaunchData = new BYTE [ m_dwLaunchDataSize ]; - dwStatus = XGetLaunchData( m_pLaunchData, m_dwLaunchDataSize ); - pDemoData = (LD_DEMO*)( m_pLaunchData ); - if( pDemoData->dwID != LAUNCH_DATA_DEMO_ID ) - { - // custom launch data; must be handled separately - } - } -} - -void CConsoleMinecraftApp::ExitGame() -{ - if(m_pLaunchData!=nullptr) - { - LD_DEMO* pDemoData = (LD_DEMO*)( m_pLaunchData ); - XSetLaunchData( pDemoData, m_dwLaunchDataSize ); - XLaunchNewImage( pDemoData->szLauncherXEX, 0 ); - } - else - { - XLaunchNewImage( XLAUNCH_KEYWORD_DASH_ARCADE, 0 ); - } -} - -////////////////////////////////////////////////////////////////////////// -// -// FatalLoadError -// -// This is called when we can't load one of the required files at startup -// It tends to mean the files have been corrupted. -// We have to assume that we've not been able to load the text for the game. -// -////////////////////////////////////////////////////////////////////////// -void CConsoleMinecraftApp::FatalLoadError(void) -{ - XOVERLAPPED MessageBoxOverlap; - - memset(&MessageBoxOverlap, 0, sizeof(MessageBoxOverlap)); - - //HANDLE messageBoxThread = CreateThread(nullptr, 0, &CMinecraftApp::ShowFatalLoadMessageBoxThreadProc, &MessageBoxOverlap, 0, nullptr); - // - //WaitForSingleObjectEx(messageBoxThread, // handle to object - // 20000, // time-out interval - // FALSE // alertable option - //); - //XOVERLAPPED *MessageBoxOverlap = (XOVERLAPPED *)lpParameter; - - wchar_t *aStrings[3]; - LPCWSTR wszButtons[1]; - - // IDS_FATAL_ERROR_TITLE - // IDS_FATAL_ERROR_TEXT - // IDS_EXIT_GAME - - switch (XGetLanguage()) - { - case XC_LANGUAGE_GERMAN: - aStrings[0] = L"Ladefehler"; - aStrings[1] = L"Minecraft: Xbox 360 Edition konnte nicht geladen werden und kann daher nicht fortgesetzt werden."; - aStrings[2] = L"Spiel verlassen"; - break; - case XC_LANGUAGE_SPANISH: - aStrings[0] = L"Error al cargar"; - aStrings[1] = L"Minecraft: Xbox 360 Edition ha experimentado un error al cargar y no puede continuar."; - aStrings[2] = L"Salir del juego"; - break; - case XC_LANGUAGE_FRENCH: - aStrings[0] = L"Échec du chargement"; - aStrings[1] = L"Le chargement de Minecraft: Xbox 360 Edition a échoué : impossible de continuer."; - aStrings[2] = L"Quitter le jeu"; - break; - case XC_LANGUAGE_ITALIAN: - aStrings[0] = L"Errore caricamento"; - aStrings[1] = L"Caricamento \"Minecraft: Xbox 360 Edition\" non riuscito, impossibile continuare."; - aStrings[2] = L"Esci dal gioco"; - break; - case XC_LANGUAGE_JAPANESE: - aStrings[0] = L"ロード エラー"; - aStrings[1] = L"Minecraft Xbox 360 版のロードに失敗しました。続行できません"; - aStrings[2] = L"ゲームを終了"; - break; - case XC_LANGUAGE_KOREAN: - aStrings[0] = L"불러오기 오류"; - aStrings[1] = L"Minecraft: Xbox 360 Edition을 불러오는 중에 오류가 발생하여 계속할 수 없습니다."; - aStrings[2] = L"게임 나가기"; - break; - case XC_LANGUAGE_PORTUGUESE: - if(XGetLocale()==XC_LOCALE_BRAZIL) - { - // Brazilian Portuguese - aStrings[0] = L"Erro de carregamento"; - aStrings[1] = L"\"Minecraft: Xbox 360 Edition\" falhou ao carregar e não é possível continuar."; - aStrings[2] = L"Sair do Jogo"; - } - else - { - aStrings[0] = L"Erro de Carregamento"; - aStrings[1] = L"Não foi possível carregar \"Minecraft: Edição Xbox 360\" e não é possível continuar."; - aStrings[2] = L"Sair do Jogo"; - } - break; - case XC_LANGUAGE_TCHINESE: - aStrings[0] = L"載入錯誤"; - aStrings[1] = L"無法載入 Minecraft: Xbox 360 Edition,因此無法繼續。"; - aStrings[2] = L"離開遊戲"; - break; - default: - aStrings[0] = L"Loading Error"; - aStrings[1] = L"\"Minecraft: Xbox 360 Edition\" has failed to load, and cannot continue."; - aStrings[2] = L"Exit Game"; - break; - } - wszButtons[0] = aStrings[2]; - - MESSAGEBOX_RESULT MessageResult; - - while (XShowMessageBoxUI(XUSER_INDEX_ANY, aStrings[0], aStrings[1], 1, wszButtons, 0, XMB_ALERTICON, &MessageResult, &MessageBoxOverlap) == ERROR_ACCESS_DENIED) - Sleep(250); - while (!XHasOverlappedIoCompleted(&MessageBoxOverlap)) - { - RenderManager.SetClearColour(D3DCOLOR_RGBA(0,0,0,255)); - RenderManager.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - RenderManager.Present(); - Sleep(250); - } - - ExitGame(); -} - -WCHAR *CConsoleMinecraftApp::wchExt[MAX_EXTENSION_TYPES]= -{ - L"png", - L"inf", - L"dat", -}; - -int CConsoleMinecraftApp::GetLocalTMSFileIndex(WCHAR *wchTMSFile,bool bFilenameIncludesExtension,eFileExtensionType eEXT) -{ - WCHAR wchTemp[ 256 ]; - WCHAR wchInFile[ 256 ]; - - if(bFilenameIncludesExtension) - { - swprintf(wchInFile, 256, L"%ls",wchTMSFile); - } - else - { - swprintf(wchInFile, 256, L"%ls.%ls",wchTMSFile,wchExt[eEXT]); - } - - for(int i=0;i0) - { - //First is the language - - unsigned int uiDecompSize=*(unsigned int *)pbPos; - unsigned int uiCompSize=((unsigned int *)pbPos)[1]; - - if(eType==eTPDFileType_Loc) - { - *pdwBytes= uiDecompSize; - *ppbData = new BYTE [uiDecompSize]; - - Compression::getCompression()->Decompress(*ppbData,(UINT *)pdwBytes,&((unsigned int *)pbPos)[2],uiCompSize); - return; - } - else - { - // skip over the data - pbPos=(PBYTE)&((unsigned int *)pbPos)[2]; - pbPos+=uiCompSize; - } - - uiDecompSize=*(unsigned int *)pbPos; - uiCompSize=((unsigned int *)pbPos)[1]; - - // second is the icon - if(eType==eTPDFileType_Icon) - { - *pdwBytes= uiDecompSize; - *ppbData = new BYTE [uiDecompSize]; - - Compression::getCompression()->Decompress(*ppbData,(UINT *)pdwBytes,&((unsigned int *)pbPos)[2],uiCompSize); - return; - } - else - { - // skip over the data - pbPos=(PBYTE)&((unsigned int *)pbPos)[2]; - pbPos+=uiCompSize; - } - - uiDecompSize=*(unsigned int *)pbPos; - uiCompSize=((unsigned int *)pbPos)[1]; - - // third is the comparison - if(eType==eTPDFileType_Comparison) - { - *pdwBytes= uiDecompSize; - *ppbData = new BYTE [uiDecompSize]; - - Compression::getCompression()->Decompress(*ppbData,(UINT *)pdwBytes,&((unsigned int *)pbPos)[2],uiCompSize); - return; - } - } - - return; -} - - -LPCWSTR CConsoleMinecraftApp::GetString(int iID) -{ - return StringTable.Lookup(iID); -} - -CXuiStringTable *CConsoleMinecraftApp::GetStringTable() -{ - return &StringTable; -} diff --git a/Minecraft.Client/stdafx.h b/Minecraft.Client/stdafx.h index d048f444..66749835 100644 --- a/Minecraft.Client/stdafx.h +++ b/Minecraft.Client/stdafx.h @@ -1,134 +1,39 @@ // stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// +// or project specific include files that are used frequently. #pragma once -//#include -//#include +//#ifdef _DEBUG +//#define _DEBUG_MENUS_ENABLED +//#endif -#define __STR2__(x) #x -#define __STR1__(x) __STR2__(x) +#define __STR2__(x) #x //Test +#define __STR1__(x) __STR2__(x) //Test #define __LOC__ __FILE__ "("__STR1__(__LINE__)") : 4J Warning Msg: " -// use - #pragma message(__LOC__"Need to do something here") - -// #ifndef _XBOX -// #ifdef _CONTENT_PACKAGE -// #define TO_BE_IMPLEMENTED -// #endif -// #endif - -#ifdef _WINDOWS64 #define _HAS_STD_BYTE 0 // solve (std::)'BYTE' ambiguity with windows headers #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define NOMINMAX // Exclude min/max macros from Windows headers -// Windows Header Files: + #include #include #include -// TODO: reference additional headers your program requires here + #include #include using namespace DirectX; #define HRESULT_SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) -#endif - -#ifdef __PS3__ - -#include "Ps3Types.h" -#include "Ps3Stubs.h" -#include "PS3Maths.h" - -#elif defined __ORBIS__ -#include -#include -#include -#include #include #include #include -#include -#include -#include -#include "OrbisTypes.h" -#include "OrbisStubs.h" -#include "OrbisMaths.h" -#define HRESULT_SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) -#elif defined __PSVITA__ -#include -#include -#include -#include -#include -#include -#include -#include -#include "PSVitaTypes.h" -#include "PSVitaStubs.h" -#include "PSVitaMaths.h" -#else -#include -#include -#include -#endif - -#ifdef _DURANGO -#include -#include -#include -#include -#include -#include -using namespace DirectX; -#include -#include "DurangoStubs.h" -#define HRESULT_SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) -#endif - - - -#ifdef _XBOX -#include -#include -#include -#include -#include -#include -typedef XINVITE_INFO INVITE_INFO; -typedef XUID PlayerUID; -typedef XNKID SessionID; -typedef XUID GameSessionUID; -#define HRESULT_SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) - -#include "..\Minecraft.Client\xbox\network\extra.h" -#else #include "extraX64.h" -#endif +#include "extraX64client.h" -#ifdef __PS3__ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif - -// C RunTime Header Files #include - #include - #include #include #include @@ -140,212 +45,67 @@ typedef XUID GameSessionUID; #include #include #include - #include +#include #include namespace fs = std::filesystem; -#ifdef _XBOX -#include -#include +#if defined(_MSC_VER) +#define break_into_debugger() __debugbreak() +#elif defined(__GNUC__) || defined(__clang__) +#define break_into_debugger() __builtin_trap() #endif -#include "..\Minecraft.World\Definitions.h" -#include "..\Minecraft.World\class.h" -#include "..\Minecraft.World\Mth.h" -#include "..\Minecraft.World\ArrayWithLength.h" -#include "..\Minecraft.World\SharedConstants.h" -#include "..\Minecraft.World\Random.h" -#include "..\Minecraft.World\compression.h" -#include "..\Minecraft.World\PerformanceTimer.h" +#include "../Minecraft.World/Definitions.h" +#include "../Minecraft.World/class.h" +#include "../Minecraft.World/Mth.h" +#include "../Minecraft.World/ArrayWithLength.h" +#include "../Minecraft.World/SharedConstants.h" +#include "../Minecraft.World/Random.h" +#include "../Minecraft.World/compression.h" +#include "../Minecraft.World/PerformanceTimer.h" -#ifdef _XBOX - #include "xbox\4JLibs\inc\4J_Input.h" - #include "xbox\4JLibs\inc\4J_Profile.h" - #include "xbox\4JLibs\inc\4J_Render.h" - #include "xbox\4JLibs\inc\4J_XTMS.h" - #include "xbox\4JLibs\inc\4J_Storage.h" -#elif defined (__PS3__) +#include +#include "Windows64/Libs/4JLibs/inc/4J_Input.h" +#include "Windows64/Libs/4JLibs/inc/4J_Profile.h" +#include "Windows64/Libs/4JLibs/inc/4J_Render.h" +#include "Windows64/Libs/4JLibs/inc/4J_Storage.h" - #include "PS3\4JLibs\inc\4J_Input.h" - #include "PS3\4JLibs\inc\4J_Profile.h" - #include "PS3\4JLibs\inc\4J_Render.h" - #include "PS3\4JLibs\inc\4J_Storage.h" -#elif defined _DURANGO - #include "Durango\4JLibs\inc\4J_Input.h" - #include "Durango\4JLibs\inc\4J_Profile.h" - #include "Durango\4JLibs\inc\4J_Render.h" - #include "Durango\4JLibs\inc\4J_Storage.h" -#elif defined _WINDOWS64 - #include - #include "Windows64\Libs\4JLibs\inc\4J_Input.h" - #include "Windows64\Libs\4JLibs\inc\4J_Profile.h" - #include "Windows64\Libs\4JLibs\inc\4J_Render.h" - #include "Windows64\Libs\4JLibs\inc\4J_Storage.h" - #include "Windows64\KeyboardMouseInput.h" -#elif defined __PSVITA__ - #include "PSVita\4JLibs\inc\4J_Input.h" - #include "PSVita\4JLibs\inc\4J_Profile.h" - #include "PSVita\4JLibs\inc\4J_Render.h" - #include "PSVita\4JLibs\inc\4J_Storage.h" -#else - #include "Orbis\4JLibs\inc\4J_Input.h" - #include "Orbis\4JLibs\inc\4J_Profile.h" - #include "Orbis\4JLibs\inc\4J_Render.h" - #include "Orbis\4JLibs\inc\4J_Storage.h" -#endif - -#include "Textures.h" -#include "Font.h" -#include "ClientConstants.h" -#include "Gui.h" -#include "Screen.h" -#include "ScreenSizeCalculator.h" #include "Minecraft.h" -#include "MemoryTracker.h" #include "stubs.h" -#include "BufferedImage.h" -#include "Common\Network\GameNetworkManager.h" +#include "Common/Network/GameNetworkManager.h" +#include "Common/App_defines.h" +#include "Common/UI/UIEnums.h" +#include "Common/UI/UIStructs.h" -#ifdef _XBOX -#include "Common\XUI\XUI_Helper.h" -#include "Common\XUI\XUI_Scene_Base.h" -#endif +#include "Common/App_enums.h" +#include "Common/App_structs.h" -#include "Common\App_defines.h" -#include "Common\UI\UIEnums.h" -#include "Common\UI\UIStructs.h" -// #ifdef _XBOX -#include "Common\App_enums.h" -#include "Common\Tutorial\TutorialEnum.h" -#include "Common\App_structs.h" -//#endif +#include "Common/Consoles_App.h" +#include "Common/Minecraft_Utils.h" +#include "Common/Minecraft_Macros.h" +#include "Common/BuildVer.h" -#include "Common\Consoles_App.h" -#include "Common\Minecraft_Macros.h" -#include "Common\BuildVer.h" - -#ifdef _XBOX - #include "Xbox\Xbox_App.h" - #include "Xbox\Sentient\MinecraftTelemetry.h" - #include "Xbox\Sentient\DynamicConfigurations.h" - #include "XboxMedia\strings.h" - #include "Xbox\Sentient\SentientTelemetryCommon.h" - #include "Xbox\Sentient\Include\SenClientStats.h" - #include "Xbox\GameConfig\Minecraft.spa.h" - #include "XboxMedia\4J_strings.h" - #include "Xbox\XML\ATGXmlParser.h" - #include "Xbox\Leaderboards\XboxLeaderboardManager.h" - #include "Xbox\Social\SocialManager.h" - #include "Xbox\Audio\SoundEngine.h" - #include "Xbox\Xbox_UIController.h" - -#elif defined (__PS3__) - #include "extraX64client.h" - #include "PS3\Sentient\MinecraftTelemetry.h" - #include "PS3\Sentient\DynamicConfigurations.h" - #include "PS3\Sentient\SentientTelemetryCommon.h" - #include "PS3Media\strings.h" - #include "PS3\PS3_App.h" - #include "PS3\GameConfig\Minecraft.spa.h" - #include "PS3Media\4J_strings.h" - #include "PS3\XML\ATGXmlParser.h" - #include "PS3\Social\SocialManager.h" - #include "Common\Audio\SoundEngine.h" - #include "PS3\Iggy\include\iggy.h" - #include "PS3\Iggy\gdraw\gdraw_ps3gcm.h" - #include "PS3\PS3_UIController.h" -#elif defined _DURANGO - #include "Durango\Sentient\MinecraftTelemetry.h" - #include "DurangoMedia\strings.h" - #include "Durango\Durango_App.h" - #include "Durango\Sentient\DynamicConfigurations.h" - #include "Durango\Sentient\TelemetryEnum.h" - #include "Durango\Sentient\SentientTelemetryCommon.h" - #include "Durango\PresenceIds.h" - #include "DurangoMedia\4J_strings.h" - #include "Durango\XML\ATGXmlParser.h" - #include "Durango\Social\SocialManager.h" -#include "Common\Audio\SoundEngine.h" - #include "Durango\Iggy\include\iggy.h" - #include "Durango\Iggy\gdraw\gdraw_d3d11.h" - #include "Durango\Durango_UIController.h" -#elif defined _WINDOWS64 - #include "Windows64\Sentient\MinecraftTelemetry.h" - #include "Windows64Media\strings.h" - #include "Windows64\Windows64_App.h" - #include "Windows64\Sentient\DynamicConfigurations.h" - #include "Windows64\Sentient\SentientTelemetryCommon.h" - #include "Windows64\GameConfig\Minecraft.spa.h" - #include "Windows64\XML\ATGXmlParser.h" - #include "Windows64\Social\SocialManager.h" - #include "Common\Audio\SoundEngine.h" - #include "Windows64\Libs\Iggy\inc\iggy.h" - #include "Windows64\Libs\Iggy\gdraw\gdraw_d3d11.h" - #include "Windows64\Windows64_UIController.h" -#elif defined __PSVITA__ - #include "PSVita\PSVita_App.h" - #include "PSVitaMedia\strings.h" // TODO - create PSVita-specific version of this - #include "PSVita\Sentient\SentientManager.h" - #include "PSVita\Sentient\MinecraftTelemetry.h" - #include "PSVita\Sentient\DynamicConfigurations.h" - #include "PSVita\GameConfig\Minecraft.spa.h" - #include "PSVita\XML\ATGXmlParser.h" - #include "PSVita\Social\SocialManager.h" - #include "Common\Audio\SoundEngine.h" - #include "PSVita\Iggy\include\iggy.h" - #include "PSVita\Iggy\gdraw\gdraw_psp2.h" - #include "PSVita\PSVita_UIController.h" -#else - #include "Orbis\Sentient\MinecraftTelemetry.h" - #include "OrbisMedia\strings.h" - #include "Orbis\Orbis_App.h" - #include "Orbis\Sentient\SentientTelemetryCommon.h" - #include "Orbis\Sentient\DynamicConfigurations.h" - #include "Orbis\GameConfig\Minecraft.spa.h" - #include "OrbisMedia\4J_strings.h" - #include "Orbis\XML\ATGXmlParser.h" - #include "Windows64\Social\SocialManager.h" - #include "Common\Audio\SoundEngine.h" - #include "Orbis\Iggy\include\iggy.h" - #include "Orbis\Iggy\gdraw\gdraw_orbis.h" - #include "Orbis\Orbis_UIController.h" -#endif - -#ifdef _XBOX -#include "Common\XUI\XUI_CustomMessages.h" -#include "Common\XUI\XUI_Scene_Inventory_Creative.h" -#include "Common\XUI\XUI_FullscreenProgress.h" -#include "Common\XUI\XUI_ConnectingProgress.h" -#include "Common\XUI\XUI_Scene_CraftingPanel.h" -#include "Common\XUI\XUI_TutorialPopup.h" -#include "Common\XUI\XUI_PauseMenu.h" -#endif -#include "Common\ConsoleGameMode.h" -#include "Common\Console_Debug_enum.h" -#include "Common\Console_Awards_enum.h" -#include "Common\Tutorial\TutorialMode.h" -#include "Common\Tutorial\Tutorial.h" -#include "Common\Tutorial\FullTutorialMode.h" -#include "Common\Trial\TrialMode.h" -#include "Common\GameRules\ConsoleGameRules.h" -#include "Common\GameRules\ConsoleSchematicFile.h" -#include "Common\Colours\ColourTable.h" -#include "StructureTable.h" -#include "Common\DLC\DLCSkinFile.h" -#include "Common\DLC\DLCManager.h" -#include "Common\DLC\DLCPack.h" -#include "Common\Telemetry\TelemetryManager.h" -#include "Common\Potion_Macros.h" - -#ifdef _XBOX -//#include "Xbox\Xbox_App.h" -#elif !defined(__PS3__) -#include "extraX64client.h" -#endif +#include "Windows64/Sentient/MinecraftTelemetry.h" +#include "Assets/Localisation/strings.h" +#include "Windows64/Windows64_App.h" +#include "Windows64/Sentient/DynamicConfigurations.h" +#include "Windows64/Sentient/SentientTelemetryCommon.h" +#include "Windows64/XML/ATGXmlParser.h" +#include "Windows64/Social/SocialManager.h" +#include "Common/Audio/SoundEngine.h" +#include "Windows64/Libs/Iggy/inc/iggy.h" +#include "Windows64/Libs/Iggy/gdraw/gdraw_d3d11.h" +#include "Windows64/Windows64_UIController.h" +#include "Common/Console_Debug_enum.h" +#include "Common/Console_Awards_enum.h" +#include "Common/GameRules/ConsoleGameRules.h" +#include "Common/GameRules/ConsoleSchematicFile.h" +#include "Common/Telemetry/TelemetryManager.h" +#include "Common/Potion_Macros.h" #ifdef _FINAL_BUILD #define printf BREAKTHECOMPILE @@ -356,4 +116,4 @@ namespace fs = std::filesystem; #define OutputDebugStringW BREAKTHECOMPILE #endif -void MemSect(int sect); +void MemSect(int sect); \ No newline at end of file diff --git a/Minecraft.World/ConsoleSaveFileSplit.cpp b/Minecraft.World/ConsoleSaveFileSplit.cpp index 90d0c051..a763c5cd 100644 --- a/Minecraft.World/ConsoleSaveFileSplit.cpp +++ b/Minecraft.World/ConsoleSaveFileSplit.cpp @@ -1,5 +1,4 @@ #ifdef SPLIT_SAVES -#include "stdafx.h" #include "StringHelpers.h" #include "ConsoleSaveFileSplit.h" #include "ConsoleSaveFileConverter.h" diff --git a/Minecraft.World/LogTile.cpp b/Minecraft.World/LogTile.cpp index e87728a9..348c9fcb 100644 --- a/Minecraft.World/LogTile.cpp +++ b/Minecraft.World/LogTile.cpp @@ -1,4 +1,3 @@ -#include "stdafx.h" #include "net.minecraft.world.level.h" #include "net.minecraft.world.level.tile.piston.h" #include "net.minecraft.h" diff --git a/Minecraft.World/NewLogTile.cpp b/Minecraft.World/NewLogTile.cpp index 826468c9..9795e8b3 100644 --- a/Minecraft.World/NewLogTile.cpp +++ b/Minecraft.World/NewLogTile.cpp @@ -1,4 +1,3 @@ -#include "stdafx.h" #include "NewLogTile.h" const unsigned int NewLogTile::TREE_NAMES[NewLogTile::TREE_NAMES_LENGTH] = { diff --git a/Minecraft.World/OldLogTile.cpp b/Minecraft.World/OldLogTile.cpp index eee8e38c..0c74af1c 100644 --- a/Minecraft.World/OldLogTile.cpp +++ b/Minecraft.World/OldLogTile.cpp @@ -1,4 +1,3 @@ -#include "stdafx.h" #include "OldLogTile.h" OldLogTile::OldLogTile(int id) : LogTile(id) diff --git a/Minecraft.World/StructurePiece.cpp b/Minecraft.World/StructurePiece.cpp index b3584474..3abb96a8 100644 --- a/Minecraft.World/StructurePiece.cpp +++ b/Minecraft.World/StructurePiece.cpp @@ -14,6 +14,7 @@ #include "Facing.h" #include "DoorItem.h" #include "EnchantedBookItem.h" +#include "StringHelpers.h" /** * @@ -120,9 +121,7 @@ StructurePiece* StructurePiece::findCollisionPiece( list< StructurePiece* > *pie for (auto& piece : *pieces) { if ( piece && piece->getBoundingBox() && piece->getBoundingBox()->intersects( box ) ) - { return piece; - } } return nullptr; } @@ -149,14 +148,11 @@ bool StructurePiece::edgesLiquid( Level* level, BoundingBox* chunkBB ) { int tile = level->getTile( x, y0, z ); if ( tile > 0 && Tile::tiles[tile]->material->isLiquid() ) - { return true; - } + tile = level->getTile( x, y1, z ); if ( tile > 0 && Tile::tiles[tile]->material->isLiquid() ) - { return true; - } } } // north and south @@ -166,14 +162,11 @@ bool StructurePiece::edgesLiquid( Level* level, BoundingBox* chunkBB ) { int tile = level->getTile( x, y, z0 ); if ( tile > 0 && Tile::tiles[tile]->material->isLiquid() ) - { return true; - } + tile = level->getTile( x, y, z1 ); if ( tile > 0 && Tile::tiles[tile]->material->isLiquid() ) - { return true; - } } } // east and west @@ -183,14 +176,11 @@ bool StructurePiece::edgesLiquid( Level* level, BoundingBox* chunkBB ) { int tile = level->getTile( x0, y, z ); if ( tile > 0 && Tile::tiles[tile]->material->isLiquid() ) - { return true; - } + tile = level->getTile( x1, y, z ); if ( tile > 0 && Tile::tiles[tile]->material->isLiquid() ) - { return true; - } } } return false; @@ -216,9 +206,8 @@ int StructurePiece::getWorldX( int x, int z ) int StructurePiece::getWorldY( int y ) { if ( orientation == Direction::UNDEFINED ) - { return y; - } + return y + boundingBox->y0; } @@ -245,13 +234,9 @@ int StructurePiece::getOrientationData( int tile, int data ) if ( orientation == Direction::WEST || orientation == Direction::EAST ) { if ( data == BaseRailTile::DIR_FLAT_X ) - { return BaseRailTile::DIR_FLAT_Z; - } else - { return BaseRailTile::DIR_FLAT_X; - } } } else if ( tile == Tile::door_wood_Id || tile == Tile::door_iron_Id ) @@ -259,13 +244,9 @@ int StructurePiece::getOrientationData( int tile, int data ) if ( orientation == Direction::SOUTH ) { if ( data == 0 ) - { return 2; - } if ( data == 2 ) - { return 0; - } } else if ( orientation == Direction::WEST ) { @@ -289,51 +270,31 @@ int StructurePiece::getOrientationData( int tile, int data ) if ( orientation == Direction::SOUTH ) { if ( data == 2 ) - { return 3; - } if ( data == 3 ) - { return 2; - } } else if ( orientation == Direction::WEST ) { if ( data == 0 ) - { return 2; - } if ( data == 1 ) - { return 3; - } if ( data == 2 ) - { return 0; - } if ( data == 3 ) - { return 1; - } } else if ( orientation == Direction::EAST ) { if ( data == 0 ) - { return 2; - } if ( data == 1 ) - { return 3; - } if ( data == 2 ) - { return 1; - } if ( data == 3 ) - { return 0; - } } } else if ( tile == Tile::ladder->id ) @@ -341,104 +302,63 @@ int StructurePiece::getOrientationData( int tile, int data ) if ( orientation == Direction::SOUTH ) { if ( data == Facing::NORTH ) - { return Facing::SOUTH; - } if ( data == Facing::SOUTH ) - { return Facing::NORTH; - } } else if ( orientation == Direction::WEST ) { if ( data == Facing::NORTH ) - { return Facing::WEST; - } if ( data == Facing::SOUTH ) - { return Facing::EAST; - } if ( data == Facing::WEST ) - { return Facing::NORTH; - } if ( data == Facing::EAST ) - { return Facing::SOUTH; - } } else if ( orientation == Direction::EAST ) { if ( data == Facing::NORTH ) - { return Facing::EAST; - } if ( data == Facing::SOUTH ) - { return Facing::WEST; - } if ( data == Facing::WEST ) - { return Facing::NORTH; - } if ( data == Facing::EAST ) - { return Facing::SOUTH; - } } - } else if ( tile == Tile::button->id ) { if ( orientation == Direction::SOUTH ) { if ( data == 3 ) - { return 4; - } if ( data == 4 ) - { return 3; - } } else if ( orientation == Direction::WEST ) { if ( data == 3 ) - { return 1; - } if ( data == 4 ) - { return 2; - } if ( data == 2 ) - { return 3; - } if ( data == 1 ) - { return 4; - } } else if ( orientation == Direction::EAST ) { if ( data == 3 ) - { return 2; - } if ( data == 4 ) - { return 1; - } if ( data == 2 ) - { return 3; - } if ( data == 1 ) - { return 4; - } } } else if (tile == Tile::tripWireSource_Id || (Tile::tiles[tile] != nullptr && dynamic_cast(Tile::tiles[tile]))) @@ -446,47 +366,29 @@ int StructurePiece::getOrientationData( int tile, int data ) if (orientation == Direction::SOUTH) { if (data == Direction::SOUTH || data == Direction::NORTH) - { return Direction::DIRECTION_OPPOSITE[data]; - } } else if (orientation == Direction::WEST) { if (data == Direction::NORTH) - { return Direction::WEST; - } if (data == Direction::SOUTH) - { return Direction::EAST; - } if (data == Direction::WEST) - { return Direction::NORTH; - } if (data == Direction::EAST) - { return Direction::SOUTH; - } } else if (orientation == Direction::EAST) { if (data == Direction::NORTH) - { return Direction::EAST; - } if (data == Direction::SOUTH) - { return Direction::WEST; - } if (data == Direction::WEST) - { return Direction::NORTH; - } if (data == Direction::EAST) - { return Direction::SOUTH; - } } } else if (tile == Tile::pistonBase_Id || tile == Tile::pistonStickyBase_Id || tile == Tile::lever_Id || tile == Tile::dispenser_Id) @@ -494,46 +396,29 @@ int StructurePiece::getOrientationData( int tile, int data ) if (orientation == Direction::SOUTH) { if (data == Facing::NORTH || data == Facing::SOUTH) - { return Facing::OPPOSITE_FACING[data]; - } } else if (orientation == Direction::WEST) { if (data == Facing::NORTH) - { return Facing::WEST; - } if (data == Facing::SOUTH) - { return Facing::EAST; - } if (data == Facing::WEST) - { return Facing::NORTH; - } if (data == Facing::EAST) - { return Facing::SOUTH; - } - } else if (orientation == Direction::EAST) + } + else if (orientation == Direction::EAST) { if (data == Facing::NORTH) - { return Facing::EAST; - } if (data == Facing::SOUTH) - { return Facing::WEST; - } if (data == Facing::WEST) - { return Facing::NORTH; - } if (data == Facing::EAST) - { return Facing::SOUTH; - } } } return data; @@ -547,9 +432,7 @@ void StructurePiece::placeBlock( Level* level, int block, int data, int x, int y int worldZ = getWorldZ( x, z ); if ( !chunkBB->isInside( worldX, worldY, worldZ ) ) - { return; - } // 4J Stu - We shouldn't be removing bedrock when generating things (eg in SuperFlat) if(worldY == 0) return; @@ -557,7 +440,6 @@ void StructurePiece::placeBlock( Level* level, int block, int data, int x, int y level->setTileAndData( worldX, worldY, worldZ, block, data, Tile::UPDATE_CLIENTS); } - /** * The purpose of this method is to wrap the getTile call on Level, in order * to prevent the level from generating chunks that shouldn't be loaded yet. @@ -577,9 +459,7 @@ int StructurePiece::getBlock( Level* level, int x, int y, int z, BoundingBox* ch int worldZ = getWorldZ( x, z ); if ( !chunkBB->isInside( worldX, worldY, worldZ ) ) - { return 0; - } return level->getTile( worldX, worldY, worldZ ); } @@ -591,9 +471,7 @@ void StructurePiece::generateAirBox(Level *level, BoundingBox *chunkBB, int x0, for (int x = x0; x <= x1; x++) { for (int z = z0; z <= z1; z++) - { placeBlock(level, 0, 0, x, y, z, chunkBB); - } } } } @@ -607,20 +485,13 @@ void StructurePiece::generateBox( Level* level, BoundingBox* chunkBB, int x0, in { for ( int z = z0; z <= z1; z++ ) { - if ( skipAir && getBlock( level, x, y, z, chunkBB ) == 0 ) - { continue; - } - if ( y == y0 || y == y1 || x == x0 || x == x1 || z == z0 || z == z1 ) - { - placeBlock( level, edgeTile, 0, x, y, z, chunkBB ); - } - else - { - placeBlock( level, fillTile, 0, x, y, z, chunkBB ); - } + if ( y == y0 || y == y1 || x == x0 || x == x1 || z == z0 || z == z1 ) + placeBlock( level, edgeTile, 0, x, y, z, chunkBB ); + else + placeBlock( level, fillTile, 0, x, y, z, chunkBB ); } } } @@ -634,27 +505,19 @@ void StructurePiece::generateBox(Level *level, BoundingBox *chunkBB, int x0, int { for (int z = z0; z <= z1; z++) { - if (skipAir && getBlock(level, x, y, z, chunkBB) == 0) - { continue; - } - if (y == y0 || y == y1 || x == x0 || x == x1 || z == z0 || z == z1) - { - placeBlock(level, edgeTile, edgeData, x, y, z, chunkBB); - } - else - { - placeBlock(level, fillTile, fillData, x, y, z, chunkBB); - } + if (y == y0 || y == y1 || x == x0 || x == x1 || z == z0 || z == z1) + placeBlock(level, edgeTile, edgeData, x, y, z, chunkBB); + else + placeBlock(level, fillTile, fillData, x, y, z, chunkBB); } } } } -void StructurePiece::generateBox( Level* level, BoundingBox* chunkBB, BoundingBox* boxBB, int edgeTile, int fillTile, - bool skipAir ) +void StructurePiece::generateBox( Level* level, BoundingBox* chunkBB, BoundingBox* boxBB, int edgeTile, int fillTile, bool skipAir ) { generateBox( level, chunkBB, boxBB->x0, boxBB->y0, boxBB->z0, boxBB->x1, boxBB->y1, boxBB->z1, edgeTile, fillTile, skipAir ); @@ -669,21 +532,17 @@ void StructurePiece::generateBox( Level* level, BoundingBox* chunkBB, int x0, in { for ( int z = z0; z <= z1; z++ ) { - if ( skipAir && getBlock( level, x, y, z, chunkBB ) == 0 ) - { continue; - } + selector->next( random, x, y, z, y == y0 || y == y1 || x == x0 || x == x1 || z == z0 || z == z1 ); placeBlock( level, selector->getNextId(), selector->getNextData(), x, y, z, chunkBB ); - } } } } -void StructurePiece::generateBox( Level* level, BoundingBox* chunkBB, BoundingBox* boxBB, bool skipAir, Random* random, - StructurePiece::BlockSelector* selector ) +void StructurePiece::generateBox( Level* level, BoundingBox* chunkBB, BoundingBox* boxBB, bool skipAir, Random* random, StructurePiece::BlockSelector* selector ) { generateBox( level, chunkBB, boxBB->x0, boxBB->y0, boxBB->z0, boxBB->x1, boxBB->y1, boxBB->z1, skipAir, random, selector ); @@ -699,31 +558,22 @@ void StructurePiece::generateMaybeBox( Level* level, BoundingBox* chunkBB, Rando { for ( int z = z0; z <= z1; z++ ) { - if ( random->nextFloat() > probability ) - { continue; - } - if ( skipAir && getBlock( level, x, y, z, chunkBB ) == 0 ) - { - continue; - } - if ( y == y0 || y == y1 || x == x0 || x == x1 || z == z0 || z == z1 ) - { - placeBlock( level, edgeTile, 0, x, y, z, chunkBB ); - } - else - { - placeBlock( level, fillTile, 0, x, y, z, chunkBB ); - } + if ( skipAir && getBlock( level, x, y, z, chunkBB ) == 0 ) + continue; + + if ( y == y0 || y == y1 || x == x0 || x == x1 || z == z0 || z == z1 ) + placeBlock( level, edgeTile, 0, x, y, z, chunkBB ); + else + placeBlock( level, fillTile, 0, x, y, z, chunkBB ); } } } } -void StructurePiece::maybeGenerateBlock( Level* level, BoundingBox* chunkBB, Random *random, float probability, int x, - int y, int z, int tile, int data ) +void StructurePiece::maybeGenerateBlock( Level* level, BoundingBox* chunkBB, Random *random, float probability, int x, int y, int z, int tile, int data ) { if ( random->nextFloat() < probability ) { @@ -731,8 +581,7 @@ void StructurePiece::maybeGenerateBlock( Level* level, BoundingBox* chunkBB, Ran } } -void StructurePiece::generateUpperHalfSphere( Level* level, BoundingBox* chunkBB, int x0, int y0, int z0, int x1, - int y1, int z1, int fillTile, bool skipAir ) +void StructurePiece::generateUpperHalfSphere( Level* level, BoundingBox* chunkBB, int x0, int y0, int z0, int x1, int y1, int z1, int fillTile, bool skipAir ) { float diagX = static_cast(x1 - x0 + 1); float diagY = static_cast(y1 - y0 + 1); @@ -753,18 +602,13 @@ void StructurePiece::generateUpperHalfSphere( Level* level, BoundingBox* chunkBB float normalizedZDistance = ( float )( z - cz ) / ( diagZ * 0.5f ); if ( skipAir && getBlock( level, x, y, z, chunkBB ) == 0 ) - { continue; - } float dist = ( normalizedXDistance * normalizedXDistance ) + ( normalizedYDistance * normalizedYDistance ) + ( normalizedZDistance * normalizedZDistance ); if ( dist <= 1.05f ) - { placeBlock( level, fillTile, 0, x, y, z, chunkBB ); - } - } } } @@ -792,9 +636,7 @@ void StructurePiece::generateFullSphere( Level* level, BoundingBox* chunkBB, int } if ( ( float ) radius - dist > 0.5f ) - { placeBlock( level, fillTile, fillData, x, y, z, chunkBB ); - } } } } @@ -807,9 +649,7 @@ void StructurePiece::generateAirColumnUp( Level* level, int x, int startY, int z int worldZ = getWorldZ( x, z ); if ( !chunkBB->isInside( worldX, worldY, worldZ ) ) - { return; - } while ( !level->isEmptyTile( worldX, worldY, worldZ ) && worldY < Level::maxBuildHeight - 1 ) { @@ -823,9 +663,7 @@ void StructurePiece::generateAirBoxUp( Level* level, int x0, int z0, int x1, int for ( int x = x0; x < x1; ++x ) { for ( int z = z0; z < z1; ++z ) - { placeBlock( level, 0, 0, x, y, z, chunkBB ); - } } } @@ -836,9 +674,7 @@ void StructurePiece::fillColumnDown( Level* level, int tile, int tileData, int x int worldZ = getWorldZ( x, z ); if ( !chunkBB->isInside( worldX, worldY, worldZ ) ) - { return; - } while ( ( level->isEmptyTile( worldX, worldY, worldZ ) || level->getMaterial( worldX, worldY, worldZ )->isLiquid() ) && worldY > 1 ) { @@ -852,9 +688,7 @@ void StructurePiece::fillBoxDown( Level* level, int tileId, int tileData, int x0 for ( int x = x0; x <= x1; x++ ) { for ( int z = z0; z <= z1; z++ ) - { fillColumnDown( level, tileId, tileData, x, y0, z, chunkBB ); - } } } @@ -914,9 +748,7 @@ void StructurePiece::createCrops( Level *level, BoundingBox *chunkBB, Random *ra for ( int x = x0; x <= x1; x++ ) { for ( int z = z0; z <= z1; z++ ) - { placeBlock( level, tileId, Mth::nextInt( random, minData, maxData ), x, y, z, chunkBB ); - } } } @@ -949,25 +781,19 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk bool invert = s.v26[1] != 0; if ( bitIndex >= (int)featureConditions.size() ) - { shouldGenerate = false; - } else { bool bit = featureConditions[bitIndex]; if ( invert ) { if ( bit ) - { shouldGenerate = false; - } } else { if ( !bit ) - { shouldGenerate = false; - } } } } @@ -1000,7 +826,8 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk break; } } - if (!shouldGenerate) break; + if (!shouldGenerate) + break; } } @@ -1012,32 +839,41 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk { int offsetValue = tileOptionRemap[remapIdx]; // start - if (s.startRemap0 == remapIdx) s.x0 += offsetValue; - if (s.startRemap1 == remapIdx) s.x0 += offsetValue; - if (s.startRemap2 == remapIdx) s.y0 += offsetValue; + if (s.startRemap0 == remapIdx) + s.x0 += offsetValue; + if (s.startRemap1 == remapIdx) + s.x0 += offsetValue; + if (s.startRemap2 == remapIdx) + s.y0 += offsetValue; // end - if (s.endRemap0 == remapIdx) s.x1 += offsetValue; - if (s.endRemap1 == remapIdx) s.x1 += offsetValue; - if (s.endRemap2 == remapIdx) s.y1 += offsetValue; + if (s.endRemap0 == remapIdx) + s.x1 += offsetValue; + if (s.endRemap1 == remapIdx) + s.x1 += offsetValue; + if (s.endRemap2 == remapIdx) + s.y1 += offsetValue; } switch( s.id ) { case eGenerateStructure_Block: + { placeBlock( level, s.tileId, getBlockDataValue( (StructureTable::eBlockDataType)s.dataType, s.tileId, s.data ), s.x0, s.y0, s.z0, chunkBB ); break; - + } /* case eGenerateStructure_maybeGenerateBlock: + { maybeGenerateBlock( level, chunkBB, random, s.probability, s.x0, s.y0, s.z0, s.tileId, s.data ); break; - + } case eGenerateStructure_AirBox: + { generateAirBox( level, chunkBB, s.x0, s.y0, s.z0, s.x1, s.y1, s.z1 ); break; + } */ - case eGenerateStructure_Box: { int data0 = getBlockDataValue( (StructureTable::eBlockDataType)s.dataType, s.tileId, s.data ); @@ -1048,14 +884,16 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk /* case eGenerateStructure_MaybeBox: + { generateMaybeBox( level, chunkBB, random, s.probability, s.x0, s.y0, s.z0, s.x1, s.y1, s.z1, s.tileId, s.data, false ); break; - + } case eGenerateStructure_UpperHalfSphere: + { generateUpperHalfSphere( level, chunkBB, s.x0, s.y0, s.z0, s.x1, s.y1, s.z1, s.tileId, false ); break; + } */ - case eGenerateStructure_FullSphere: { int data0 = getBlockDataValue( (StructureTable::eBlockDataType)s.dataType, s.tileId, s.data ); @@ -1063,31 +901,30 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk generateFullSphere( level, chunkBB, s.x0, s.y0, s.z0, s.v25[0], s.tileId, data0, s.secondTileId, data1, false ); break; } - /* case eGenerateStructure_AirColumnUp: + { generateAirColumnUp( level, s.x0, s.y0, s.z0, chunkBB ); break; + } */ - case eGenerateStructure_fillColumnDown: { int data0 = getBlockDataValue( (StructureTable::eBlockDataType)s.dataType, s.tileId, s.data ); fillColumnDown( level, s.tileId, data0, s.x0, s.y0, s.z0, chunkBB ); break; } - case eGenerateStructure_fillBoxDown: { int data0 = getBlockDataValue( (StructureTable::eBlockDataType)s.dataType, s.tileId, s.data ); fillBoxDown( level, s.tileId, data0, s.x0, s.y0, s.z0, s.x1, s.z1, chunkBB ); break; } - case eGenerateStructure_generateAirBoxUp: + { generateAirBoxUp( level, s.x0, s.z0, s.x1, s.z1, s.y0, chunkBB ); break; - + } case eGenerateStructure_Crops: { if( tileOptionRemap.empty() ) @@ -1109,7 +946,6 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk createCrops( level, chunkBB, random, s.x0, s.z0, s.x1, s.z1, s.y0, cropTileId, minCropAge, maxCropAge); break; } - case eGenerateStructure_CreateDoor: { int worldX = getWorldX( s.x0, s.z0 ); @@ -1119,38 +955,28 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk { int doorData = getBlockDataValue( (StructureTable::eBlockDataType)s.dataType, s.tileId, s.data ); if( s.tileId == Tile::door_wood_Id ) - { DoorItem::place( level, worldX, worldY, worldZ, doorData, Tile::door_wood ); - } else - { DoorItem::place( level, worldX, worldY, worldZ, doorData, Tile::door_iron ); - } } break; } - case eGenerateStructure_CheckBlock: { int block = getBlock(level, s.x0, s.y0, s.z0, chunkBB); bool match = (block != 0); if (!s.v25.empty() && s.v25[0] == 0) - { match = (block == 0); - } if (!match) { if (!s.v27.empty()) - { failures[s.v27[0]] = true; - } } break; } - default: break; } @@ -1164,9 +990,7 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk bool process = true; if ( (int)objectPlacedFlags.size() == (int)piece->objects.size() ) - { process = objectPlacedFlags[i]; - } bool placed = false; @@ -1187,13 +1011,9 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk int rollOffset = random->nextInt( o.rollWeight ); if ( o.id == eGenerateObject_Chest ) - { placed = createChest( level, chunkBB, random, o.x, o.y, o.z, treasure, o.rollCount + rollOffset ); - } else - { placed = createDispenser( level, chunkBB, random, o.x, o.y, o.z, o.dispenserDir, treasure, o.rollCount + rollOffset ); - } delete book; } @@ -1201,13 +1021,9 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk { int rollOffset = random->nextInt( o.rollWeight ); if ( o.id == eGenerateObject_Chest ) - { placed = createChest( level, chunkBB, random, o.x, o.y, o.z, treasureItems, o.rollCount + rollOffset ); - } else - { placed = createDispenser( level, chunkBB, random, o.x, o.y, o.z, o.dispenserDir, treasureItems, o.rollCount + rollOffset ); - } } } } @@ -1222,17 +1038,13 @@ void StructurePiece::generateStructureFromData( Level *level, BoundingBox *chunk const StructureTable::EntityData &e = piece->entities[j]; if ( j >= entitySpawnCounts.size() ) - { entitySpawnCounts.push_back( 0 ); - } spawnEntity( level, chunkBB, e.x, e.y, e.z, (eGenerateEntity)e.id, e.count, const_cast&>( e.professions ), entitySpawnCounts[j] ); } for (int i = 0; i < treasureItems.length; i++) - { delete treasureItems[i]; - } } void StructurePiece::setDirty() @@ -1251,9 +1063,7 @@ void StructurePiece::spawnEntity( Level *level, BoundingBox *chunkBB, int x, int worldX += entitySpawnCounts; if ( !chunkBB->isInside( worldX, worldY, worldZ ) ) - { return; - } if ( entityType == eGenerateEntity_Witch ) { @@ -1334,9 +1144,7 @@ void StructurePiece::addBoolSaveData(DataOutputStream *dos, vector &data) outData.append( woss.str() ); if ( i < data.size() - 1 ) - { outData.append( L"," ); - } } dos->writeUTF( outData ); @@ -1375,9 +1183,7 @@ void StructurePiece::addIntSaveData(DataOutputStream *dos, vector &data) outData.append( woss.str() ); if ( i < data.size() - 1 ) - { outData.append( L"," ); - } } dos->writeUTF( outData ); diff --git a/Minecraft.World/WritingBookItem.cpp b/Minecraft.World/WritingBookItem.cpp index 9efa56eb..914b10e4 100644 --- a/Minecraft.World/WritingBookItem.cpp +++ b/Minecraft.World/WritingBookItem.cpp @@ -1,3 +1 @@ -#include "stdafx.h" - #include "WritingBookItem.h" diff --git a/Minecraft.World/WrittenBookItem.cpp b/Minecraft.World/WrittenBookItem.cpp index 00b68b75..19c5080d 100644 --- a/Minecraft.World/WrittenBookItem.cpp +++ b/Minecraft.World/WrittenBookItem.cpp @@ -1,4 +1,2 @@ -#include "stdafx.h" - #include "WrittenBookItem.h" #include "WritingBookItem.h"