1
0

Merge pull request #814 from Howaner/Cake

Add cake
This commit is contained in:
Mattes D 2014-03-16 21:33:51 +01:00
commit 62629825ce
4 changed files with 101 additions and 0 deletions

55
src/Blocks/BlockCake.h Normal file
View File

@ -0,0 +1,55 @@
#pragma once
#include "BlockHandler.h"
class cBlockCakeHandler :
public cBlockHandler
{
public:
cBlockCakeHandler(BLOCKTYPE a_BlockType)
: cBlockHandler(a_BlockType)
{
}
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
{
NIBBLETYPE Meta = a_ChunkInterface.GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
if (!a_Player->Feed(2, 0.1))
{
return;
}
if (Meta >= 5)
{
a_ChunkInterface.FastSetBlock(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_AIR, 0);
}
else
{
a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, Meta + 1);
}
}
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
{
// Give nothing
}
virtual bool IsUseable(void) override
{
return true;
}
virtual const char * GetStepSound(void) override
{
return "step.cloth";
}
} ;

View File

@ -10,6 +10,7 @@
#include "BlockBrewingStand.h" #include "BlockBrewingStand.h"
#include "BlockButton.h" #include "BlockButton.h"
#include "BlockCactus.h" #include "BlockCactus.h"
#include "BlockCake.h"
#include "BlockCarpet.h" #include "BlockCarpet.h"
#include "BlockCauldron.h" #include "BlockCauldron.h"
#include "BlockChest.h" #include "BlockChest.h"
@ -91,6 +92,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
case E_BLOCK_BRICK_STAIRS: return new cBlockStairsHandler (a_BlockType); case E_BLOCK_BRICK_STAIRS: return new cBlockStairsHandler (a_BlockType);
case E_BLOCK_BROWN_MUSHROOM: return new cBlockMushroomHandler (a_BlockType); case E_BLOCK_BROWN_MUSHROOM: return new cBlockMushroomHandler (a_BlockType);
case E_BLOCK_CACTUS: return new cBlockCactusHandler (a_BlockType); case E_BLOCK_CACTUS: return new cBlockCactusHandler (a_BlockType);
case E_BLOCK_CAKE: return new cBlockCakeHandler (a_BlockType);
case E_BLOCK_CARROTS: return new cBlockCropsHandler (a_BlockType); case E_BLOCK_CARROTS: return new cBlockCropsHandler (a_BlockType);
case E_BLOCK_CARPET: return new cBlockCarpetHandler (a_BlockType); case E_BLOCK_CARPET: return new cBlockCarpetHandler (a_BlockType);
case E_BLOCK_CAULDRON: return new cBlockCauldronHandler (a_BlockType); case E_BLOCK_CAULDRON: return new cBlockCauldronHandler (a_BlockType);

41
src/Items/ItemCake.h Normal file
View File

@ -0,0 +1,41 @@
#pragma once
#include "ItemHandler.h"
class cItemCakeHandler :
public cItemHandler
{
public:
cItemCakeHandler(int a_ItemType) :
cItemHandler(a_ItemType)
{
}
virtual bool IsPlaceable(void) override
{
return true;
}
virtual bool GetPlacementBlockTypeMeta(
cWorld * a_World, cPlayer * a_Player,
int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace,
int a_CursorX, int a_CursorY, int a_CursorZ,
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
) override
{
a_BlockType = E_BLOCK_CAKE;
a_BlockMeta = 0;
return true;
}
} ;

View File

@ -13,6 +13,7 @@
#include "ItemBow.h" #include "ItemBow.h"
#include "ItemBrewingStand.h" #include "ItemBrewingStand.h"
#include "ItemBucket.h" #include "ItemBucket.h"
#include "ItemCake.h"
#include "ItemCauldron.h" #include "ItemCauldron.h"
#include "ItemCloth.h" #include "ItemCloth.h"
#include "ItemComparator.h" #include "ItemComparator.h"
@ -101,6 +102,7 @@ cItemHandler *cItemHandler::CreateItemHandler(int a_ItemType)
case E_ITEM_BOTTLE_O_ENCHANTING: return new cItemBottleOEnchantingHandler(); case E_ITEM_BOTTLE_O_ENCHANTING: return new cItemBottleOEnchantingHandler();
case E_ITEM_BOW: return new cItemBowHandler; case E_ITEM_BOW: return new cItemBowHandler;
case E_ITEM_BREWING_STAND: return new cItemBrewingStandHandler(a_ItemType); case E_ITEM_BREWING_STAND: return new cItemBrewingStandHandler(a_ItemType);
case E_ITEM_CAKE: return new cItemCakeHandler(a_ItemType);
case E_ITEM_CAULDRON: return new cItemCauldronHandler(a_ItemType); case E_ITEM_CAULDRON: return new cItemCauldronHandler(a_ItemType);
case E_ITEM_COMPARATOR: return new cItemComparatorHandler(a_ItemType); case E_ITEM_COMPARATOR: return new cItemComparatorHandler(a_ItemType);
case E_ITEM_DYE: return new cItemDyeHandler(a_ItemType); case E_ITEM_DYE: return new cItemDyeHandler(a_ItemType);
@ -337,6 +339,7 @@ char cItemHandler::GetMaxStackSize(void)
case E_ITEM_BREWING_STAND: return 64; case E_ITEM_BREWING_STAND: return 64;
case E_ITEM_BUCKET: return 16; case E_ITEM_BUCKET: return 16;
case E_ITEM_CARROT: return 64; case E_ITEM_CARROT: return 64;
case E_ITEM_CAKE: return 1;
case E_ITEM_CAULDRON: return 64; case E_ITEM_CAULDRON: return 64;
case E_ITEM_CLAY: return 64; case E_ITEM_CLAY: return 64;
case E_ITEM_CLAY_BRICK: return 64; case E_ITEM_CLAY_BRICK: return 64;