1
0
Fork 0

ItemHandler: changed IsDrinkable() to take a short argument

This commit is contained in:
archshift 2014-06-08 17:06:15 -07:00
parent a1a8b7c0ee
commit 3766ac96d7
5 changed files with 14 additions and 18 deletions

View File

@ -850,7 +850,7 @@ void cClientHandle::HandleLeftClick(int a_BlockX, int a_BlockY, int a_BlockZ, eB
case DIG_STATUS_SHOOT_EAT:
{
cItemHandler * ItemHandler = cItemHandler::GetItemHandler(m_Player->GetEquippedItem());
if (ItemHandler->IsFood() || ItemHandler->IsDrinkable(&m_Player->GetEquippedItem()))
if (ItemHandler->IsFood() || ItemHandler->IsDrinkable(m_Player->GetEquippedItem().m_ItemDamage))
{
m_Player->AbortEating();
return;
@ -1176,15 +1176,16 @@ void cClientHandle::HandleRightClick(int a_BlockX, int a_BlockY, int a_BlockZ, e
return;
}
short EquippedDamage = Equipped.m_ItemDamage;
cItemHandler * ItemHandler = cItemHandler::GetItemHandler(Equipped.m_ItemType);
if (ItemHandler->IsPlaceable() && (a_BlockFace != BLOCK_FACE_NONE))
{
HandlePlaceBlock(a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_CursorX, a_CursorY, a_CursorZ, *ItemHandler);
}
else if ((ItemHandler->IsFood() || ItemHandler->IsDrinkable(&Equipped)) && !m_Player->IsGameModeCreative())
else if ((ItemHandler->IsFood() || ItemHandler->IsDrinkable(EquippedDamage)) && !m_Player->IsGameModeCreative())
{
if (m_Player->IsSatiated() && !ItemHandler->IsDrinkable(&Equipped))
if (m_Player->IsSatiated() && !ItemHandler->IsDrinkable(EquippedDamage))
{
// The player is satiated, they cannot eat
return;

View File

@ -504,9 +504,9 @@ bool cItemHandler::IsFood(void)
bool cItemHandler::IsDrinkable(const cItem * a_Item)
bool cItemHandler::IsDrinkable(short a_ItemDamage)
{
UNUSED(a_Item);
UNUSED(a_ItemDamage);
switch (m_ItemType)
{

View File

@ -83,7 +83,7 @@ public:
virtual bool IsFood(void);
/** Indicates if this item is drinkable */
virtual bool IsDrinkable(const cItem * a_Item);
virtual bool IsDrinkable(short a_ItemDamage);
/** Blocks simply get placed */
virtual bool IsPlaceable(void);
@ -102,7 +102,7 @@ public:
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
);
/** Returns whether this tool/item can harvest a specific block (e.g. wooden pickaxe can harvest stone, but wood can<EFBFBD>t) DEFAULT: False */
/** Returns whether this tool/item can harvest a specific block (e.g. wooden pickaxe can harvest stone, but wood can't) DEFAULT: False */
virtual bool CanHarvestBlock(BLOCKTYPE a_BlockType);
static cItemHandler * GetItemHandler(int a_ItemType);

View File

@ -11,9 +11,9 @@ public:
{
}
virtual bool IsDrinkable(const cItem * a_Item) override
virtual bool IsDrinkable(short a_ItemDamage) override
{
UNUSED(a_Item);
UNUSED(a_ItemDamage);
return true;
}

View File

@ -104,22 +104,17 @@ class cItemPotionHandler:
return base * tier_multi * ext_multi * splash_multi;
}
bool IsDrinkable(short a_ItemDamage)
{
// Drinkable potion if 13th bit is set
// For reference: http://minecraft.gamepedia.com/Potions#Data_value_table
return a_ItemDamage & 8192;
}
public:
cItemPotionHandler():
super(E_ITEM_POTIONS)
{
}
virtual bool IsDrinkable(const cItem * a_Item) override
virtual bool IsDrinkable(short a_ItemDamage) override
{
return IsDrinkable(a_Item->m_ItemDamage);
// Drinkable potion if 13th bit is set
// For reference: http://minecraft.gamepedia.com/Potions#Data_value_table
return a_ItemDamage & 8192;
}
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override