From 0d323563e4cc507e58ce1bb3ba632cf2310602c9 Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Sun, 18 Aug 2013 13:26:37 +0200 Subject: Added cWindow property manipulation API. Now enchantment table and furnace properties can be set by a plugin --- source/Protocol/Protocol.h | 2 +- source/Protocol/Protocol125.cpp | 30 +++++++++++++++--------------- source/Protocol/Protocol125.h | 2 +- source/Protocol/ProtocolRecognizer.cpp | 4 ++-- source/Protocol/ProtocolRecognizer.h | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) (limited to 'source/Protocol') diff --git a/source/Protocol/Protocol.h b/source/Protocol/Protocol.h index 5c46b2726..0953071b1 100644 --- a/source/Protocol/Protocol.h +++ b/source/Protocol/Protocol.h @@ -73,7 +73,6 @@ public: virtual void SendExplosion (double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray & a_BlocksAffected, const Vector3d & a_PlayerMotion) = 0; virtual void SendGameMode (eGameMode a_GameMode) = 0; virtual void SendHealth (void) = 0; - virtual void SendInventoryProgress (char a_WindowID, short a_Progressbar, short a_Value) = 0; virtual void SendInventorySlot (char a_WindowID, short a_SlotNum, const cItem & a_Item) = 0; virtual void SendKeepAlive (int a_PingID) = 0; virtual void SendLogin (const cPlayer & a_Player, const cWorld & a_World) = 0; @@ -103,6 +102,7 @@ public: virtual void SendWholeInventory (const cWindow & a_Window) = 0; virtual void SendWindowClose (const cWindow & a_Window) = 0; virtual void SendWindowOpen (char a_WindowID, char a_WindowType, const AString & a_WindowTitle, char a_NumSlots) = 0; + virtual void SendWindowProperty (const cWindow & a_Window, short a_Property, short a_Value) = 0; /// Returns the ServerID used for authentication through session.minecraft.net virtual AString GetAuthServerID(void) = 0; diff --git a/source/Protocol/Protocol125.cpp b/source/Protocol/Protocol125.cpp index e481bb9a7..6f79ed12c 100644 --- a/source/Protocol/Protocol125.cpp +++ b/source/Protocol/Protocol125.cpp @@ -82,7 +82,7 @@ enum PACKET_WINDOW_CLICK = 0x66, PACKET_INVENTORY_SLOT = 0x67, PACKET_INVENTORY_WHOLE = 0x68, - PACKET_INVENTORY_PROGRESS = 0x69, + PACKET_WINDOW_PROPERTY = 0x69, PACKET_CREATIVE_INVENTORY_ACTION = 0x6B, PACKET_UPDATE_SIGN = 0x82, PACKET_PLAYER_LIST_ITEM = 0xC9, @@ -491,20 +491,6 @@ void cProtocol125::SendHealth(void) -void cProtocol125::SendInventoryProgress(char a_WindowID, short a_ProgressBar, short a_Value) -{ - cCSLock Lock(m_CSPacket); - WriteByte (PACKET_INVENTORY_PROGRESS); - WriteByte (a_WindowID); - WriteShort(a_ProgressBar); - WriteShort(a_Value); - Flush(); -} - - - - - void cProtocol125::SendInventorySlot(char a_WindowID, short a_SlotNum, const cItem & a_Item) { cCSLock Lock(m_CSPacket); @@ -975,6 +961,20 @@ void cProtocol125::SendWindowOpen(char a_WindowID, char a_WindowType, const AStr +void cProtocol125::SendWindowProperty(const cWindow & a_Window, short a_Property, short a_Value) +{ + cCSLock Lock(m_CSPacket); + WriteByte (PACKET_WINDOW_PROPERTY); + WriteByte (a_Window.GetWindowID()); + WriteShort(a_Property); + WriteShort(a_Value); + Flush(); +} + + + + + AString cProtocol125::GetAuthServerID(void) { // http://wiki.vg/wiki/index.php?title=Session&oldid=2262 diff --git a/source/Protocol/Protocol125.h b/source/Protocol/Protocol125.h index ee8fd94eb..ec6e12a0d 100644 --- a/source/Protocol/Protocol125.h +++ b/source/Protocol/Protocol125.h @@ -50,7 +50,6 @@ public: virtual void SendExplosion (double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray & a_BlocksAffected, const Vector3d & a_PlayerMotion) override; virtual void SendGameMode (eGameMode a_GameMode) override; virtual void SendHealth (void) override; - virtual void SendInventoryProgress (char a_WindowID, short a_Progressbar, short a_Value) override; virtual void SendInventorySlot (char a_WindowID, short a_SlotNum, const cItem & a_Item) override; virtual void SendKeepAlive (int a_PingID) override; virtual void SendLogin (const cPlayer & a_Player, const cWorld & a_World) override; @@ -80,6 +79,7 @@ public: virtual void SendWholeInventory (const cWindow & a_Window) override; virtual void SendWindowClose (const cWindow & a_Window) override; virtual void SendWindowOpen (char a_WindowID, char a_WindowType, const AString & a_WindowTitle, char a_NumSlots) override; + virtual void SendWindowProperty (const cWindow & a_Window, short a_Property, short a_Value) override; virtual AString GetAuthServerID(void) override; diff --git a/source/Protocol/ProtocolRecognizer.cpp b/source/Protocol/ProtocolRecognizer.cpp index 35c8fe993..ef2ed91f6 100644 --- a/source/Protocol/ProtocolRecognizer.cpp +++ b/source/Protocol/ProtocolRecognizer.cpp @@ -332,10 +332,10 @@ void cProtocolRecognizer::SendHealth(void) -void cProtocolRecognizer::SendInventoryProgress(char a_WindowID, short a_Progressbar, short a_Value) +void cProtocolRecognizer::SendWindowProperty(const cWindow & a_Window, short a_Property, short a_Value) { ASSERT(m_Protocol != NULL); - m_Protocol->SendInventoryProgress(a_WindowID, a_Progressbar, a_Value); + m_Protocol->SendWindowProperty(a_Window, a_Property, a_Value); } diff --git a/source/Protocol/ProtocolRecognizer.h b/source/Protocol/ProtocolRecognizer.h index 43d4a15e2..94bbb184f 100644 --- a/source/Protocol/ProtocolRecognizer.h +++ b/source/Protocol/ProtocolRecognizer.h @@ -80,7 +80,6 @@ public: virtual void SendExplosion (double a_BlockX, double a_BlockY, double a_BlockZ, float a_Radius, const cVector3iArray & a_BlocksAffected, const Vector3d & a_PlayerMotion) override; virtual void SendGameMode (eGameMode a_GameMode) override; virtual void SendHealth (void) override; - virtual void SendInventoryProgress (char a_WindowID, short a_Progressbar, short a_Value) override; virtual void SendInventorySlot (char a_WindowID, short a_SlotNum, const cItem & a_Item) override; virtual void SendKeepAlive (int a_PingID) override; virtual void SendLogin (const cPlayer & a_Player, const cWorld & a_World) override; @@ -110,6 +109,7 @@ public: virtual void SendWholeInventory (const cWindow & a_Window) override; virtual void SendWindowClose (const cWindow & a_Window) override; virtual void SendWindowOpen (char a_WindowID, char a_WindowType, const AString & a_WindowTitle, char a_NumSlots) override; + virtual void SendWindowProperty (const cWindow & a_Window, short a_Property, short a_Value) override; virtual AString GetAuthServerID(void) override; -- cgit v1.2.3