diff --git a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp index 16437c55..bd26e8c0 100644 --- a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp +++ b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp @@ -31,7 +31,7 @@ void IUIScene_CreativeMenu::staticCtor() DEF(eCreativeInventory_BuildingBlocks) ITEM(Tile::stone_Id) ITEM(Tile::grass_Id) - ITEM(Tile::dirt_Id) + ITEM_AUX(Tile::dirt_Id, 0) ITEM(Tile::cobblestone_Id) ITEM(Tile::sand_Id) ITEM(Tile::sandStone_Id) @@ -77,6 +77,18 @@ void IUIScene_CreativeMenu::staticCtor() ITEM(Tile::glowstone_Id) ITEM(Tile::fence_Id) + ITEM_AUX(Tile::dirt_Id, DirtTile::COARSE_DIRT) + ITEM_AUX(Tile::dirt_Id, DirtTile::PODZOL) + + ITEM_AUX(Tile::stone_Id, StoneTile::GRANITE) + ITEM_AUX(Tile::stone_Id, StoneTile::POLISHED_GRANITE) + + ITEM_AUX(Tile::stone_Id, StoneTile::DIORITE) + ITEM_AUX(Tile::stone_Id, StoneTile::POLISHED_DIORITE) + + ITEM_AUX(Tile::stone_Id, StoneTile::ANDESITE) + ITEM_AUX(Tile::stone_Id, StoneTile::POLISHED_ANDESITE) + // TU25 ITEM(Tile::spruceFence_Id) ITEM(Tile::birchFence_Id) diff --git a/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png b/Minecraft.Client/Common/res/TitleUpdate/res/terrain.png index 33278b33..8590b20d 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 70808f90..4ce59394 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 aec31bb2..267ac45b 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 d7189f39..e9cf82a2 100644 --- a/Minecraft.Client/PreStitchedTextureMap.cpp +++ b/Minecraft.Client/PreStitchedTextureMap.cpp @@ -1001,10 +1001,30 @@ void PreStitchedTextureMap::loadUVs() ADD_ICON(20, 11, L"iron_trapdoor"); ADD_ICON(20, 12, L"inverted_daylight_detector"); + ADD_ICON(20, 13, L"dirt_podzol_side"); + ADD_ICON(20, 14, L"dirt_podzol_top"); + ADD_ICON(20, 15, L"coarse_dirt"); + 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"); + + ADD_ICON(21, 5, L"stone_andesite"); + ADD_ICON(21, 6, L"stone_andesite_smooth"); + ADD_ICON(21, 7, L"stone_granite"); + ADD_ICON(21, 8, L"stone_granite_smooth"); + ADD_ICON(21, 9, L"stone_diorite"); + ADD_ICON(21, 10, L"stone_diorite_smooth"); + + ADD_ICON(22, 1, L"flower_blue_orchid"); + ADD_ICON(22, 2, L"flower_allium"); + ADD_ICON(22, 3, L"flower_houstonia"); + ADD_ICON(22, 4, L"flower_tulip_red"); + ADD_ICON(22, 5, L"flower_tulip_orange"); + ADD_ICON(22, 6, L"flower_tulip_white"); + ADD_ICON(22, 7, L"flower_tulip_pink"); + ADD_ICON(22, 8, L"flower_oxeye_daisy"); } } diff --git a/Minecraft.World/DirtTile.cpp b/Minecraft.World/DirtTile.cpp index 76cdfef3..34e4327f 100644 --- a/Minecraft.World/DirtTile.cpp +++ b/Minecraft.World/DirtTile.cpp @@ -1,6 +1,58 @@ #include "stdafx.h" #include "DirtTile.h" +#include "net.minecraft.world.h" +#include "net.minecraft.h" + +const unsigned int DirtTile::DIRT_NAMES[DIRT_NAMES_LENGTH] = { IDS_TILE_DIRT, +IDS_TILE_DIRT, +IDS_TILE_DIRT +}; + +const wstring DirtTile::TEXTURE_NAMES[] = { L"dirt", L"coarse_dirt", L"dirt_podzol"}; DirtTile::DirtTile(int id) : Tile(id, Material::dirt) { + icons = nullptr; + podzolTop = nullptr; + podzolSide = nullptr; +} + +unsigned int DirtTile::getDescriptionId(int iData) +{ + if (iData < 0 || iData >= DIRT_NAMES_LENGTH) iData = 0; + + return DIRT_NAMES[iData]; +} + +int DirtTile::getSpawnResourcesAuxValue(int data) +{ + return data; +} + +Icon* DirtTile::getTexture(int face, int data) +{ + if (data < 0 || data >= DIRT_NAMES_LENGTH) + data = 0; + + if (TEXTURE_NAMES[data] == L"dirt_podzol") { + return (face == Facing::UP) ? podzolTop : podzolSide; + } + + return icons[data]; +} + +void DirtTile::registerIcons(IconRegister* iconRegister) +{ + icons = new Icon * [DIRT_NAMES_LENGTH]; + + for (int i = 0; i < DIRT_NAMES_LENGTH; i++) + { + if (TEXTURE_NAMES[i] == L"dirt_podzol") { + icons[i] = nullptr; + podzolTop = iconRegister->registerIcon(L"dirt_podzol_top"); + podzolSide = iconRegister->registerIcon(L"dirt_podzol_side"); + } else { + icons[i] = iconRegister->registerIcon(TEXTURE_NAMES[i]); + } + } } \ No newline at end of file diff --git a/Minecraft.World/DirtTile.h b/Minecraft.World/DirtTile.h index 31790886..6ad8b412 100644 --- a/Minecraft.World/DirtTile.h +++ b/Minecraft.World/DirtTile.h @@ -3,7 +3,24 @@ class DirtTile : public Tile { - friend class Tile; -protected: +friend class Tile; +public: + static const int COARSE_DIRT = 1; + static const int PODZOL = 2; + + static const int DIRT_NAMES_LENGTH = 3; + + static const unsigned int DIRT_NAMES[DIRT_NAMES_LENGTH]; + static const wstring TEXTURE_NAMES[]; +private: + Icon** icons; + Icon* podzolTop; + Icon* podzolSide; + +public: DirtTile(int id); + virtual Icon* getTexture(int face, int data); + virtual unsigned int getDescriptionId(int iData = -1); + virtual int getSpawnResourcesAuxValue(int data); + void registerIcons(IconRegister* iconRegister); }; \ No newline at end of file diff --git a/Minecraft.World/GrassTile.cpp b/Minecraft.World/GrassTile.cpp index 9be44d0e..5e015c2b 100644 --- a/Minecraft.World/GrassTile.cpp +++ b/Minecraft.World/GrassTile.cpp @@ -22,7 +22,7 @@ GrassTile::GrassTile(int id) : Tile(id, Material::grass) Icon *GrassTile::getTexture(int face, int data) { if (face == Facing::UP) return iconTop; - if (face == Facing::DOWN) return Tile::dirt->getTexture(face); + if (face == Facing::DOWN) return Tile::dirt->getTexture(face, 0); return icon; } diff --git a/Minecraft.World/StoneTile.cpp b/Minecraft.World/StoneTile.cpp index 01330894..eefced6c 100644 --- a/Minecraft.World/StoneTile.cpp +++ b/Minecraft.World/StoneTile.cpp @@ -1,11 +1,53 @@ #include "stdafx.h" #include "StoneTile.h" +#include "net.minecraft.world.h" +#include "net.minecraft.h" + +const unsigned int StoneTile::STONE_NAMES[STONE_NAMES_LENGTH] = { IDS_TILE_STONE, +IDS_TILE_STONE, +IDS_TILE_STONE, +IDS_TILE_STONE, +IDS_TILE_STONE, +IDS_TILE_STONE, +IDS_TILE_STONE }; + +const wstring StoneTile::TEXTURE_NAMES[] = { L"stone", + L"stone_granite", L"stone_granite_smooth", + L"stone_diorite", L"stone_diorite_smooth", + L"stone_andesite", L"stone_andesite_smooth"}; StoneTile::StoneTile(int id) : Tile(id, Material::stone) { + icons = nullptr; } -int StoneTile::getResource(int data, Random *random, int playerBonusLevel) +unsigned int StoneTile::getDescriptionId(int iData) { - return Tile::cobblestone_Id; + if (iData < 0 || iData >= STONE_NAMES_LENGTH) iData = 0; + + return STONE_NAMES[iData]; +} + +int StoneTile::getSpawnResourcesAuxValue(int data) +{ + return data; +} + +Icon* StoneTile::getTexture(int face, int data) +{ + if (data < 0 || data >= STONE_NAMES_LENGTH) + { + data = 0; + } + return icons[data]; +} + +void StoneTile::registerIcons(IconRegister* iconRegister) +{ + icons = new Icon * [STONE_NAMES_LENGTH]; + + for (int i = 0; i < STONE_NAMES_LENGTH; i++) + { + icons[i] = iconRegister->registerIcon(TEXTURE_NAMES[i]); + } } \ No newline at end of file diff --git a/Minecraft.World/StoneTile.h b/Minecraft.World/StoneTile.h index 7d004309..8dcf1674 100644 --- a/Minecraft.World/StoneTile.h +++ b/Minecraft.World/StoneTile.h @@ -5,7 +5,24 @@ class Random; class StoneTile : public Tile { +public: + static const int GRANITE = 1; + static const int POLISHED_GRANITE = 2; + static const int DIORITE = 3; + static const int POLISHED_DIORITE = 4; + static const int ANDESITE = 5; + static const int POLISHED_ANDESITE = 6; + + static const int STONE_NAMES_LENGTH = 7; + + static const unsigned int STONE_NAMES[STONE_NAMES_LENGTH]; + static const wstring TEXTURE_NAMES[]; +private: + Icon** icons; public: StoneTile(int id); - virtual int getResource(int data, Random *random, int playerBonusLevel); + virtual Icon* getTexture(int face, int data); + virtual unsigned int getDescriptionId(int iData = -1); + virtual int getSpawnResourcesAuxValue(int data); + void registerIcons(IconRegister* iconRegister); }; \ No newline at end of file diff --git a/Minecraft.World/Tile.cpp b/Minecraft.World/Tile.cpp index ce7c1fb4..a2000abc 100644 --- a/Minecraft.World/Tile.cpp +++ b/Minecraft.World/Tile.cpp @@ -519,7 +519,8 @@ void Tile::staticCtor() Item::items[pistonStickyBase_Id] = ( new PistonTileItem(Tile::pistonStickyBase_Id - 256) )->setDescriptionId(IDS_TILE_PISTON_STICK_BASE)->setUseDescriptionId(IDS_DESC_STICKY_PISTON); Item::items[cobbleWall_Id] = ( new MultiTextureTileItem(cobbleWall_Id - 256, cobbleWall, (int *)WallTile::COBBLE_NAMES, 2) )->setDescriptionId(IDS_TILE_COBBLESTONE_WALL)->setUseDescriptionId(IDS_DESC_COBBLESTONE_WALL); Item::items[anvil_Id] = ( new AnvilTileItem(anvil) )->setDescriptionId(IDS_TILE_ANVIL)->setUseDescriptionId(IDS_DESC_ANVIL); - + Item::items[dirt_Id] = (new MultiTextureTileItem(Tile::dirt_Id - 256, dirt, (int*)DirtTile::DIRT_NAMES, 3))->setIconName(L"dirt")->setDescriptionId(IDS_TILE_DIRT)->setUseDescriptionId(IDS_DESC_DIRT); + Item::items[stone_Id] = (new MultiTextureTileItem(Tile::stone_Id - 256, dirt, (int*)StoneTile::STONE_NAMES, 3))->setIconName(L"stone")->setDescriptionId(IDS_TILE_STONE)->setUseDescriptionId(IDS_DESC_STONE); for (int i = 0; i < 256; i++) {