1
0
Fork 0

Inventory changes (#4561)

Co-Authored-By: peterbell10 <peterbell10@live.co.uk>
This commit is contained in:
Mat 2020-03-28 15:52:40 +02:00 committed by GitHub
parent 964437dc95
commit fce548139b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 17 deletions

View File

@ -1630,7 +1630,7 @@ void cProtocol_1_8_0::SendWholeInventory(const cWindow & a_Window)
ASSERT(m_State == 3); // In game mode?
cPacketizer Pkt(*this, pktWindowItems);
Pkt.WriteBEInt8(a_Window.GetWindowID());
Pkt.WriteBEUInt8(a_Window.GetWindowID());
Pkt.WriteBEInt16(static_cast<Int16>(a_Window.GetNumSlots()));
cItems 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?
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);
Pkt.WriteBEInt8(a_Window.GetWindowID());
Pkt.WriteBEUInt8(a_Window.GetWindowID());
Pkt.WriteString(a_Window.GetWindowTypeName());
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::wtAnvil:
{
Pkt.WriteBEInt8(0);
Pkt.WriteBEUInt8(0);
break;
}
default:
{
Pkt.WriteBEInt8(static_cast<Int8>(a_Window.GetNumNonInventorySlots()));
Pkt.WriteBEUInt8(static_cast<UInt8>(a_Window.GetNumNonInventorySlots()));
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?
cPacketizer Pkt(*this, pktWindowProperty);
Pkt.WriteBEInt8(a_Window.GetWindowID());
Pkt.WriteBEUInt8(a_Window.GetWindowID());
Pkt.WriteBEInt16(a_Property);
Pkt.WriteBEInt16(a_Value);
}

View File

@ -1686,7 +1686,7 @@ void cProtocol_1_9_0::SendWholeInventory(const cWindow & a_Window)
ASSERT(m_State == 3); // In game mode?
cPacketizer Pkt(*this, pktWindowItems);
Pkt.WriteBEInt8(a_Window.GetWindowID());
Pkt.WriteBEUInt8(a_Window.GetWindowID());
Pkt.WriteBEInt16(static_cast<Int16>(a_Window.GetNumSlots()));
cItems 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?
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);
Pkt.WriteBEInt8(a_Window.GetWindowID());
Pkt.WriteBEUInt8(a_Window.GetWindowID());
Pkt.WriteString(a_Window.GetWindowTypeName());
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::wtAnvil:
{
Pkt.WriteBEInt8(0);
Pkt.WriteBEUInt8(0);
break;
}
default:
{
Pkt.WriteBEInt8(static_cast<Int8>(a_Window.GetNumNonInventorySlots()));
Pkt.WriteBEUInt8(static_cast<UInt8>(a_Window.GetNumNonInventorySlots()));
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?
cPacketizer Pkt(*this, pktWindowProperty);
Pkt.WriteBEInt8(a_Window.GetWindowID());
Pkt.WriteBEUInt8(a_Window.GetWindowID());
Pkt.WriteBEInt16(a_Property);
Pkt.WriteBEInt16(a_Value);
}

View File

@ -28,15 +28,13 @@ Byte cWindow::m_WindowIDCounter = 0;
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_WindowTitle(a_WindowTitle),
m_IsDestroyed(false),
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:
// Ref.: https://forum.cuberite.org/thread-1876.html
ASSERT((m_WindowID >= 0) && (m_WindowID < 127));
ASSERT((m_WindowID > 0) && (m_WindowID <= 127));
if (a_WindowType == wtInventory)
{
@ -768,4 +766,3 @@ void cWindow::SetProperty(short a_Property, short a_Value, cPlayer & a_Player)