diff --git a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp index 361c6d93..6bf20ac4 100644 --- a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp +++ b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp @@ -87,9 +87,9 @@ void IUIScene_CreativeMenu::staticCtor() ITEM(Tile::soulsand_Id) ITEM(Tile::glowstone_Id) ITEM(Tile::seaLantern_Id) - ITEM(Tile::prismarine_Id) - ITEM(Tile::prismarinedark_Id) - ITEM(Tile::prismarinebrick_Id) + ITEM_AUX(Tile::prismarine_Id, PrismarineTile::TYPE_DEFAULT) + ITEM_AUX(Tile::prismarine_Id, PrismarineTile::TYPE_BRICKS) + ITEM_AUX(Tile::prismarine_Id, PrismarineTile::TYPE_DARK) ITEM(Tile::fence_Id) ITEM_AUX(Tile::dirt_Id, DirtTile::COARSE_DIRT) diff --git a/Minecraft.Client/PreStitchedTextureMap.cpp b/Minecraft.Client/PreStitchedTextureMap.cpp index 96edaf3b..b32913ee 100644 --- a/Minecraft.Client/PreStitchedTextureMap.cpp +++ b/Minecraft.Client/PreStitchedTextureMap.cpp @@ -1044,7 +1044,7 @@ void PreStitchedTextureMap::loadUVs() ADD_ICON(23, 3, L"door_jungle_upper"); ADD_ICON(23, 4, L"door_spruce_upper"); ADD_ICON(23, 13, L"sea_lantern"); - ADD_ICON(22, 13, L"prismarine_rough"); + ADD_ICON(22, 13, L"prismarine"); ADD_ICON(21, 13, L"prismarine_dark"); ADD_ICON(20, 13, L"prismarine_bricks"); diff --git a/Minecraft.World/PrismarineTile.cpp b/Minecraft.World/PrismarineTile.cpp index 977d5196..fc923617 100644 --- a/Minecraft.World/PrismarineTile.cpp +++ b/Minecraft.World/PrismarineTile.cpp @@ -1,18 +1,60 @@ #include "stdafx.h" #include "PrismarineTile.h" -#include "net.minecraft.world.item.h" +#include "net.minecraft.world.h" +#include "Item.h" #include "IconRegister.h" -PrismarineTile::PrismarineTile(int id, Material* material) : Tile(id, material) +const wstring PrismarineTile::TEXTURE_NAMES[] = {L"", L"bricks", L"dark"}; + +const unsigned int PrismarineTile::PRISMARINE_NAMES[PRISMARINE_NAMES_LENGTH] = { + IDS_TILE_PRISMARINE, + IDS_TILE_PRISMARINE_BRICKS, + IDS_TILE_PRISMARINE_DARK +}; + +const unsigned int PrismarineTile::PRISMARINE_USE_DESCS[PRISMARINE_NAMES_LENGTH] = { + IDS_ITEM_PRISMARINE_DESC, + IDS_ITEM_PRISMARINE_BRICK_DESC, + IDS_ITEM_PRISMARINE_DARK_DESC +}; + +PrismarineTile::PrismarineTile(int id) : Tile(id, Material::stone) { + setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_stone); + icons = nullptr; } -void PrismarineTile::registerIcons(IconRegister* iconRegister) +Icon *PrismarineTile::getTexture(int face, int data) { - icon = iconRegister->registerIcon(L"prismarine_rough"); + if (data < 0 || data >= PRISMARINE_NAMES_LENGTH) data = 0; + return icons[data]; } -Icon* PrismarineTile::getTexture(int face, int data) +int PrismarineTile::getSpawnResourcesAuxValue(int data) { - return icon; + return data; +} + +unsigned int PrismarineTile::getDescriptionId(int iData ) +{ + if(iData < 0 ) iData = 0; + return PrismarineTile::PRISMARINE_NAMES[iData]; +} + +unsigned int PrismarineTile::getUseDescriptionId(int iData ) +{ + if(iData < 0 ) iData = 0; + return PrismarineTile::PRISMARINE_USE_DESCS[iData]; +} + +void PrismarineTile::registerIcons(IconRegister *iconRegister) +{ + icons = new Icon*[PRISMARINE_NAMES_LENGTH]; + + for (int i = 0; i < PRISMARINE_NAMES_LENGTH; i++) + { + wstring name = getIconName(); + if (!TEXTURE_NAMES[i].empty() ) name += L"_" + TEXTURE_NAMES[i]; + icons[i] = iconRegister->registerIcon(name); + } } \ No newline at end of file diff --git a/Minecraft.World/PrismarineTile.h b/Minecraft.World/PrismarineTile.h index 1ce6cc01..65d60155 100644 --- a/Minecraft.World/PrismarineTile.h +++ b/Minecraft.World/PrismarineTile.h @@ -1,12 +1,34 @@ #pragma once #include "Tile.h" +class ChunkRebuildData; class PrismarineTile : public Tile { + friend class ChunkRebuildData; public: - PrismarineTile(int id, Material* material); - virtual void registerIcons(IconRegister* iconRegister); - virtual Icon* getTexture(int face, int data); + static const int TYPE_DEFAULT = 0; + static const int TYPE_BRICKS = 1; + static const int TYPE_DARK = 2; + + static const wstring TEXTURE_NAMES[]; + + static const int PRISMARINE_NAMES_LENGTH = 3; + + static const unsigned int PRISMARINE_NAMES[PRISMARINE_NAMES_LENGTH]; + static const unsigned int PRISMARINE_USE_DESCS[PRISMARINE_NAMES_LENGTH]; + private: - Icon* icon; + Icon **icons; + +public: + + PrismarineTile(int id); + +public: + virtual Icon *getTexture(int face, int data); + + virtual unsigned int getDescriptionId(int iData = -1); + virtual unsigned int getUseDescriptionId(int iData = -1); + virtual int getSpawnResourcesAuxValue(int data); + void registerIcons(IconRegister *iconRegister); }; \ No newline at end of file diff --git a/Minecraft.World/Recipes.cpp b/Minecraft.World/Recipes.cpp index 541e68d1..588470d0 100644 --- a/Minecraft.World/Recipes.cpp +++ b/Minecraft.World/Recipes.cpp @@ -464,7 +464,7 @@ Recipes::Recipes() L'#', Item::prismarine_shard, L'S'); - addShapedRecipy(new ItemInstance(Tile::prismarinebrick, 1), // + addShapedRecipy(new ItemInstance(Tile::prismarine, 1,PrismarineTile::TYPE_BRICKS), // L"ssscig", L"###", // L"###", // @@ -474,7 +474,7 @@ Recipes::Recipes() L'S'); - addShapedRecipy(new ItemInstance(Tile::prismarinedark, 1), // + addShapedRecipy(new ItemInstance(Tile::prismarine, 1,PrismarineTile::TYPE_DARK), // L"ssscicig", L"###", // L"#X#", // diff --git a/Minecraft.World/SmoothStoneBrickTile.cpp b/Minecraft.World/SmoothStoneBrickTile.cpp index 54bfe373..e62b153e 100644 --- a/Minecraft.World/SmoothStoneBrickTile.cpp +++ b/Minecraft.World/SmoothStoneBrickTile.cpp @@ -28,7 +28,7 @@ int SmoothStoneBrickTile::getSpawnResourcesAuxValue(int data) return data; } -unsigned int SmoothStoneBrickTile::getDescriptionId(int iData /*= -1*/) +unsigned int SmoothStoneBrickTile::getDescriptionId(int iData ) { if(iData < 0 ) iData = 0; return SmoothStoneBrickTile::SMOOTH_STONE_BRICK_NAMES[iData]; diff --git a/Minecraft.World/Tile.cpp b/Minecraft.World/Tile.cpp index 3611cac5..d25e0693 100644 --- a/Minecraft.World/Tile.cpp +++ b/Minecraft.World/Tile.cpp @@ -16,7 +16,7 @@ #include "net.minecraft.world.h" #include "net.minecraft.h" #include "Tile.h" -#include "PrismarineTile.h" + wstring Tile::TILE_DESCRIPTION_PREFIX = L"Tile."; @@ -252,8 +252,7 @@ Tile* Tile::red_sandstone = nullptr; Tile* Tile::stairs_red_sandstone = nullptr; Tile* Tile::seaLantern = nullptr; Tile* Tile::prismarine = nullptr; -Tile* Tile::prismarinedark = nullptr; -Tile* Tile::prismarinebrick = nullptr; + Tile* Tile::tree2Trunk = nullptr; Tile* Tile::packed_ice = nullptr; @@ -511,10 +510,7 @@ void Tile::staticCtor() Tile::door_dark = (new DoorTile(197, 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::seaLantern = (new SeaLanternTile(169, Material::glass))->setBaseItemTypeAndMaterial(Item::eBaseItemType_torch, Item::eMaterial_glowstone)->setDestroyTime(0.3f)->setSoundType(Tile::SOUND_GLASS)->setLightEmission(1.0f)->setIconName(L"glowstone")->setDescriptionId(IDS_TILE_SEA_LANTERN)->setUseDescriptionId(IDS_DESC_GLOWSTONE); - Tile::prismarine = (new PrismarineTile(168, Material::stone))->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_stone)->setDestroyTime(1.5f)->setExplodeable(10)->setSoundType(Tile::SOUND_STONE)->setIconName(L"stone")->setDescriptionId(IDS_TILE_PRISMARINE)->setUseDescriptionId(IDS_ITEM_PRISMARINE_DESC); - Tile::prismarinedark = (new Tile(201, Material::stone))->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_stone)->setDestroyTime(2.0f)->setExplodeable(10)->setSoundType(Tile::SOUND_STONE)->setIconName(L"prismarine_dark")->setDescriptionId(IDS_TILE_PRISMARINE_DARK)->setUseDescriptionId(IDS_ITEM_PRISMARINE_DARK_DESC); - Tile::prismarinebrick = (new Tile(202, Material::stone))->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_stone)->setDestroyTime(2.0f)->setExplodeable(10)->setSoundType(Tile::SOUND_STONE)->setIconName(L"prismarine_bricks")->setDescriptionId(IDS_TILE_PRISMARINE_BRICKS)->setUseDescriptionId(IDS_ITEM_PRISMARINE_BRICK_DESC); - + Tile::prismarine = (new PrismarineTile(168))->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_stone)->setDestroyTime(1.5f)->setExplodeable(10)->setSoundType(SOUND_STONE)->setIconName(L"prismarine")->setDescriptionId(IDS_TILE_PRISMARINE)->setUseDescriptionId(IDS_ITEM_PRISMARINE_DESC); // Special cases for certain items since they can have different icons @@ -586,6 +582,8 @@ void Tile::staticCtor() } Tile::transculent[0] = true; + Item::items[prismarine_Id] = (new MultiTextureTileItem(Tile::prismarine_Id - 256, prismarine, (int *)PrismarineTile::PRISMARINE_NAMES, 3))->setIconName(L"prismarine")->setDescriptionId(IDS_TILE_PRISMARINE); + Stats::buildItemStats(); // */ diff --git a/Minecraft.World/Tile.h b/Minecraft.World/Tile.h index f91f71b4..752c1bfa 100644 --- a/Minecraft.World/Tile.h +++ b/Minecraft.World/Tile.h @@ -193,7 +193,7 @@ public: static const int cobblestone_Id = 4; static const int wood_Id = 5; static const int sapling_Id = 6; - static const int sapling2_Id = 199; + static const int sapling2_Id = 199;//should go inside sapling. static const int unbreakable_Id = 7; static const int water_Id = 8; static const int calmWater_Id = 9; @@ -397,8 +397,6 @@ public: static const int seaLantern_Id = 169; static const int prismarine_Id = 168; - static const int prismarinedark_Id = 201; - static const int prismarinebrick_Id = 202; static Tile *stone; static GrassTile *grass; @@ -606,8 +604,7 @@ public: static Tile* packed_ice; static Tile* seaLantern; static Tile* prismarine; - static Tile* prismarinedark; - static Tile* prismarinebrick; + static void staticCtor(); diff --git a/Minecraft.World/net.minecraft.world.level.tile.h b/Minecraft.World/net.minecraft.world.level.tile.h index e7c7707b..554ac3e5 100644 --- a/Minecraft.World/net.minecraft.world.level.tile.h +++ b/Minecraft.World/net.minecraft.world.level.tile.h @@ -136,5 +136,6 @@ #include "TreeTile2.h" #include "SeaLanternTile.h" #include "LeafTile2.h" +#include "PrismarineTile.h" #include "PackedIceTile.h" \ No newline at end of file