Inventory changes (#4561)
Co-Authored-By: peterbell10 <peterbell10@live.co.uk>
This commit is contained in:
parent
964437dc95
commit
fce548139b
@ -1630,7 +1630,7 @@ void cProtocol_1_8_0::SendWholeInventory(const cWindow & a_Window)
|
|||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowItems);
|
cPacketizer Pkt(*this, pktWindowItems);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
Pkt.WriteBEInt16(static_cast<Int16>(a_Window.GetNumSlots()));
|
Pkt.WriteBEInt16(static_cast<Int16>(a_Window.GetNumSlots()));
|
||||||
cItems Slots;
|
cItems Slots;
|
||||||
a_Window.GetSlots(*(m_Client->GetPlayer()), Slots);
|
a_Window.GetSlots(*(m_Client->GetPlayer()), Slots);
|
||||||
@ -1649,7 +1649,7 @@ void cProtocol_1_8_0::SendWindowClose(const cWindow & a_Window)
|
|||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowClose);
|
cPacketizer Pkt(*this, pktWindowClose);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1667,7 +1667,7 @@ void cProtocol_1_8_0::SendWindowOpen(const cWindow & a_Window)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowOpen);
|
cPacketizer Pkt(*this, pktWindowOpen);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
Pkt.WriteString(a_Window.GetWindowTypeName());
|
Pkt.WriteString(a_Window.GetWindowTypeName());
|
||||||
Pkt.WriteString(Printf("{\"text\":\"%s\"}", a_Window.GetWindowTitle().c_str()));
|
Pkt.WriteString(Printf("{\"text\":\"%s\"}", a_Window.GetWindowTitle().c_str()));
|
||||||
|
|
||||||
@ -1677,12 +1677,12 @@ void cProtocol_1_8_0::SendWindowOpen(const cWindow & a_Window)
|
|||||||
case cWindow::wtEnchantment:
|
case cWindow::wtEnchantment:
|
||||||
case cWindow::wtAnvil:
|
case cWindow::wtAnvil:
|
||||||
{
|
{
|
||||||
Pkt.WriteBEInt8(0);
|
Pkt.WriteBEUInt8(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
Pkt.WriteBEInt8(static_cast<Int8>(a_Window.GetNumNonInventorySlots()));
|
Pkt.WriteBEUInt8(static_cast<UInt8>(a_Window.GetNumNonInventorySlots()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1703,7 +1703,7 @@ void cProtocol_1_8_0::SendWindowProperty(const cWindow & a_Window, short a_Prope
|
|||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowProperty);
|
cPacketizer Pkt(*this, pktWindowProperty);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
Pkt.WriteBEInt16(a_Property);
|
Pkt.WriteBEInt16(a_Property);
|
||||||
Pkt.WriteBEInt16(a_Value);
|
Pkt.WriteBEInt16(a_Value);
|
||||||
}
|
}
|
||||||
|
@ -1686,7 +1686,7 @@ void cProtocol_1_9_0::SendWholeInventory(const cWindow & a_Window)
|
|||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowItems);
|
cPacketizer Pkt(*this, pktWindowItems);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
Pkt.WriteBEInt16(static_cast<Int16>(a_Window.GetNumSlots()));
|
Pkt.WriteBEInt16(static_cast<Int16>(a_Window.GetNumSlots()));
|
||||||
cItems Slots;
|
cItems Slots;
|
||||||
a_Window.GetSlots(*(m_Client->GetPlayer()), Slots);
|
a_Window.GetSlots(*(m_Client->GetPlayer()), Slots);
|
||||||
@ -1705,7 +1705,7 @@ void cProtocol_1_9_0::SendWindowClose(const cWindow & a_Window)
|
|||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowClose);
|
cPacketizer Pkt(*this, pktWindowClose);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1723,7 +1723,7 @@ void cProtocol_1_9_0::SendWindowOpen(const cWindow & a_Window)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowOpen);
|
cPacketizer Pkt(*this, pktWindowOpen);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
Pkt.WriteString(a_Window.GetWindowTypeName());
|
Pkt.WriteString(a_Window.GetWindowTypeName());
|
||||||
Pkt.WriteString(Printf("{\"text\":\"%s\"}", a_Window.GetWindowTitle().c_str()));
|
Pkt.WriteString(Printf("{\"text\":\"%s\"}", a_Window.GetWindowTitle().c_str()));
|
||||||
|
|
||||||
@ -1733,12 +1733,12 @@ void cProtocol_1_9_0::SendWindowOpen(const cWindow & a_Window)
|
|||||||
case cWindow::wtEnchantment:
|
case cWindow::wtEnchantment:
|
||||||
case cWindow::wtAnvil:
|
case cWindow::wtAnvil:
|
||||||
{
|
{
|
||||||
Pkt.WriteBEInt8(0);
|
Pkt.WriteBEUInt8(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
Pkt.WriteBEInt8(static_cast<Int8>(a_Window.GetNumNonInventorySlots()));
|
Pkt.WriteBEUInt8(static_cast<UInt8>(a_Window.GetNumNonInventorySlots()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1759,7 +1759,7 @@ void cProtocol_1_9_0::SendWindowProperty(const cWindow & a_Window, short a_Prope
|
|||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktWindowProperty);
|
cPacketizer Pkt(*this, pktWindowProperty);
|
||||||
Pkt.WriteBEInt8(a_Window.GetWindowID());
|
Pkt.WriteBEUInt8(a_Window.GetWindowID());
|
||||||
Pkt.WriteBEInt16(a_Property);
|
Pkt.WriteBEInt16(a_Property);
|
||||||
Pkt.WriteBEInt16(a_Value);
|
Pkt.WriteBEInt16(a_Value);
|
||||||
}
|
}
|
||||||
|
@ -28,15 +28,13 @@ Byte cWindow::m_WindowIDCounter = 0;
|
|||||||
|
|
||||||
|
|
||||||
cWindow::cWindow(WindowType a_WindowType, const AString & a_WindowTitle) :
|
cWindow::cWindow(WindowType a_WindowType, const AString & a_WindowTitle) :
|
||||||
m_WindowID(static_cast<char>((++m_WindowIDCounter) % 127)),
|
m_WindowID(((++m_WindowIDCounter) % 127) + 1),
|
||||||
m_WindowType(a_WindowType),
|
m_WindowType(a_WindowType),
|
||||||
m_WindowTitle(a_WindowTitle),
|
m_WindowTitle(a_WindowTitle),
|
||||||
m_IsDestroyed(false),
|
m_IsDestroyed(false),
|
||||||
m_Owner(nullptr)
|
m_Owner(nullptr)
|
||||||
{
|
{
|
||||||
// The window ID is signed in protocol 1.7, unsigned in protocol 1.8. Keep out of trouble by using only 7 bits:
|
ASSERT((m_WindowID > 0) && (m_WindowID <= 127));
|
||||||
// Ref.: https://forum.cuberite.org/thread-1876.html
|
|
||||||
ASSERT((m_WindowID >= 0) && (m_WindowID < 127));
|
|
||||||
|
|
||||||
if (a_WindowType == wtInventory)
|
if (a_WindowType == wtInventory)
|
||||||
{
|
{
|
||||||
@ -768,4 +766,3 @@ void cWindow::SetProperty(short a_Property, short a_Value, cPlayer & a_Player)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user