diff --git a/Minecraft.Client/Common/Media/MediaWindows64.arc b/Minecraft.Client/Common/Media/MediaWindows64.arc
index 6ce552c5..20b2d76e 100644
Binary files a/Minecraft.Client/Common/Media/MediaWindows64.arc and b/Minecraft.Client/Common/Media/MediaWindows64.arc differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/items.png b/Minecraft.Client/Common/res/TitleUpdate/res/items.png
index 5456083c..7e3f8b05 100644
Binary files a/Minecraft.Client/Common/res/TitleUpdate/res/items.png and b/Minecraft.Client/Common/res/TitleUpdate/res/items.png differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png b/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png
index 0246b41d..38a5ff2c 100644
Binary files a/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png and b/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png
index 02686b3e..6a1d1937 100644
Binary files a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png and b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel2.png differ
diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png
index dddef615..231e66c3 100644
Binary files a/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png and b/Minecraft.Client/Common/res/TitleUpdate/res/terrainMipMapLevel3.png differ
diff --git a/Minecraft.Client/PreStitchedTextureMap.cpp b/Minecraft.Client/PreStitchedTextureMap.cpp
index 33e0b59e..d7189f39 100644
--- a/Minecraft.Client/PreStitchedTextureMap.cpp
+++ b/Minecraft.Client/PreStitchedTextureMap.cpp
@@ -522,11 +522,11 @@ void PreStitchedTextureMap::loadUVs()
ADD_ICON(10, 15, L"dyePowder_orange")
ADD_ICON(11, 0, L"leggingsCloth_overlay")
- //ADD_ICON(11, 1, L"unused")
- //ADD_ICON(11, 2, L"unused")
- //ADD_ICON(11, 3, L"unused")
- //ADD_ICON(11, 4, L"unused")
- //ADD_ICON(11, 5, L"unused")
+ ADD_ICON(11, 1, L"doorSpruce")
+ ADD_ICON(11, 2, L"doorBirch")
+ ADD_ICON(11, 3, L"doorJungle")
+ ADD_ICON(11, 4, L"doorAcacia")
+ ADD_ICON(11, 5, L"doorDark")
//ADD_ICON(11, 6, L"unused")
ADD_ICON(11, 7, L"minecart_hopper")
ADD_ICON(11, 8, L"hopper")
@@ -986,5 +986,25 @@ void PreStitchedTextureMap::loadUVs()
ADD_ICON(19, 13, L"glass_pane_top_silver");
ADD_ICON(19, 14, L"glass_pane_top_white");
ADD_ICON(19, 15, L"glass_pane_top_yellow");
+
+ ADD_ICON(20, 0, L"door_spruce_upper");
+ ADD_ICON(20, 1, L"door_birch_upper");
+ ADD_ICON(20, 2, L"door_jungle_upper");
+ ADD_ICON(20, 3, L"door_acacia_upper");
+ ADD_ICON(20, 4, L"door_dark_upper");
+ ADD_ICON(20, 5, L"log_acacia_top");
+ ADD_ICON(20, 6, L"log_acacia");
+ ADD_ICON(20, 7, L"planks_acacia");
+ ADD_ICON(20, 8, L"log_dark_top");
+ ADD_ICON(20, 9, L"log_dark");
+ ADD_ICON(20, 10, L"planks_dark");
+ ADD_ICON(20, 11, L"iron_trapdoor");
+ ADD_ICON(20, 12, L"inverted_daylight_detector");
+
+ ADD_ICON(21, 0, L"door_spruce_lower");
+ ADD_ICON(21, 1, L"door_birch_lower");
+ ADD_ICON(21, 2, L"door_jungle_lower");
+ ADD_ICON(21, 3, L"door_acacia_lower");
+ ADD_ICON(21, 4, L"door_dark_lower");
}
}
diff --git a/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml b/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml
index 36b521dd..becae532 100644
--- a/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml
+++ b/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml
@@ -2310,7 +2310,7 @@ Can also be used for low-level lighting.
- Wooden Door
+ Oak Door
@@ -3322,7 +3322,7 @@ Can also be used for low-level lighting.
- Wooden Door
+ Oak Door
@@ -3394,7 +3394,7 @@ Can also be used for low-level lighting.
- Fence
+ Oak Fence
@@ -3538,7 +3538,7 @@ Can also be used for low-level lighting.
- Fence Gate
+ Oak Fence Gate
@@ -8811,4 +8811,124 @@ All Ender Chests in a world are linked. Items placed into an Ender Chest are acc
Cure
+
+
+ Acacia Wood
+
+
+
+ Dark Oak Wood
+
+
+
+ Acacia Wood Planks
+
+
+
+ Dark Oak Wood Planks
+
+
+
+ Acacia Wood Stairs
+
+
+
+ Dark Oak Wood Stairs
+
+
+
+ Acacia Wood Slab
+
+
+
+ Dark Oak Wood Slab
+
+
+
+ Dark Oak Wood Slab
+
+
+
+ Iron Trapdoor
+
+
+
+ Spruce Door
+
+
+
+ Birch Door
+
+
+
+ Jungle Door
+
+
+
+ Acacia Door
+
+
+
+ Dark Oak Door
+
+
+
+ Spruce Fence
+
+
+
+ Birch Fence
+
+
+
+ Jungle Fence
+
+
+
+ Acacia Fence
+
+
+
+ Dark Oak Fence
+
+
+
+ Spruce Fence Gate
+
+
+
+ Birch Fence Gate
+
+
+
+ Jungle Fence Gate
+
+
+
+ Acacia Fence Gate
+
+
+
+ Dark Oak Fence Gate
+
+
+
+ Spruce Door
+
+
+
+ Birch Door
+
+
+
+ Jungle Door
+
+
+
+ Acacia Door
+
+
+
+ Dark Oak Door
+
\ No newline at end of file
diff --git a/Minecraft.Client/Windows64Media/strings.h b/Minecraft.Client/Windows64Media/strings.h
index 63e3a7f4..5ec460af 100644
--- a/Minecraft.Client/Windows64Media/strings.h
+++ b/Minecraft.Client/Windows64Media/strings.h
@@ -1,7 +1,7 @@
#pragma once
// Auto-generated by StringTable builder — do not edit manually.
// Source language: en-US
-// Total strings: 2286
+// Total strings: 2315
#define IDS_NULL 0
#define IDS_OK 1
@@ -2165,127 +2165,156 @@
#define IDS_TUTORIAL_TASK_MINECART_PUSHING 2159
#define IDS_CONNECTION_FAILED_NO_SD_SPLITSCREEN 2160
#define IDS_TOOLTIPS_CURE 2161
-#define IDS_LANG_SYSTEM 2162
-#define IDS_LANG_ENGLISH 2163
-#define IDS_LANG_GERMAN 2164
-#define IDS_LANG_SPANISH 2165
-#define IDS_LANG_SPANISH_SPAIN 2166
-#define IDS_LANG_SPANISH_LATIN_AMERICA 2167
-#define IDS_LANG_FRENCH 2168
-#define IDS_LANG_ITALIAN 2169
-#define IDS_LANG_PORTUGUESE 2170
-#define IDS_LANG_PORTUGUESE_PORTUGAL 2171
-#define IDS_LANG_PORTUGUESE_BRAZIL 2172
-#define IDS_LANG_JAPANESE 2173
-#define IDS_LANG_KOREAN 2174
-#define IDS_LANG_CHINESE_TRADITIONAL 2175
-#define IDS_LANG_CHINESE_SIMPLIFIED 2176
-#define IDS_LANG_DANISH 2177
-#define IDS_LANG_FINISH 2178
-#define IDS_LANG_DUTCH 2179
-#define IDS_LANG_POLISH 2180
-#define IDS_LANG_RUSSIAN 2181
-#define IDS_LANG_SWEDISH 2182
-#define IDS_LANG_NORWEGIAN 2183
-#define IDS_LANG_GREEK 2184
-#define IDS_LANG_TURKISH 2185
-#define IDS_LEADERBOARD_KILLS_EASY 2186
-#define IDS_LEADERBOARD_KILLS_NORMAL 2187
-#define IDS_LEADERBOARD_KILLS_HARD 2188
-#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2189
-#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2190
-#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2191
-#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2192
-#define IDS_LEADERBOARD_FARMING_PEACEFUL 2193
-#define IDS_LEADERBOARD_FARMING_EASY 2194
-#define IDS_LEADERBOARD_FARMING_NORMAL 2195
-#define IDS_LEADERBOARD_FARMING_HARD 2196
-#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2197
-#define IDS_LEADERBOARD_TRAVELLING_EASY 2198
-#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2199
-#define IDS_LEADERBOARD_TRAVELLING_HARD 2200
-#define IDS_TIPS_GAMETIP_0 2201
-#define IDS_TIPS_GAMETIP_1 2202
-#define IDS_TIPS_GAMETIP_48 2203
-#define IDS_TIPS_GAMETIP_44 2204
-#define IDS_TIPS_GAMETIP_45 2205
-#define IDS_TIPS_TRIVIA_4 2206
-#define IDS_TIPS_TRIVIA_17 2207
-#define IDS_HOW_TO_PLAY_MULTIPLAYER 2208
-#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2209
-#define IDS_HOW_TO_PLAY_CREATIVE 2210
-#define IDS_TUTORIAL_TASK_FLY 2211
-#define IDS_TOOLTIPS_SELECTDEVICE 2212
-#define IDS_TOOLTIPS_CHANGEDEVICE 2213
-#define IDS_TOOLTIPS_VIEW_GAMERCARD 2214
-#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2215
-#define IDS_TOOLTIPS_INVITE_PARTY 2216
-#define IDS_CONFIRM_START_CREATIVE 2217
-#define IDS_CONFIRM_START_SAVEDINCREATIVE 2218
-#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2219
-#define IDS_CONFIRM_START_HOST_PRIVILEGES 2220
-#define IDS_CONNECTION_LOST_LIVE 2221
-#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2222
-#define IDS_AWARD_AVATAR1 2223
-#define IDS_AWARD_AVATAR2 2224
-#define IDS_AWARD_AVATAR3 2225
-#define IDS_AWARD_THEME 2226
-#define IDS_UNLOCK_ACHIEVEMENT_TEXT 2227
-#define IDS_UNLOCK_AVATAR_TEXT 2228
-#define IDS_UNLOCK_GAMERPIC_TEXT 2229
-#define IDS_UNLOCK_THEME_TEXT 2230
-#define IDS_UNLOCK_ACCEPT_INVITE 2231
-#define IDS_UNLOCK_GUEST_TEXT 2232
-#define IDS_LEADERBOARD_GAMERTAG 2233
-#define IDS_GROUPNAME_POTIONS_480 2234
-#define IDS_RETURNEDTOTITLESCREEN_TEXT 2235
-#define IDS_TRIALOVER_TEXT 2236
-#define IDS_FATAL_ERROR_TEXT 2237
-#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2238
-#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2239
-#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2240
-#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2241
-#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2242
-#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2243
-#define IDS_SAVE_ICON_MESSAGE 2244
-#define IDS_GAMEOPTION_HOST_PRIVILEGES 2245
-#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2246
-#define IDS_ACHIEVEMENTS 2247
-#define IDS_LABEL_GAMERTAGS 2248
-#define IDS_IN_GAME_GAMERTAGS 2249
-#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2250
-#define IDS_TITLE_UPDATE_NAME 2251
-#define IDS_PLATFORM_NAME 2252
-#define IDS_BACK_BUTTON 2253
-#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2254
-#define IDS_KICK_PLAYER_DESCRIPTION 2255
-#define IDS_USING_TRIAL_TEXUREPACK_WARNING 2256
-#define IDS_WORLD_SIZE_TITLE_SMALL 2257
-#define IDS_WORLD_SIZE_TITLE_MEDIUM 2258
-#define IDS_WORLD_SIZE_TITLE_LARGE 2259
-#define IDS_WORLD_SIZE_TITLE_CLASSIC 2260
-#define IDS_WORLD_SIZE 2261
-#define IDS_GAMEOPTION_WORLD_SIZE 2262
-#define IDS_DISABLE_SAVING 2263
-#define IDS_GAMEOPTION_DISABLE_SAVING 2264
-#define IDS_RICHPRESENCE_GAMESTATE 2265
-#define IDS_RICHPRESENCE_IDLE 2266
-#define IDS_RICHPRESENCE_MENUS 2267
-#define IDS_RICHPRESENCE_MULTIPLAYER 2268
-#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2269
-#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2270
-#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2271
-#define IDS_RICHPRESENCESTATE_BLANK 2272
-#define IDS_RICHPRESENCESTATE_RIDING_PIG 2273
-#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2274
-#define IDS_RICHPRESENCESTATE_BOATING 2275
-#define IDS_RICHPRESENCESTATE_FISHING 2276
-#define IDS_RICHPRESENCESTATE_CRAFTING 2277
-#define IDS_RICHPRESENCESTATE_FORGING 2278
-#define IDS_RICHPRESENCESTATE_NETHER 2279
-#define IDS_RICHPRESENCESTATE_CD 2280
-#define IDS_RICHPRESENCESTATE_MAP 2281
-#define IDS_RICHPRESENCESTATE_ENCHANTING 2282
-#define IDS_RICHPRESENCESTATE_BREWING 2283
-#define IDS_RICHPRESENCESTATE_ANVIL 2284
-#define IDS_RICHPRESENCESTATE_TRADING 2285
+#define IDS_TILE_LOG_ACACIA 2162
+#define IDS_TILE_LOG_DARK_OAK 2163
+#define IDS_TILE_ACACIA_PLANKS 2164
+#define IDS_TILE_DARK_OAK_PLANKS 2165
+#define IDS_TILE_STAIRS_ACACIAWOOD 2166
+#define IDS_TILE_STAIRS_DARKWOOD 2167
+#define IDS_TILE_STONESLAB_ACACIA 2168
+#define IDS_TILE_STONESLAB_DARK_OAK 2169
+#define IDS_TILE_IRON_TRAPDOOR 2170
+#define IDS_TILE_DOOR_SPRUCE 2171
+#define IDS_TILE_DOOR_BIRCH 2172
+#define IDS_TILE_DOOR_JUNGLE 2173
+#define IDS_TILE_DOOR_ACACIA 2174
+#define IDS_TILE_DOOR_DARK 2175
+#define IDS_TILE_SPRUCE_FENCE 2176
+#define IDS_TILE_BIRCH_FENCE 2177
+#define IDS_TILE_JUNGLE_FENCE 2178
+#define IDS_TILE_ACACIA_FENCE 2179
+#define IDS_TILE_DARK_FENCE 2180
+#define IDS_TILE_SPRUCE_GATE 2181
+#define IDS_TILE_BIRCH_GATE 2182
+#define IDS_TILE_JUNGLE_GATE 2183
+#define IDS_TILE_ACACIA_GATE 2184
+#define IDS_TILE_DARK_GATE 2185
+#define IDS_ITEM_DOOR_SPRUCE 2186
+#define IDS_ITEM_DOOR_BIRCH 2187
+#define IDS_ITEM_DOOR_JUNGLE 2188
+#define IDS_ITEM_DOOR_ACACIA 2189
+#define IDS_ITEM_DOOR_DARK 2190
+#define IDS_LANG_SYSTEM 2191
+#define IDS_LANG_ENGLISH 2192
+#define IDS_LANG_GERMAN 2193
+#define IDS_LANG_SPANISH 2194
+#define IDS_LANG_SPANISH_SPAIN 2195
+#define IDS_LANG_SPANISH_LATIN_AMERICA 2196
+#define IDS_LANG_FRENCH 2197
+#define IDS_LANG_ITALIAN 2198
+#define IDS_LANG_PORTUGUESE 2199
+#define IDS_LANG_PORTUGUESE_PORTUGAL 2200
+#define IDS_LANG_PORTUGUESE_BRAZIL 2201
+#define IDS_LANG_JAPANESE 2202
+#define IDS_LANG_KOREAN 2203
+#define IDS_LANG_CHINESE_TRADITIONAL 2204
+#define IDS_LANG_CHINESE_SIMPLIFIED 2205
+#define IDS_LANG_DANISH 2206
+#define IDS_LANG_FINISH 2207
+#define IDS_LANG_DUTCH 2208
+#define IDS_LANG_POLISH 2209
+#define IDS_LANG_RUSSIAN 2210
+#define IDS_LANG_SWEDISH 2211
+#define IDS_LANG_NORWEGIAN 2212
+#define IDS_LANG_GREEK 2213
+#define IDS_LANG_TURKISH 2214
+#define IDS_LEADERBOARD_KILLS_EASY 2215
+#define IDS_LEADERBOARD_KILLS_NORMAL 2216
+#define IDS_LEADERBOARD_KILLS_HARD 2217
+#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2218
+#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2219
+#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2220
+#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2221
+#define IDS_LEADERBOARD_FARMING_PEACEFUL 2222
+#define IDS_LEADERBOARD_FARMING_EASY 2223
+#define IDS_LEADERBOARD_FARMING_NORMAL 2224
+#define IDS_LEADERBOARD_FARMING_HARD 2225
+#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2226
+#define IDS_LEADERBOARD_TRAVELLING_EASY 2227
+#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2228
+#define IDS_LEADERBOARD_TRAVELLING_HARD 2229
+#define IDS_TIPS_GAMETIP_0 2230
+#define IDS_TIPS_GAMETIP_1 2231
+#define IDS_TIPS_GAMETIP_48 2232
+#define IDS_TIPS_GAMETIP_44 2233
+#define IDS_TIPS_GAMETIP_45 2234
+#define IDS_TIPS_TRIVIA_4 2235
+#define IDS_TIPS_TRIVIA_17 2236
+#define IDS_HOW_TO_PLAY_MULTIPLAYER 2237
+#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2238
+#define IDS_HOW_TO_PLAY_CREATIVE 2239
+#define IDS_TUTORIAL_TASK_FLY 2240
+#define IDS_TOOLTIPS_SELECTDEVICE 2241
+#define IDS_TOOLTIPS_CHANGEDEVICE 2242
+#define IDS_TOOLTIPS_VIEW_GAMERCARD 2243
+#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2244
+#define IDS_TOOLTIPS_INVITE_PARTY 2245
+#define IDS_CONFIRM_START_CREATIVE 2246
+#define IDS_CONFIRM_START_SAVEDINCREATIVE 2247
+#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2248
+#define IDS_CONFIRM_START_HOST_PRIVILEGES 2249
+#define IDS_CONNECTION_LOST_LIVE 2250
+#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2251
+#define IDS_AWARD_AVATAR1 2252
+#define IDS_AWARD_AVATAR2 2253
+#define IDS_AWARD_AVATAR3 2254
+#define IDS_AWARD_THEME 2255
+#define IDS_UNLOCK_ACHIEVEMENT_TEXT 2256
+#define IDS_UNLOCK_AVATAR_TEXT 2257
+#define IDS_UNLOCK_GAMERPIC_TEXT 2258
+#define IDS_UNLOCK_THEME_TEXT 2259
+#define IDS_UNLOCK_ACCEPT_INVITE 2260
+#define IDS_UNLOCK_GUEST_TEXT 2261
+#define IDS_LEADERBOARD_GAMERTAG 2262
+#define IDS_GROUPNAME_POTIONS_480 2263
+#define IDS_RETURNEDTOTITLESCREEN_TEXT 2264
+#define IDS_TRIALOVER_TEXT 2265
+#define IDS_FATAL_ERROR_TEXT 2266
+#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2267
+#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2268
+#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2269
+#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2270
+#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2271
+#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2272
+#define IDS_SAVE_ICON_MESSAGE 2273
+#define IDS_GAMEOPTION_HOST_PRIVILEGES 2274
+#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2275
+#define IDS_ACHIEVEMENTS 2276
+#define IDS_LABEL_GAMERTAGS 2277
+#define IDS_IN_GAME_GAMERTAGS 2278
+#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2279
+#define IDS_TITLE_UPDATE_NAME 2280
+#define IDS_PLATFORM_NAME 2281
+#define IDS_BACK_BUTTON 2282
+#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2283
+#define IDS_KICK_PLAYER_DESCRIPTION 2284
+#define IDS_USING_TRIAL_TEXUREPACK_WARNING 2285
+#define IDS_WORLD_SIZE_TITLE_SMALL 2286
+#define IDS_WORLD_SIZE_TITLE_MEDIUM 2287
+#define IDS_WORLD_SIZE_TITLE_LARGE 2288
+#define IDS_WORLD_SIZE_TITLE_CLASSIC 2289
+#define IDS_WORLD_SIZE 2290
+#define IDS_GAMEOPTION_WORLD_SIZE 2291
+#define IDS_DISABLE_SAVING 2292
+#define IDS_GAMEOPTION_DISABLE_SAVING 2293
+#define IDS_RICHPRESENCE_GAMESTATE 2294
+#define IDS_RICHPRESENCE_IDLE 2295
+#define IDS_RICHPRESENCE_MENUS 2296
+#define IDS_RICHPRESENCE_MULTIPLAYER 2297
+#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2298
+#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2299
+#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2300
+#define IDS_RICHPRESENCESTATE_BLANK 2301
+#define IDS_RICHPRESENCESTATE_RIDING_PIG 2302
+#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2303
+#define IDS_RICHPRESENCESTATE_BOATING 2304
+#define IDS_RICHPRESENCESTATE_FISHING 2305
+#define IDS_RICHPRESENCESTATE_CRAFTING 2306
+#define IDS_RICHPRESENCESTATE_FORGING 2307
+#define IDS_RICHPRESENCESTATE_NETHER 2308
+#define IDS_RICHPRESENCESTATE_CD 2309
+#define IDS_RICHPRESENCESTATE_MAP 2310
+#define IDS_RICHPRESENCESTATE_ENCHANTING 2311
+#define IDS_RICHPRESENCESTATE_BREWING 2312
+#define IDS_RICHPRESENCESTATE_ANVIL 2313
+#define IDS_RICHPRESENCESTATE_TRADING 2314
diff --git a/Minecraft.World/DaylightDetectorTile.cpp b/Minecraft.World/DaylightDetectorTile.cpp
index 0bfc949b..2da1ec7c 100644
--- a/Minecraft.World/DaylightDetectorTile.cpp
+++ b/Minecraft.World/DaylightDetectorTile.cpp
@@ -8,8 +8,9 @@
#include "JavaMath.h"
#include "DaylightDetectorTile.h"
-DaylightDetectorTile::DaylightDetectorTile(int id) : BaseEntityTile(id, Material::wood, isSolidRender() )
+DaylightDetectorTile::DaylightDetectorTile(int id, bool inverted) : BaseEntityTile(id, Material::wood, isSolidRender() )
{
+ this->inverted = inverted;
updateDefaultShape();
}
@@ -72,12 +73,27 @@ void DaylightDetectorTile::updateSignalStrength(Level *level, int x, int y, int
target = Redstone::SIGNAL_MAX;
}
+ if (inverted)
+ target = Redstone::SIGNAL_MAX - target;
+
if (current != target)
{
level->setData(x, y, z, target, UPDATE_ALL);
}
}
+bool DaylightDetectorTile::use(Level* level, int x, int y, int z, shared_ptr player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly/*=false*/)
+{
+ if (inverted)
+ {
+ level->setTileAndData(x, y, z, Tile::daylightDetector_Id, 0, UPDATE_CLIENTS);
+ } else {
+ level->setTileAndData(x, y, z, Tile::invertedDaylightDetector_Id, 0, UPDATE_CLIENTS);
+ }
+
+ return true;
+}
+
bool DaylightDetectorTile::isCubeShaped()
{
return false;
@@ -109,6 +125,11 @@ Icon *DaylightDetectorTile::getTexture(int face, int data)
void DaylightDetectorTile::registerIcons(IconRegister *iconRegister)
{
- icons[0] = iconRegister->registerIcon(getIconName() + L"_top");
+ if (inverted) {
+ icons[0] = iconRegister->registerIcon(L"inverted_" + getIconName());
+ }
+ else {
+ icons[0] = iconRegister->registerIcon(getIconName() + L"_top");
+ }
icons[1] = iconRegister->registerIcon(getIconName() + L"_side");
}
\ No newline at end of file
diff --git a/Minecraft.World/DaylightDetectorTile.h b/Minecraft.World/DaylightDetectorTile.h
index 635504d2..13b20c6d 100644
--- a/Minecraft.World/DaylightDetectorTile.h
+++ b/Minecraft.World/DaylightDetectorTile.h
@@ -7,9 +7,10 @@ class DaylightDetectorTile : public BaseEntityTile
friend class ChunkRebuildData;
private:
Icon *icons[2];
+ bool inverted;
public:
- DaylightDetectorTile(int id);
+ DaylightDetectorTile(int id, bool inverted);
virtual void updateDefaultShape(); // 4J Added override
virtual void updateShape(LevelSource *level, int x, int y, int z, int forceData = -1, shared_ptr forceEntity = shared_ptr());
@@ -24,4 +25,5 @@ public:
virtual shared_ptr newTileEntity(Level *level);
virtual Icon *getTexture(int face, int data);
virtual void registerIcons(IconRegister *iconRegister);
+ bool use(Level* level, int x, int y, int z, shared_ptr player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly = false); // 4J added soundOnly param
};
\ No newline at end of file
diff --git a/Minecraft.World/DoorItem.cpp b/Minecraft.World/DoorItem.cpp
index 97de0f65..24f9ca59 100644
--- a/Minecraft.World/DoorItem.cpp
+++ b/Minecraft.World/DoorItem.cpp
@@ -12,9 +12,10 @@ using namespace std;
#include "GenericStats.h"
#include "DoorItem.h"
-DoorItem::DoorItem(int id, Material *material) : Item(id)
+DoorItem::DoorItem(int id, Material *material, const wstring& doorType) : Item(id)
{
this->material = material;
+ this->doorType = doorType;
maxStackSize = 1;
}
@@ -25,8 +26,13 @@ bool DoorItem::useOn(shared_ptr instance, shared_ptr playe
Tile *tile;
- if (material == Material::wood) tile = Tile::door_wood;
- else tile = Tile::door_iron;
+ if (doorType == L"doorWood") tile = Tile::door_wood;
+ else if (doorType == L"doorIron") tile = Tile::door_iron;
+ else if (doorType == L"doorSpruce") tile = Tile::door_spruce;
+ else if (doorType == L"doorBirch") tile = Tile::door_birch;
+ else if (doorType == L"doorJungle") tile = Tile::door_jungle;
+ else if (doorType == L"doorAcacia") tile = Tile::door_acacia;
+ else if (doorType == L"doorDark") tile = Tile::door_dark;
if (!player->mayUseItemAt(x, y, z, face, instance) || !player->mayUseItemAt(x, y + 1, z, face, instance)) return false;
if (!tile->mayPlace(level, x, y, z)) return false;
diff --git a/Minecraft.World/DoorItem.h b/Minecraft.World/DoorItem.h
index 843c768b..836cfe91 100644
--- a/Minecraft.World/DoorItem.h
+++ b/Minecraft.World/DoorItem.h
@@ -11,10 +11,12 @@ class DoorItem : public Item
{
private:
Material *material;
+ wstring doorType;
public:
- DoorItem(int id, Material *material);
+ DoorItem(int id, Material *material, const wstring& doorType);
virtual bool useOn(shared_ptr instance, shared_ptr player, Level *level, int x, int y, int z, int face, float clickX, float clickY, float clickZ, bool bTestUseOnOnly=false);
static void place(Level *level, int x, int y, int z, int dir, Tile *tile);
};
+
\ No newline at end of file
diff --git a/Minecraft.World/DoorTile.cpp b/Minecraft.World/DoorTile.cpp
index 8b70e6d9..51f6c118 100644
--- a/Minecraft.World/DoorTile.cpp
+++ b/Minecraft.World/DoorTile.cpp
@@ -8,18 +8,15 @@
#include "net.minecraft.world.h"
#include "net.minecraft.h"
-const wstring DoorTile::TEXTURES[] = { L"doorWood_lower", L"doorWood_upper", L"doorIron_lower", L"doorIron_upper" };
+static std::map doorItemMap = {
+ { L"doorWood", Item::door_wood },
+ { L"doorIron", Item::door_iron },
+ { L"doorSpruce", Item::door_spruce }
+};
-DoorTile::DoorTile(int id, Material *material) : Tile(id, material,isSolidRender())
+DoorTile::DoorTile(int id, Material *material, const wstring& doorType) : Tile(id, material,isSolidRender())
{
- if (material == Material::metal)
- {
- texBase = 2;
- }
- else
- {
- texBase = 0;
- }
+ this->doorType = doorType;
float r = 0.5f;
float h = 1.0f;
@@ -288,8 +285,7 @@ void DoorTile::neighborChanged(Level *level, int x, int y, int z, int type)
int DoorTile::getResource(int data, Random *random, int playerBonusLevel)
{
if ((data & 8) != 0) return 0;
- if (material == Material::metal) return Item::door_iron->id;
- return Item::door_wood->id;
+ return doorItemMap[doorType]->id;
}
HitResult *DoorTile::clip(Level *level, int xt, int yt, int zt, Vec3 *a, Vec3 *b)
diff --git a/Minecraft.World/DoorTile.h b/Minecraft.World/DoorTile.h
index a4e4f62f..a2876d1c 100644
--- a/Minecraft.World/DoorTile.h
+++ b/Minecraft.World/DoorTile.h
@@ -22,16 +22,16 @@ public:
static const int C_LOWER_DATA_MASK = 7;
static const int C_IS_UPPER_MASK = 8;
static const int C_RIGHT_HINGE_MASK = 16;
+ wstring doorType;
private:
static const int DOOR_TILE_TEXTURE_COUNT = 4;
- static const wstring TEXTURES[];
int texBase;
Icon *iconTop[2];
Icon *iconBottom[2];
protected:
- DoorTile(int id, Material *material);
+ DoorTile(int id, Material *material, const wstring& doorType);
public:
virtual Icon *getTexture(int face, int data);
virtual Icon *getTexture(LevelSource *level, int x, int y, int z, int face);
diff --git a/Minecraft.World/FenceGateTile.cpp b/Minecraft.World/FenceGateTile.cpp
index bd1326a9..9caebb8d 100644
--- a/Minecraft.World/FenceGateTile.cpp
+++ b/Minecraft.World/FenceGateTile.cpp
@@ -2,6 +2,7 @@
#include "FenceGateTile.h"
#include "AABB.h"
#include "net.minecraft.world.level.h"
+#include "net.minecraft.world.h"
#include "net.minecraft.h"
#include "LevelEvent.h"
@@ -11,7 +12,7 @@ FenceGateTile::FenceGateTile(int id) : DirectionalTile(id, Material::wood, isSol
Icon *FenceGateTile::getTexture(int face, int data)
{
- return Tile::wood->getTexture(face);
+ return icon;
}
bool FenceGateTile::mayPlace(Level *level, int x, int y, int z)
@@ -139,7 +140,7 @@ bool FenceGateTile::isOpen(int data)
void FenceGateTile::registerIcons(IconRegister *iconRegister)
{
- // None
+ icon = iconRegister->registerIcon(getIconName());
}
bool FenceGateTile::shouldRenderFace(LevelSource *level, int x, int y, int z, int face)
diff --git a/Minecraft.World/FenceGateTile.h b/Minecraft.World/FenceGateTile.h
index 125a776d..585908d3 100644
--- a/Minecraft.World/FenceGateTile.h
+++ b/Minecraft.World/FenceGateTile.h
@@ -5,7 +5,7 @@ class FenceGateTile : public DirectionalTile
{
private:
static const int OPEN_BIT = 4;
-
+ Icon* icon;
public:
FenceGateTile(int id);
Icon *getTexture(int face, int data);
@@ -22,5 +22,5 @@ public:
virtual bool use(Level *level, int x, int y, int z, shared_ptr player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly = false); // 4J added soundOnly param
virtual void neighborChanged(Level *level, int x, int y, int z, int type);
static bool isOpen(int data);
- void registerIcons(IconRegister *iconRegister);
+ virtual void registerIcons(IconRegister* iconRegister);
};
diff --git a/Minecraft.World/FenceTile.cpp b/Minecraft.World/FenceTile.cpp
index 83c31167..1ccddb20 100644
--- a/Minecraft.World/FenceTile.cpp
+++ b/Minecraft.World/FenceTile.cpp
@@ -9,6 +9,11 @@ FenceTile::FenceTile(int id, const wstring &texture, Material *material) : Tile(
this->texture = texture;
}
+static const int fences[] = {
+ Tile::fence_Id, Tile::netherFence_Id, Tile::spruceFence_Id,
+ Tile::birchFence_Id, Tile::jungleFence_Id, Tile::acaciaFence_Id, Tile::darkFence_Id
+};
+
void FenceTile::addAABBs(Level *level, int x, int y, int z, AABB *box, AABBList *boxes, shared_ptr source)
{
bool n = connectsTo(level, x, y, z - 1);
@@ -117,7 +122,7 @@ int FenceTile::getRenderShape()
bool FenceTile::connectsTo(LevelSource *level, int x, int y, int z)
{
int tile = level->getTile(x, y, z);
- if (tile == id || tile == Tile::fenceGate_Id)
+ if (isFence(tile) || tile == Tile::fenceGate_Id)
{
return true;
}
@@ -134,7 +139,8 @@ bool FenceTile::connectsTo(LevelSource *level, int x, int y, int z)
bool FenceTile::isFence(int tile)
{
- return tile == Tile::fence_Id || tile == Tile::netherFence_Id;
+ return std::any_of(std::begin(fences), std::end(fences),
+ [&](int id) { return tile == id; });
}
void FenceTile::registerIcons(IconRegister *iconRegister)
diff --git a/Minecraft.World/FireTile.cpp b/Minecraft.World/FireTile.cpp
index 49f859b5..3567a64e 100644
--- a/Minecraft.World/FireTile.cpp
+++ b/Minecraft.World/FireTile.cpp
@@ -45,6 +45,8 @@ void FireTile::init()
setFlammable(Tile::stairs_birchwood_Id, FLAME_HARD, BURN_MEDIUM);
setFlammable(Tile::stairs_sprucewood_Id, FLAME_HARD, BURN_MEDIUM);
setFlammable(Tile::stairs_junglewood_Id, FLAME_HARD, BURN_MEDIUM);
+ setFlammable(Tile::stairs_acaciawood_Id, FLAME_HARD, BURN_MEDIUM);
+ setFlammable(Tile::stairs_darkwood_Id, FLAME_HARD, BURN_MEDIUM);
setFlammable(Tile::treeTrunk_Id, FLAME_HARD, BURN_HARD);
setFlammable(Tile::leaves_Id, FLAME_EASY, BURN_EASY);
setFlammable(Tile::bookshelf_Id, FLAME_EASY, BURN_MEDIUM);
diff --git a/Minecraft.World/Item.cpp b/Minecraft.World/Item.cpp
index ffb31070..19baf20d 100644
--- a/Minecraft.World/Item.cpp
+++ b/Minecraft.World/Item.cpp
@@ -251,6 +251,12 @@ Item *Item::horseArmorDiamond = nullptr;
Item *Item::lead = nullptr;
Item *Item::nameTag = nullptr;
+Item* Item::door_spruce = nullptr;
+Item* Item::door_birch = nullptr;
+Item* Item::door_jungle = nullptr;
+Item* Item::door_acacia = nullptr;
+Item* Item::door_dark = nullptr;
+
void Item::staticCtor()
{
@@ -284,8 +290,8 @@ void Item::staticCtor()
Item::hoe_diamond = ( new HoeItem(37, _Tier::DIAMOND) ) ->setBaseItemTypeAndMaterial(eBaseItemType_hoe, eMaterial_diamond) ->setIconName(L"hoeDiamond")->setDescriptionId(IDS_ITEM_HOE_DIAMOND)->setUseDescriptionId(IDS_DESC_HOE);
Item::hoe_gold = ( new HoeItem(38, _Tier::GOLD) ) ->setBaseItemTypeAndMaterial(eBaseItemType_hoe, eMaterial_gold) ->setIconName(L"hoeGold")->setDescriptionId(IDS_ITEM_HOE_GOLD)->setUseDescriptionId(IDS_DESC_HOE);
- Item::door_wood = ( new DoorItem(68, Material::wood) ) ->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_wood)->setIconName(L"doorWood")->setDescriptionId(IDS_ITEM_DOOR_WOOD)->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
- Item::door_iron = ( new DoorItem(74, Material::metal) ) ->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_iron)->setIconName(L"doorIron")->setDescriptionId(IDS_ITEM_DOOR_IRON)->setUseDescriptionId(IDS_DESC_DOOR_IRON);
+ Item::door_wood = ( new DoorItem(68, Material::wood, L"doorWood"))->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_wood)->setIconName(L"doorWood")->setDescriptionId(IDS_ITEM_DOOR_WOOD)->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Item::door_iron = ( new DoorItem(74, Material::metal, L"doorIron"))->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_iron)->setIconName(L"doorIron")->setDescriptionId(IDS_ITEM_DOOR_IRON)->setUseDescriptionId(IDS_DESC_DOOR_IRON);
Item::helmet_leather = static_cast((new ArmorItem(42, ArmorItem::ArmorMaterial::CLOTH, 0, ArmorItem::SLOT_HEAD))->setBaseItemTypeAndMaterial(eBaseItemType_helmet, eMaterial_cloth)->setIconName(L"helmetCloth")->setDescriptionId(IDS_ITEM_HELMET_CLOTH)->setUseDescriptionId(IDS_DESC_HELMET_LEATHER));
Item::helmet_iron = static_cast((new ArmorItem(50, ArmorItem::ArmorMaterial::IRON, 2, ArmorItem::SLOT_HEAD))->setBaseItemTypeAndMaterial(eBaseItemType_helmet, eMaterial_iron)->setIconName(L"helmetIron")->setDescriptionId(IDS_ITEM_HELMET_IRON)->setUseDescriptionId(IDS_DESC_HELMET_IRON));
@@ -493,7 +499,13 @@ void Item::staticCtor()
Item::horseArmorGold = (new Item(162)) ->setIconName(L"gold_horse_armor")->setMaxStackSize(1)->setDescriptionId(IDS_ITEM_GOLD_HORSE_ARMOR)->setUseDescriptionId(IDS_DESC_GOLD_HORSE_ARMOR);
Item::horseArmorDiamond = (new Item(163)) ->setIconName(L"diamond_horse_armor")->setMaxStackSize(1)->setDescriptionId(IDS_ITEM_DIAMOND_HORSE_ARMOR)->setUseDescriptionId(IDS_DESC_DIAMOND_HORSE_ARMOR);
Item::lead = (new LeashItem(164)) ->setBaseItemTypeAndMaterial(eBaseItemType_pockettool, eMaterial_undefined)->setIconName(L"lead")->setDescriptionId(IDS_ITEM_LEAD)->setUseDescriptionId(IDS_DESC_LEAD);
- Item::nameTag = (new NameTagItem(165)) ->setIconName(L"name_tag")->setDescriptionId(IDS_ITEM_NAME_TAG)->setUseDescriptionId(IDS_DESC_NAME_TAG);}
+ Item::nameTag = (new NameTagItem(165)) ->setIconName(L"name_tag")->setDescriptionId(IDS_ITEM_NAME_TAG)->setUseDescriptionId(IDS_DESC_NAME_TAG);
+ Item::door_spruce = (new DoorItem(166, Material::wood, L"doorSpruce"))->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_wood)->setIconName(L"doorSpruce")->setDescriptionId(IDS_ITEM_DOOR_SPRUCE)->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Item::door_birch = (new DoorItem(167, Material::wood, L"doorBirch"))->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_wood)->setIconName(L"doorBirch")->setDescriptionId(IDS_ITEM_DOOR_BIRCH)->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Item::door_jungle = (new DoorItem(168, Material::wood, L"doorJungle"))->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_wood)->setIconName(L"doorJungle")->setDescriptionId(IDS_ITEM_DOOR_JUNGLE)->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Item::door_acacia = (new DoorItem(169, Material::wood, L"doorAcacia"))->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_wood)->setIconName(L"doorAcacia")->setDescriptionId(IDS_ITEM_DOOR_ACACIA)->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Item::door_dark = (new DoorItem(170, Material::wood, L"doorDark"))->setBaseItemTypeAndMaterial(eBaseItemType_door, eMaterial_wood)->setIconName(L"doorDark")->setDescriptionId(IDS_ITEM_DOOR_DARK)->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+}
// 4J Stu - We need to do this after the staticCtor AND after staticCtors for other class
diff --git a/Minecraft.World/Item.h b/Minecraft.World/Item.h
index 22d0a9d1..3a5b5be3 100644
--- a/Minecraft.World/Item.h
+++ b/Minecraft.World/Item.h
@@ -90,6 +90,8 @@ public:
eMaterial_book,
eMaterial_bookshelf,
eMaterial_wheat,
+ eMaterial_acaciawood,
+ eMaterial_darkwood
}
eMaterial;
@@ -376,8 +378,8 @@ public:
static Item *frame;
// TU14
- //static Item writingBook;
- //static Item writtenBook;
+ //static Item *writingBook;
+ //static Item *writtenBook;
static Item *emerald;
@@ -412,6 +414,13 @@ public:
static Item *lead;
static Item *nameTag;
+ // TU25
+ static Item* door_spruce;
+ static Item* door_birch;
+ static Item* door_jungle;
+ static Item* door_acacia;
+ static Item* door_dark;
+
static const int shovel_iron_Id = 256;
static const int pickAxe_iron_Id = 257;
@@ -581,8 +590,8 @@ public:
static const int itemFrame_Id = 389;
// TU14
- //static const int writingBook_Id = 130;
- //static const int writtenBook_Id = 131;
+ //static const int writingBook_Id = 386;
+ //static const int writtenBook_Id = 387;
static const int emerald_Id = 388;
@@ -618,6 +627,13 @@ public:
static const int lead_Id = 420;
static const int nameTag_Id = 421;
+ // TU25
+ static const int door_spruce_Id = 422;
+ static const int door_birch_Id = 423;
+ static const int door_jungle_Id = 424;
+ static const int door_acacia_Id = 425;
+ static const int door_dark_Id = 426;
+
public:
const int id;
diff --git a/Minecraft.World/RotatedPillarTile.h b/Minecraft.World/RotatedPillarTile.h
index 76e52997..aff49821 100644
--- a/Minecraft.World/RotatedPillarTile.h
+++ b/Minecraft.World/RotatedPillarTile.h
@@ -5,11 +5,11 @@
class RotatedPillarTile : public Tile
{
public:
- static const int MASK_TYPE = 0x3;
- static const int MASK_FACING = 0xC;
- static const int FACING_Y = 0 << 2;
- static const int FACING_X = 1 << 2;
- static const int FACING_Z = 2 << 2;
+ static const int MASK_TYPE = 0x7;
+ static const int MASK_FACING = 0x18;
+ static const int FACING_Y = 0 << 3;
+ static const int FACING_X = 1 << 3;
+ static const int FACING_Z = 2 << 3;
protected:
Icon *iconTop;
diff --git a/Minecraft.World/Tile.cpp b/Minecraft.World/Tile.cpp
index de113714..f15a41cb 100644
--- a/Minecraft.World/Tile.cpp
+++ b/Minecraft.World/Tile.cpp
@@ -173,7 +173,7 @@ Tile *Tile::redstoneLight_lit = nullptr;
// TU9
Tile *Tile::stairs_sandstone = nullptr;
-Tile *Tile::woodStairsDark = nullptr;
+Tile *Tile::woodStairsSpruce = nullptr;
Tile *Tile::woodStairsBirch = nullptr;
Tile *Tile::woodStairsJungle = nullptr;
Tile *Tile::commandBlock = nullptr;
@@ -220,6 +220,31 @@ Tile *Tile::woolCarpet = nullptr;
Tile *Tile::clayHardened = nullptr;
Tile *Tile::coalBlock = nullptr;
+// TU25
+Tile* Tile::woodStairsAcacia = nullptr;
+Tile* Tile::woodStairsDark = nullptr;
+Tile* Tile::iron_trapdoor = nullptr;
+
+Tile* Tile::door_spruce = nullptr;
+Tile* Tile::door_birch = nullptr;
+Tile* Tile::door_jungle = nullptr;
+Tile* Tile::door_acacia = nullptr;
+Tile* Tile::door_dark = nullptr;
+
+Tile* Tile::spruceFence = nullptr;
+Tile* Tile::birchFence = nullptr;
+Tile* Tile::jungleFence = nullptr;
+Tile* Tile::acaciaFence = nullptr;
+Tile* Tile::darkFence = nullptr;
+
+Tile* Tile::spruceGate = nullptr;
+Tile* Tile::birchGate = nullptr;
+Tile* Tile::jungleGate = nullptr;
+Tile* Tile::acaciaGate = nullptr;
+Tile* Tile::darkGate = nullptr;
+
+Tile* Tile::invertedDaylightDetector = nullptr;
+
DWORD Tile::tlsIdxShape = TlsAlloc();
Tile::ThreadStorage::ThreadStorage()
@@ -328,7 +353,7 @@ void Tile::staticCtor()
Tile::furnace = (new FurnaceTile(61, false)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_device, Item::eMaterial_stone)->setDestroyTime(3.5f)->setSoundType(Tile::SOUND_STONE)->setIconName(L"furnace")->setDescriptionId(IDS_TILE_FURNACE)->sendTileData()->setUseDescriptionId(IDS_DESC_FURNACE);
Tile::furnace_lit = (new FurnaceTile(62, true)) ->setDestroyTime(3.5f)->setSoundType(Tile::SOUND_STONE)->setLightEmission(14 / 16.0f)->setIconName(L"furnace")->setDescriptionId(IDS_TILE_FURNACE)->sendTileData()->setUseDescriptionId(IDS_DESC_FURNACE);
Tile::sign = (new SignTile(63, eTYPE_SIGNTILEENTITY, true)) ->setDestroyTime(1.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"sign")->setDescriptionId(IDS_TILE_SIGN)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_SIGN);
- Tile::door_wood = (new DoorTile(64, Material::wood)) ->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"door_wood")->setDescriptionId(IDS_TILE_DOOR_WOOD)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Tile::door_wood = (new DoorTile(64, Material::wood, L"doorWood"))->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"door_wood")->setDescriptionId(IDS_TILE_DOOR_WOOD)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
Tile::ladder = (new LadderTile(65)) ->setDestroyTime(0.4f)->setSoundType(Tile::SOUND_LADDER)->setIconName(L"ladder")->setDescriptionId(IDS_TILE_LADDER)->sendTileData()->setUseDescriptionId(IDS_DESC_LADDER)->disableMipmap();
Tile::rail = (new RailTile(66)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_rail, Item::eMaterial_iron)->setDestroyTime(0.7f)->setSoundType(Tile::SOUND_METAL)->setIconName(L"rail_normal")->setDescriptionId(IDS_TILE_RAIL)->sendTileData()->setUseDescriptionId(IDS_DESC_RAIL)->disableMipmap();
Tile::stairs_stone =(new StairTile(67, Tile::cobblestone,0)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_stone) ->setIconName(L"stairsStone")->setDescriptionId(IDS_TILE_STAIRS_STONE) ->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
@@ -336,7 +361,7 @@ void Tile::staticCtor()
Tile::lever = (new LeverTile(69)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_lever, Item::eMaterial_wood)->setDestroyTime(0.5f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"lever")->setDescriptionId(IDS_TILE_LEVER)->sendTileData()->setUseDescriptionId(IDS_DESC_LEVER);
Tile::pressurePlate_stone = (Tile *)(new PressurePlateTile(70, L"stone", Material::stone, PressurePlateTile::mobs)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_pressureplate, Item::eMaterial_stone)->setDestroyTime(0.5f)->setSoundType(Tile::SOUND_STONE)->setDescriptionId(IDS_TILE_PRESSURE_PLATE)->sendTileData()->setUseDescriptionId(IDS_DESC_PRESSUREPLATE);
- Tile::door_iron = (new DoorTile(71, Material::metal)) ->setDestroyTime(5.0f)->setSoundType(Tile::SOUND_METAL)->setIconName(L"door_iron")->setDescriptionId(IDS_TILE_DOOR_IRON)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_IRON);
+ Tile::door_iron = (new DoorTile(71, Material::metal, L"doorIron"))->setDestroyTime(5.0f)->setSoundType(Tile::SOUND_METAL)->setIconName(L"door_iron")->setDescriptionId(IDS_TILE_DOOR_IRON)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_IRON);
Tile::pressurePlate_wood = (new PressurePlateTile(72, L"planks_oak", Material::wood, PressurePlateTile::everything)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_pressureplate, Item::eMaterial_wood)->setDestroyTime(0.5f)->setSoundType(Tile::SOUND_WOOD)->setDescriptionId(IDS_TILE_PRESSURE_PLATE)->sendTileData()->setUseDescriptionId(IDS_DESC_PRESSUREPLATE);
Tile::redStoneOre = (new RedStoneOreTile(73,false)) ->setDestroyTime(3.0f)->setExplodeable(5)->setSoundType(Tile::SOUND_STONE)->setIconName(L"redstone_ore")->setDescriptionId(IDS_TILE_ORE_REDSTONE)->sendTileData()->setUseDescriptionId(IDS_DESC_ORE_REDSTONE);
Tile::redStoneOre_lit = (new RedStoneOreTile(74, true)) ->setLightEmission(10 / 16.0f)->setDestroyTime(3.0f)->setExplodeable(5)->setSoundType(Tile::SOUND_STONE)->setIconName(L"redstone_ore")->setDescriptionId(IDS_TILE_ORE_REDSTONE)->sendTileData()->setUseDescriptionId(IDS_DESC_ORE_REDSTONE);
@@ -376,7 +401,7 @@ void Tile::staticCtor()
Tile::pumpkinStem = (new StemTile(104, Tile::pumpkin)) ->setDestroyTime(0.0f)->setSoundType(SOUND_WOOD)->setIconName(L"pumpkin_stem")->setDescriptionId(IDS_TILE_PUMPKIN_STEM)->sendTileData();
Tile::melonStem = (new StemTile(105, Tile::melon)) ->setDestroyTime(0.0f)->setSoundType(SOUND_WOOD)->setIconName(L"melon_stem")->setDescriptionId(IDS_TILE_MELON_STEM)->sendTileData();
Tile::vine = (new VineTile(106))->setDestroyTime(0.2f) ->setSoundType(SOUND_GRASS)->setIconName(L"vine")->setDescriptionId(IDS_TILE_VINE)->setUseDescriptionId(IDS_DESC_VINE)->sendTileData();
- Tile::fenceGate = (new FenceGateTile(107)) ->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"fenceGate")->setDescriptionId(IDS_TILE_FENCE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
+ Tile::fenceGate = (new FenceGateTile(107))->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_oak")->setDescriptionId(IDS_TILE_FENCE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
Tile::stairs_bricks = (new StairTile(108, Tile::redBrick,0)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_brick) ->setIconName(L"stairsBrick")->setDescriptionId(IDS_TILE_STAIRS_BRICKS) ->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
Tile::stairs_stoneBrickSmooth = (new StairTile(109, Tile::stoneBrick,0)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_stoneSmooth)->setIconName(L"stairsStoneBrickSmooth")->setDescriptionId(IDS_TILE_STAIRS_STONE_BRICKS_SMOOTH) ->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
Tile::mycel = static_cast((new MycelTile(110))->setDestroyTime(0.6f)->setSoundType(SOUND_GRASS)->setIconName(L"mycelium")->setDescriptionId(IDS_TILE_MYCEL)->setUseDescriptionId(IDS_DESC_MYCEL));
@@ -407,7 +432,7 @@ void Tile::staticCtor()
Tile::tripWireSource = static_cast((new TripWireSourceTile(131))->setBaseItemTypeAndMaterial(Item::eBaseItemType_lever, Item::eMaterial_undefined)->setIconName(L"trip_wire_source")->sendTileData()->setDescriptionId(IDS_TILE_TRIPWIRE_SOURCE)->setUseDescriptionId(IDS_DESC_TRIPWIRE_SOURCE));
Tile::tripWire = (new TripWireTile(132)) ->setIconName(L"trip_wire")->sendTileData()->setDescriptionId(IDS_TILE_TRIPWIRE)->setUseDescriptionId(IDS_DESC_TRIPWIRE);
Tile::emeraldBlock = (new MetalTile(133)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_block, Item::eMaterial_emerald)->setDestroyTime(5.0f)->setExplodeable(10)->setSoundType(SOUND_METAL)->setIconName(L"emerald_block")->setDescriptionId(IDS_TILE_EMERALDBLOCK)->setUseDescriptionId(IDS_DESC_EMERALDBLOCK);
- Tile::woodStairsDark = (new StairTile(134, Tile::wood, TreeTile::DARK_TRUNK)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_sprucewood)->setIconName(L"stairsWoodSpruce")->setDescriptionId(IDS_TILE_STAIRS_SPRUCEWOOD) ->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
+ Tile::woodStairsSpruce = (new StairTile(134, Tile::wood, TreeTile::SPRUCE_TRUNK))->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_sprucewood)->setIconName(L"stairsWoodSpruce")->setDescriptionId(IDS_TILE_STAIRS_SPRUCEWOOD)->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
Tile::woodStairsBirch = (new StairTile(135, Tile::wood, TreeTile::BIRCH_TRUNK)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_birchwood)->setIconName(L"stairsWoodBirch")->setDescriptionId(IDS_TILE_STAIRS_BIRCHWOOD) ->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
Tile::woodStairsJungle =(new StairTile(136, Tile::wood, TreeTile::JUNGLE_TRUNK))->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_junglewood)->setIconName(L"stairsWoodJungle")->setDescriptionId(IDS_TILE_STAIRS_JUNGLEWOOD) ->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
Tile::commandBlock = (new CommandBlock(137)) ->setIndestructible()->setExplodeable(6000000)->setIconName(L"command_block")->setDescriptionId(IDS_TILE_COMMAND_BLOCK)->setUseDescriptionId(IDS_DESC_COMMAND_BLOCK);
@@ -426,7 +451,7 @@ void Tile::staticCtor()
Tile::comparator_off = static_cast((new ComparatorTile(149, false))->setDestroyTime(0.0f)->setSoundType(SOUND_WOOD)->setIconName(L"comparator_off")->setDescriptionId(IDS_TILE_COMPARATOR)->setUseDescriptionId(IDS_DESC_COMPARATOR));
Tile::comparator_on = static_cast((new ComparatorTile(150, true))->setDestroyTime(0.0f)->setLightEmission(10 / 16.0f)->setSoundType(SOUND_WOOD)->setIconName(L"comparator_on")->setDescriptionId(IDS_TILE_COMPARATOR)->setUseDescriptionId(IDS_DESC_COMPARATOR));
- Tile::daylightDetector = static_cast((new DaylightDetectorTile(151))->setDestroyTime(0.2f)->setSoundType(SOUND_WOOD)->setIconName(L"daylight_detector")->setDescriptionId(IDS_TILE_DAYLIGHT_DETECTOR)->setUseDescriptionId(IDS_DESC_DAYLIGHT_DETECTOR));
+ Tile::daylightDetector = static_cast((new DaylightDetectorTile(151, false))->setDestroyTime(0.2f)->setSoundType(SOUND_WOOD)->setIconName(L"daylight_detector")->setDescriptionId(IDS_TILE_DAYLIGHT_DETECTOR)->setUseDescriptionId(IDS_DESC_DAYLIGHT_DETECTOR));
Tile::redstoneBlock = (new PoweredMetalTile(152)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_block, Item::eMaterial_redstone)->setDestroyTime(5.0f)->setExplodeable(10)->setSoundType(SOUND_METAL)->setIconName(L"redstone_block")->setDescriptionId(IDS_TILE_REDSTONE_BLOCK)->setUseDescriptionId(IDS_DESC_REDSTONE_BLOCK);
Tile::netherQuartz = (new OreTile(153)) ->setDestroyTime(3.0f)->setExplodeable(5)->setSoundType(SOUND_STONE)->setIconName(L"quartz_ore")->setDescriptionId(IDS_TILE_NETHER_QUARTZ)->setUseDescriptionId(IDS_DESC_NETHER_QUARTZ_ORE);
Tile::hopper = static_cast((new HopperTile(154))->setBaseItemTypeAndMaterial(Item::eBaseItemType_redstoneContainer, Item::eMaterial_undefined)->setDestroyTime(3.0f)->setExplodeable(8)->setSoundType(SOUND_WOOD)->setIconName(L"hopper")->setDescriptionId(IDS_TILE_HOPPER)->setUseDescriptionId(IDS_DESC_HOPPER));
@@ -442,6 +467,29 @@ void Tile::staticCtor()
Tile::clayHardened = (new Tile(172, Material::stone)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_clay, Item::eMaterial_clay)->setDestroyTime(1.25f)->setExplodeable(7)->setSoundType(SOUND_STONE)->setIconName(L"hardened_clay")->setDescriptionId(IDS_TILE_HARDENED_CLAY)->setUseDescriptionId(IDS_DESC_HARDENED_CLAY);
Tile::coalBlock = (new Tile(173, Material::stone)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_block, Item::eMaterial_coal)->setDestroyTime(5.0f)->setExplodeable(10)->setSoundType(SOUND_STONE)->setIconName(L"coal_block")->setDescriptionId(IDS_TILE_COAL)->setUseDescriptionId(IDS_DESC_COAL_BLOCK);
+ Tile::woodStairsAcacia = (new StairTile(174, Tile::wood, TreeTile::ACACIA_TRUNK))->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_acaciawood)->setIconName(L"stairsWoodAcacia")->setDescriptionId(IDS_TILE_STAIRS_ACACIAWOOD)->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
+ Tile::woodStairsDark = (new StairTile(175, Tile::wood, TreeTile::DARK_TRUNK))->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_darkwood)->setIconName(L"stairsWoodDark")->setDescriptionId(IDS_TILE_STAIRS_DARKWOOD)->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
+ Tile::iron_trapdoor = (new TrapDoorTile(176, Material::metal))->setBaseItemTypeAndMaterial(Item::eBaseItemType_door, Item::eMaterial_trap)->setDestroyTime(5.0f)->setSoundType(Tile::SOUND_METAL)->setIconName(L"iron_trapdoor")->setDescriptionId(IDS_TILE_IRON_TRAPDOOR)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_TRAPDOOR);
+
+ Tile::door_spruce = (new DoorTile(177, Material::wood, L"doorSpruce"))->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"door_spruce")->setDescriptionId(IDS_TILE_DOOR_SPRUCE)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Tile::door_birch = (new DoorTile(178, Material::wood, L"doorBirch"))->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"door_birch")->setDescriptionId(IDS_TILE_DOOR_BIRCH)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Tile::door_jungle = (new DoorTile(179, Material::wood, L"doorJungle"))->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"door_jungle")->setDescriptionId(IDS_TILE_DOOR_JUNGLE)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Tile::door_acacia = (new DoorTile(180, Material::wood, L"doorAcacia"))->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"door_acacia")->setDescriptionId(IDS_TILE_DOOR_ACACIA)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+ Tile::door_dark = (new DoorTile(181, Material::wood, L"doorDark"))->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"door_dark")->setDescriptionId(IDS_TILE_DOOR_DARK)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
+
+ Tile::spruceFence = (new FenceTile(182, L"planks_spruce", Material::wood))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence, Item::eMaterial_wood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(Tile::SOUND_WOOD)->setDescriptionId(IDS_TILE_SPRUCE_FENCE)->setUseDescriptionId(IDS_DESC_FENCE);
+ Tile::birchFence = (new FenceTile(183, L"planks_birch", Material::wood))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence, Item::eMaterial_wood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(Tile::SOUND_WOOD)->setDescriptionId(IDS_TILE_BIRCH_FENCE)->setUseDescriptionId(IDS_DESC_FENCE);
+ Tile::jungleFence = (new FenceTile(184, L"planks_jungle", Material::wood))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence, Item::eMaterial_wood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(Tile::SOUND_WOOD)->setDescriptionId(IDS_TILE_JUNGLE_FENCE)->setUseDescriptionId(IDS_DESC_FENCE);
+ Tile::acaciaFence = (new FenceTile(185, L"planks_acacia", Material::wood))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence, Item::eMaterial_wood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(Tile::SOUND_WOOD)->setDescriptionId(IDS_TILE_ACACIA_FENCE)->setUseDescriptionId(IDS_DESC_FENCE);
+ Tile::darkFence = (new FenceTile(186, L"planks_dark", Material::wood))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence, Item::eMaterial_wood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(Tile::SOUND_WOOD)->setDescriptionId(IDS_TILE_DARK_FENCE)->setUseDescriptionId(IDS_DESC_FENCE);
+
+ Tile::spruceGate = (new FenceGateTile(187))->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_spruce")->setDescriptionId(IDS_TILE_SPRUCE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
+ Tile::birchGate = (new FenceGateTile(188))->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_birch")->setDescriptionId(IDS_TILE_BIRCH_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
+ Tile::jungleGate = (new FenceGateTile(189))->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_jungle")->setDescriptionId(IDS_TILE_JUNGLE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
+ Tile::acaciaGate = (new FenceGateTile(190))->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_acacia")->setDescriptionId(IDS_TILE_ACACIA_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
+ Tile::darkGate = (new FenceGateTile(191))->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_dark")->setDescriptionId(IDS_TILE_DARK_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
+
+ Tile::invertedDaylightDetector = static_cast((new DaylightDetectorTile(192, true))->setDestroyTime(0.2f)->setSoundType(SOUND_WOOD)->setIconName(L"daylight_detector")->setDescriptionId(IDS_TILE_DAYLIGHT_DETECTOR)->setUseDescriptionId(IDS_DESC_DAYLIGHT_DETECTOR));
// Special cases for certain items since they can have different icons
Item::items[wool_Id] = ( new WoolTileItem(Tile::wool_Id- 256) )->setIconName(L"cloth")->setDescriptionId(IDS_TILE_CLOTH)->setUseDescriptionId(IDS_DESC_WOOL);
@@ -449,8 +497,8 @@ void Tile::staticCtor()
Item::items[stained_glass_Id] = ( new WoolTileItem(Tile::stained_glass_Id - 256))->setIconName(L"stainedGlass")->setDescriptionId(IDS_TILE_STAINED_GLASS)->setUseDescriptionId(IDS_DESC_STAINED_GLASS);
Item::items[stained_glass_pane_Id] = ( new WoolTileItem(Tile::stained_glass_pane_Id - 256))->setIconName(L"stainedGlassPane")->setDescriptionId(IDS_TILE_STAINED_GLASS_PANE)->setUseDescriptionId(IDS_DESC_STAINED_GLASS_PANE);
Item::items[woolCarpet_Id] = ( new WoolTileItem(Tile::woolCarpet_Id - 256))->setIconName(L"woolCarpet")->setDescriptionId(IDS_TILE_CARPET)->setUseDescriptionId(IDS_DESC_CARPET);
- Item::items[treeTrunk_Id] = ( new MultiTextureTileItem(Tile::treeTrunk_Id - 256, treeTrunk, (int *)TreeTile::TREE_NAMES, 4) )->setIconName(L"log")->setDescriptionId(IDS_TILE_LOG)->setUseDescriptionId(IDS_DESC_LOG);
- Item::items[wood_Id] = ( new MultiTextureTileItem(Tile::wood_Id - 256, Tile::wood, (int *)WoodTile::WOOD_NAMES, 4, IDS_TILE_PLANKS))->setIconName(L"wood")->setDescriptionId(IDS_TILE_OAKWOOD_PLANKS)->setUseDescriptionId(IDS_DESC_LOG); // <- TODO
+ Item::items[treeTrunk_Id] = (new MultiTextureTileItem(Tile::treeTrunk_Id - 256, treeTrunk, (int*)TreeTile::TREE_NAMES, 6))->setIconName(L"log")->setDescriptionId(IDS_TILE_LOG)->setUseDescriptionId(IDS_DESC_LOG);
+ Item::items[wood_Id] = (new MultiTextureTileItem(Tile::wood_Id - 256, Tile::wood, (int*)WoodTile::WOOD_NAMES, 6, IDS_TILE_PLANKS))->setIconName(L"wood")->setDescriptionId(IDS_TILE_OAKWOOD_PLANKS)->setUseDescriptionId(IDS_DESC_LOG); // <- TODO
Item::items[monsterStoneEgg_Id] = ( new MultiTextureTileItem(Tile::monsterStoneEgg_Id - 256, monsterStoneEgg, (int *)StoneMonsterTile::STONE_MONSTER_NAMES, 3))->setIconName(L"monsterStoneEgg")->setDescriptionId(IDS_TILE_STONE_SILVERFISH)->setUseDescriptionId(IDS_DESC_STONE_SILVERFISH); // 4J - Brought forward from post-1.2 to fix stacking problem
Item::items[stoneBrick_Id] = ( new MultiTextureTileItem(Tile::stoneBrick_Id - 256, stoneBrick,(int *)SmoothStoneBrickTile::SMOOTH_STONE_BRICK_NAMES, 4))->setIconName(L"stonebricksmooth")->setDescriptionId(IDS_TILE_STONE_BRICK_SMOOTH);
Item::items[sandStone_Id] = ( new MultiTextureTileItem(sandStone_Id - 256, sandStone, SandStoneTile::SANDSTONE_NAMES, SandStoneTile::SANDSTONE_BLOCK_NAMES) )->setIconName(L"sandStone")->setDescriptionId(IDS_TILE_SANDSTONE)->setUseDescriptionId(IDS_DESC_SANDSTONE);
@@ -1702,4 +1750,6 @@ const int Tile::netherQuartz_Id;
const int Tile::quartzBlock_Id;
const int Tile::stairs_quartz_Id;
const int Tile::woolCarpet_Id;
+const int Tile::stairs_acaciawood_Id;
+const int Tile::stairs_darkwood_Id;
#endif
diff --git a/Minecraft.World/Tile.h b/Minecraft.World/Tile.h
index 307c4106..a7f2685a 100644
--- a/Minecraft.World/Tile.h
+++ b/Minecraft.World/Tile.h
@@ -365,6 +365,26 @@ public:
static const int clayHardened_Id = 172;
static const int coalBlock_Id = 173;
+ // TU25
+ static const int stairs_acaciawood_Id = 174;
+ static const int stairs_darkwood_Id = 175;
+
+ static const int iron_trapdoor_Id = 176;
+
+ // 177 is taken by door_spruce
+ static const int spruceFence_Id = 182;
+ static const int birchFence_Id = 183;
+ static const int jungleFence_Id = 184;
+ static const int acaciaFence_Id = 185;
+ static const int darkFence_Id = 186;
+
+ static const int spruceGate_Id = 187;
+ static const int birchGate_Id = 188;
+ static const int jungleGate_Id = 189;
+ static const int acaciaGate_Id = 190;
+ static const int darkGate_Id = 191;
+
+ static const int invertedDaylightDetector_Id = 192;
static Tile *stone;
static GrassTile *grass;
@@ -494,9 +514,11 @@ public:
static Tile *redstoneLight_lit;
static Tile *stairs_sandstone;
- static Tile *woodStairsDark;
+ static Tile *woodStairsSpruce;
static Tile *woodStairsBirch;
static Tile *woodStairsJungle;
+ static Tile *woodStairsAcacia;
+ static Tile *woodStairsDark;
static Tile *commandBlock;
static BeaconTile *beacon;
static Tile *button_wood;
@@ -541,6 +563,28 @@ public:
static Tile *clayHardened;
static Tile *coalBlock;
+ static Tile *iron_trapdoor;
+
+ static Tile* door_spruce;
+ static Tile* door_birch;
+ static Tile* door_jungle;
+ static Tile* door_acacia;
+ static Tile* door_dark;
+
+ static Tile* spruceFence;
+ static Tile* birchFence;
+ static Tile* jungleFence;
+ static Tile* acaciaFence;
+ static Tile* darkFence;
+
+ static Tile* spruceGate;
+ static Tile* birchGate;
+ static Tile* jungleGate;
+ static Tile* acaciaGate;
+ static Tile* darkGate;
+
+ static Tile* invertedDaylightDetector;
+
static void staticCtor();
int id;
diff --git a/Minecraft.World/TreeTile.cpp b/Minecraft.World/TreeTile.cpp
index 6a5860f3..29d41823 100644
--- a/Minecraft.World/TreeTile.cpp
+++ b/Minecraft.World/TreeTile.cpp
@@ -10,12 +10,14 @@
const unsigned int TreeTile::TREE_NAMES[ TreeTile::TREE_NAMES_LENGTH] = { IDS_TILE_LOG_OAK,
IDS_TILE_LOG_SPRUCE,
IDS_TILE_LOG_BIRCH,
- IDS_TILE_LOG_JUNGLE
+ IDS_TILE_LOG_JUNGLE,
+ IDS_TILE_LOG_ACACIA,
+ IDS_TILE_LOG_DARK_OAK
};
-const wstring TreeTile::TREE_STRING_NAMES[ TreeTile::TREE_NAMES_LENGTH] = {L"oak", L"spruce", L"birch", L"jungle"};
+const wstring TreeTile::TREE_STRING_NAMES[TreeTile::TREE_NAMES_LENGTH] = { L"oak", L"spruce", L"birch", L"jungle", L"acacia", L"dark" };
-const wstring TreeTile::TREE_TEXTURES[] = {L"tree_side", L"tree_spruce", L"tree_birch", L"tree_jungle"};
+const wstring TreeTile::TREE_TEXTURES[] = { L"tree_side", L"tree_spruce", L"tree_birch", L"tree_jungle", L"tree_acacia", L"tree_dark" };
TreeTile::TreeTile(int id) : RotatedPillarTile(id, Material::wood)
{
@@ -59,7 +61,7 @@ void TreeTile::onRemove(Level *level, int x, int y, int z, int id, int data)
unsigned int TreeTile::getDescriptionId(int iData /*= -1*/)
{
int type = iData & MASK_TYPE;
- if(type < 0 ) type = 0;
+ if (type < 0 || type >= TreeTile::TREE_NAMES_LENGTH) type = 0;
return TreeTile::TREE_NAMES[type];
}
diff --git a/Minecraft.World/TreeTile.h b/Minecraft.World/TreeTile.h
index 8738c8cf..829abdcf 100644
--- a/Minecraft.World/TreeTile.h
+++ b/Minecraft.World/TreeTile.h
@@ -10,17 +10,19 @@ class TreeTile : public RotatedPillarTile
friend class Tile;
friend class ChunkRebuildData;
public:
- static const int DARK_TRUNK = 1;
+ static const int SPRUCE_TRUNK = 1; // this needs to be changed to spruce...
static const int BIRCH_TRUNK = 2;
static const int JUNGLE_TRUNK = 3;
+ static const int ACACIA_TRUNK = 4;
+ static const int DARK_TRUNK = 5;
- static const int MASK_TYPE = 0x3;
- static const int MASK_FACING = 0xC;
- static const int FACING_Y = 0 << 2;
- static const int FACING_X = 1 << 2;
- static const int FACING_Z = 2 << 2;
+ static const int MASK_TYPE = 0x7;
+ static const int MASK_FACING = 0x18;
+ static const int FACING_Y = 0 << 3;
+ static const int FACING_X = 1 << 3;
+ static const int FACING_Z = 2 << 3;
- static const int TREE_NAMES_LENGTH = 4;
+ static const int TREE_NAMES_LENGTH = 6;
static const unsigned int TREE_NAMES[TREE_NAMES_LENGTH];
diff --git a/Minecraft.World/WoodSlabTile.cpp b/Minecraft.World/WoodSlabTile.cpp
index 574dab93..0d41e78d 100644
--- a/Minecraft.World/WoodSlabTile.cpp
+++ b/Minecraft.World/WoodSlabTile.cpp
@@ -11,6 +11,8 @@ const unsigned int WoodSlabTile::SLAB_NAMES[SLAB_NAMES_LENGTH] = { IDS_TILE_STON
IDS_TILE_STONESLAB_SPRUCE,
IDS_TILE_STONESLAB_BIRCH,
IDS_TILE_STONESLAB_JUNGLE,
+ IDS_TILE_STONESLAB_ACACIA,
+ IDS_TILE_STONESLAB_DARK_OAK
};
// public static final String[] WOOD_NAMES = {
diff --git a/Minecraft.World/WoodSlabTile.h b/Minecraft.World/WoodSlabTile.h
index b91f7136..64639715 100644
--- a/Minecraft.World/WoodSlabTile.h
+++ b/Minecraft.World/WoodSlabTile.h
@@ -12,7 +12,7 @@ class WoodSlabTile : HalfSlabTile
public:
static const int TYPE_MASK = 7;
static const int TOP_SLOT_BIT = 8;
- static const int SLAB_NAMES_LENGTH = 4;
+ static const int SLAB_NAMES_LENGTH = 6;
static const unsigned int SLAB_NAMES[SLAB_NAMES_LENGTH];
WoodSlabTile(int id, bool fullSize);
diff --git a/Minecraft.World/WoodTile.cpp b/Minecraft.World/WoodTile.cpp
index 239ef61c..67064a87 100644
--- a/Minecraft.World/WoodTile.cpp
+++ b/Minecraft.World/WoodTile.cpp
@@ -11,9 +11,11 @@ const unsigned int WoodTile::WOOD_NAMES[WOOD_NAMES_LENGTH] = { IDS_TILE_OAKWOOD_
IDS_TILE_SPRUCEWOOD_PLANKS,
IDS_TILE_BIRCHWOOD_PLANKS,
IDS_TILE_JUNGLE_PLANKS,
+ IDS_TILE_ACACIA_PLANKS,
+ IDS_TILE_DARK_OAK_PLANKS
};
-const wstring WoodTile::TEXTURE_NAMES[] = {L"oak", L"spruce", L"birch", L"jungle"};
+const wstring WoodTile::TEXTURE_NAMES[] = { L"oak", L"spruce", L"birch", L"jungle", L"acacia", L"dark" };
// public static final String[] WOOD_NAMES = {
// "oak", "spruce", "birch", "jungle"
diff --git a/Minecraft.World/WoodTile.h b/Minecraft.World/WoodTile.h
index 23bbdfb1..1a4e8c45 100644
--- a/Minecraft.World/WoodTile.h
+++ b/Minecraft.World/WoodTile.h
@@ -7,7 +7,7 @@ class WoodTile : public Tile
{
friend class ChunkRebuildData;
public:
- static const int WOOD_NAMES_LENGTH = 4;
+ static const int WOOD_NAMES_LENGTH = 6;
static const unsigned int WOOD_NAMES[WOOD_NAMES_LENGTH];