summaryrefslogtreecommitdiffstats
path: root/source/cCreativeInventory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/cCreativeInventory.cpp')
-rw-r--r--source/cCreativeInventory.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/source/cCreativeInventory.cpp b/source/cCreativeInventory.cpp
index 7083adeb7..77b9107b7 100644
--- a/source/cCreativeInventory.cpp
+++ b/source/cCreativeInventory.cpp
@@ -28,8 +28,20 @@ void cCreativeInventory::Clicked( cPacket* a_ClickPacket )
{
cPacket_CreativeInventoryAction* Packet = reinterpret_cast<cPacket_CreativeInventoryAction *>(a_ClickPacket);
short Slot = Packet->m_Slot;
+ if (Slot == -1)
+ {
+ // object thrown out
+ m_Owner->TossItem(false, Packet->m_Quantity, Packet->m_ItemID, Packet->m_Damage);
+ return;
+ }
+
+ if ((Slot < c_HotOffset) || (Slot >= c_NumSlots))
+ {
+ LOG("%s: Invalid slot (%d) in CreativeInventoryAction packet. Ignoring...", m_Owner->GetName().c_str(), Slot);
+ return;
+ }
- cItem* SlotItem = &(this->m_Slots[Slot]);
+ cItem * SlotItem = &(this->m_Slots[Slot]);
SlotItem->m_ItemID = (ENUM_ITEM_ID) Packet->m_ItemID;
SlotItem->m_ItemHealth = Packet->m_Damage;