From 876014b8e8941f6de69f07e3b4cc354e9bdf3e57 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Thu, 7 Jun 2012 21:07:21 +0000 Subject: Bonemeal works on crops, melons, pumpkins, saplings and grass. Plant growing has been refactored into separate functions callable from Lua, too. git-svn-id: http://mc-server.googlecode.com/svn/trunk@573 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cClientHandle.cpp | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) (limited to 'source/cClientHandle.cpp') diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp index 96ee3fcbd..4c4461201 100644 --- a/source/cClientHandle.cpp +++ b/source/cClientHandle.cpp @@ -977,6 +977,7 @@ void cClientHandle::HandleBlockPlace(cPacket_BlockPlace * a_Packet) cDoors::ChangeDoor(m_Player->GetWorld(), a_Packet->m_PosX, a_Packet->m_PosY, a_Packet->m_PosZ); break; } + default: { break; @@ -1211,12 +1212,12 @@ void cClientHandle::HandleBlockPlace(cPacket_BlockPlace * a_Packet) } case E_ITEM_SIGN: { - LOG("Sign Dir: %i", a_Packet->m_Direction); + LOGD("Sign Dir: %i", a_Packet->m_Direction); if (a_Packet->m_Direction == 1) { - LOG("Player Rotation: %f", m_Player->GetRotation()); + LOGD("Player Rotation: %f", m_Player->GetRotation()); MetaData = cSign::RotationToMetaData(m_Player->GetRotation()); - LOG("Sign rotation %i", MetaData); + LOGD("Sign rotation %i", MetaData); a_Packet->m_ItemType = E_BLOCK_SIGN_POST; } else @@ -1261,6 +1262,15 @@ void cClientHandle::HandleBlockPlace(cPacket_BlockPlace * a_Packet) a_Packet->m_ItemType = E_BLOCK_PUMPKIN_STEM; break; } + case E_ITEM_DYE: + { + // Handle bonemeal and dyes on sheep + if (HandleDyes(a_Packet)) + { + return; + } + break; + } default: { break; @@ -1557,6 +1567,26 @@ void cClientHandle::HandleKeepAlive(cPacket_KeepAlive * a_Packet) +bool cClientHandle::HandleDyes(cPacket_BlockPlace * a_Packet) +{ + cItem & Equipped = m_Player->GetInventory().GetEquippedItem(); + + // TODO: Handle coloring the sheep, too + + // Handle growing the plants: + if (Equipped.m_ItemHealth == E_META_DYE_WHITE) + { + cWorld * World = m_Player->GetWorld(); + World->GrowPlant(a_Packet->m_PosX, a_Packet->m_PosY, a_Packet->m_PosZ); + } + + return false; +} + + + + + bool cClientHandle::CheckBlockInteractionsRate(void) { ASSERT(m_Player != NULL); -- cgit v1.2.3